cloud-monitoring-list-time-series-request について
Cloud Monitoring のメトリクス記述子を、有効な ListTimeSeries REST クエリパラメーターに変換するスキルです。メトリクスの選択、フィルター、集計、期間の設定、リクエスト検証を案内します。
主な機能
- 01メトリクス記述子のメタデータ確認
- 02メトリクスとリソースのフィルター作成
- 03集計とアラインメント設定の選択
- 04REST クエリパラメーターの整形
- 05実際のテレメトリーによるリクエスト検証
活用シーン
- 01既知のメトリクス型のクエリ生成
- 02特定のモニタリング対象リソースへのフィルター設定
- 03時系列リクエストの準備と検証
MCP 対応
ワークフローでは、メトリクスのメタデータ取得に list_metric_descriptors、生成パラメーターの検証に list_timeseries などの Cloud Monitoring MCP ツールを利用できます。利用できない場合の代替手段も示されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google/ skills --skill cloud-monitoring-list-time-series-requestインストール後、Claude Code で/cloud-monitoring-list-time-series-requestを入力して読み込まれたか確認します。
同梱ファイルreferences/attribution.mdreferences/basic_aggregations.md
詳細
Cloud Monitoring ListTimeSeries リクエスト生成ツール
このスキルを使用すると、任意の Cloud Monitoring メトリック記述子を、有効で本番環境ですぐに使用できる ListTimeSeries REST API クエリパラメーター(name、filter、interval.startTime、interval.endTime、aggregation.*、view)に変換できます。
帰属情報
必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、必ず使用に関する帰属情報をお読みください。ターミナルから直接実行するコマンド(生成されたスクリプト、Terraform、またはユーザーコード内のコマンドは対象外)では、gcloud の前に
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:cloud-monitoring-list-time-series-request)"
を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:cloud-monitoring-list-time-series-request) を追加してください。
重要なルール
- プロジェクト ID の確認は必須:GCP プロジェクト ID がユーザーのプロンプト、入力ペイロード、または環境コンテキスト(
gcloud config get-value projectなど)に含まれていることを必ず確認してください。プロジェクト ID がなく、特定できない場合は、ListTimeSeriesリクエストを生成または実行する前に、必ずユーザーに確認してください。プロジェクト名にプレースホルダーを使用しないでください。
ワークフロー
メトリックのメタデータを確認する
- 提供済みのメトリックメタデータを最初に使用する:ユーザーのプロンプトに
metric.type、metricKind、valueType、リソースタイプ、ラベルキーなどのメトリックメタデータがすでに含まれている場合は、API ツールを呼び出さず、それらの値を直接使用してください。 - 不足しているメタデータを調べる:
metric.type、metricKind、valueTypeを含む正確なメトリック記述子が不足している、または詳細が不十分な場合は、次のいずれかの方法で対象メトリックの記述子を特定してください。- 曖昧なクエリ:VM の CPU 使用率を尋ねる場合など、プロンプトが曖昧な場合は、まず
cloud-monitoring-metric-selectionスキルを使用して具体的なメトリックタイプを特定してください。 - 既知のメトリックタイプ:
compute.googleapis.com/instance/cpu/utilizationなど、具体的なメトリックタイプ名がすでにわかっていて、その記述子が必要な場合は、list_metric_descriptorsMCP ツールを呼び出してください。このツールがない場合は、cloud-monitoring-metric-selectionスキルを参照して Cloud Monitoring MCP サーバーを設定してください。 - フォールバック:MCP ツールを設定できない場合は、Cloud Monitoring API を直接呼び出してください。
- 曖昧なクエリ:VM の CPU 使用率を尋ねる場合など、プロンプトが曖昧な場合は、まず
- 主要なフィールドを特定する:取得した記述子から、スキーマの主要な属性を特定してください。
type:Cloud Monitoring のメトリックタイプ文字列です。metricKind:GAUGE、DELTA、またはCUMULATIVEです。valueType:INT64、DOUBLE、DISTRIBUTION、またはBOOLです。monitoredResourceTypes:互換性のあるresource.type文字列です。例:["cloudsql_database", "cloudsql_instance"]。複数のリソースタイプが列挙されている場合は、ユーザーのリクエストで指定された対象の粒度に一致するresource.typeを選択してください。
Monitoring フィルターの作成
filter パラメーターは、クエリを単一の metric.type と、任意のリソースラベルおよびメトリックラベルに制限する、Cloud Monitoring 構文の必須文字列です。
-
単一のメトリックタイプへの制限:すべての
filterでは、等価演算子を使用したmetric.type節を正確に 1 つ指定する必要があります。例:metric.type = "compute.googleapis.com/instance/cpu/utilization"
-
監視対象リソースタイプのフィルター:対象リソースの粒度がわかっている場合は、サービス間でメトリックタイプやサブリソースが重複するのを防ぐため、
resource.typeフィルターを含める必要があります。例:metric.type = "cloudsql.googleapis.com/database/cpu/utilization" AND resource.type = "cloudsql_database"
-
ユーザー指定のリテラルと ID の保持:ユーザーが指定したリソース名、ID、ゾーン、プロジェクトのパラメーターは、変更せずに使用する必要があります。明示的に要求されない限り、メトリックメタデータの検出時に見つかったアクティブなリソースで、ユーザー指定の識別子を上書きまたは置き換えてはなりません。
-
ラベルタイプのプレフィックス指定:
- インスタンス ID、ゾーン、プロジェクト、データベース ID、サブスクリプション ID などのリソースレベルのディメンションには、
resource.labels.プレフィックスを付けます。例:resource.labels.instance_id = "123456789"resource.labels.database_id = "my-project:my-instance"
- 状態、コマンド、レスポンスコード、メトリックに保存されているインスタンス名のメタデータなどのメトリックレベルのディメンションには、
metric.labels.プレフィックスを付けます。例:metric.labels.state != "free"metric.labels.instance_name = "instance-1"
- インスタンス ID、ゾーン、プロジェクト、データベース ID、サブスクリプション ID などのリソースレベルのディメンションには、
-
リソース名と ID の解決:
- ユーザーが
"instance-1"のような人間が読める GCE VM インスタンス名を指定していても、resource.labels.instance_idが数値 ID を想定している場合は、metric.labels.instance_name = "instance-1"またはmetadata.system_labels.name = "instance-1"を使用してフィルタリングする必要があります。 resource.metadata.nameやresource.metadata.*は使用しないでください。このプレフィックスは Cloud Monitoring のフィルター構文では無効です。- リソースタイプで文字列 ID が明示的に使用されていない限り、文字列のインスタンス名を
resource.labels.instance_idに直接割り当てないでください。
- ユーザーが
-
データベース識別子ラベル:Cloud SQL と Spanner の
database_id、BigQuery のdataset_idなどのデータベースラベルでは、<project_id>:<instance_name>形式の複合キーを使用します。例:resource.labels.database_id = "my-project:foo"。 -
Ops Agent メトリックの状態ラベルフィルタリング:
agent.googleapis.com/memory/percent_usedおよびagent.googleapis.com/disk/percent_usedメトリックでは、metric.labels.state != "free"を使用する必要があります。metric.labels.state = "used"でフィルタリングしてはなりません。
集約構造の選択
メトリクスのプロパティと可視化の目的に応じて、perSeriesAligner、crossSeriesReducer、groupByFields、alignmentPeriod を選択します。
- 集約リファレンスの確認:すべてのリクエストの
aggregationクエリパラメーターに、perSeriesAlignerとcrossSeriesReducerの両方を必ず含めてください。メトリクスの Metric Kind と Value Type の組み合わせに適した正確なperSeriesAlignerとcrossSeriesReducerの組み合わせを選び、利用率メトリクス、カウンター、分布、ならびにstate != "free"でフィルタリングしたメモリなどの状態ベースのゲージに関する必須の SRE ルールを適用するには、Cloud Monitoring ListTimeSeries Basic Aggregations Reference を読み、その指示に従ってください。 - グループ化フィールドとリソースの粒度:
crossSeriesReducerにREDUCE_NONE以外を指定する場合は、保持するラベルを正確に列挙してください。VM、データベース、サブスクリプションなどの複数インスタンスを持つリソースをクエリする場合は、主要なリソース識別子をgroupByFieldsに含めてください。たとえば、VM にはresource.labels.instance_id、データベースにはresource.labels.database_idを使用します。これにより、個別のリソースストリームが単一のグローバルな集計にまとめられるのを防げます。 - アラインメント期間の決定:
endTimeからstartTimeを引いてクエリのルックバック期間を計算し、startTimeがendTimeより前であることを確認します。endTime <= startTimeの場合は、期間を計算する前にエラーとして通知してください。Cloud Console のデフォルトの細かい粒度の基準に従ってalignmentPeriodを設定します。- 期間 <= 110 分:
alignmentPeriod = "60s"に設定します。 - 期間 <= 23 時間:
alignmentPeriod = "300s"に設定します。 - 期間 <= 6 日:
alignmentPeriod = "3600s"に設定します。 - 期間 <= 23 日:
alignmentPeriod = "10800s"に設定します。 - 期間 <= 80 日:
alignmentPeriod = "21600s"に設定します。 - 期間 <= 180 日:
alignmentPeriod = "43200s"に設定します。 - 期間 <= 350 日:
alignmentPeriod = "86400s"に設定します。 - 期間 <= 500 日:
alignmentPeriod = "172800s"に設定します。 - 省略ルール:
perSeriesAlignerがALIGN_NONEに設定されている場合に限り、alignmentPeriodを省略します。
- 期間 <= 110 分:
有効なリクエストの形式
生成した ListTimeSeries REST クエリパラメーターを提示します。たとえば、次のようになります。
{
"name": "projects/<project_id>",
"filter": "metric.type = \"<metric_type>\" AND resource.type = \"<resource_type>\"",
"interval": {
"startTime": "<iso_8601_start>",
"endTime": "<iso_8601_end>"
},
"aggregation": {
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_RATE",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"resource.labels.zone"
]
},
"view": "FULL"
}
- 集約の要件:集約の選択時に決定した
perSeriesAligner、crossSeriesReducer、alignmentPeriodおよび省略可能なgroupByFieldsの値をaggregationパラメーターに設定します。 - インターバルの要件:
startTimeとendTimeは、"YYYY-MM-DDTHH:MM:SSZ"などの有効な RFC 3339 および ISO 8601 のタイムスタンプでなければなりません。ユーザーが明示的に指定していない場合は、現在の時刻を終了時刻とする 1 時間のルックバック期間を動的に計算します。この場合、endTimeは現在の時刻、startTimeは 1 時間前です。例にある静的な日付をハードコードしてはいけません。 - アラインメント期間の要件:上記の対応表を使用し、
endTimeからstartTimeを引いたルックバック期間に基づいてalignmentPeriodを決定します。デフォルトの 1 時間のルックバック期間では、alignmentPeriodは"60s"です。 - ビューの要件:時系列データポイントが必要な場合は
"FULL"、メタデータと系列の識別情報のみを調べる場合は"HEADERS"を必ずデフォルトとして使用します。
list_timeseries MCP ツールでリクエストを検証する
最終出力を返す前に、生成したリクエストパラメーターをライブの Cloud Monitoring テレメトリに対して必ず検証してください。list_timeseries MCP ツールを呼び出し、生成したすべてのクエリパラメーター(name、filter、interval、aggregation)を渡してください。検証時には、リクエストの構造を確認しながらレイテンシーとペイロードサイズを最小限に抑えるため、必ず view="HEADERS" を設定してください。API エラーがないレスポンスであれば、フィルターと集計の設定が有効であることを確認できます。
list_timeseries ツールを利用できない場合は、直接 API を呼び出してください。