Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

GraphQL で Containers のメトリクスをクエリする

最終更新 Markdown で表示Agent セットアップ

この例では、GraphQL Analytics API を使って Containers のメトリクスをクエリします。エンドポイントは 2 つあります。

  • containersMetricsAdaptiveGroups は、コンテナ内で動くコードのメトリクスを返します。コンテナ内のすべてのプロセスが含まれます。自身のワークロードの CPU、メモリ、ディスク、ネットワーク、稼働時間を調べるときに使います。
  • containersUsageAdaptiveGroups は、コンテナが消費したリソースに加え、実行に必要なマイクロ VM サンドボックス分も含めて返します。Cloudflare ダッシュボードの利用量見積もりに使われる値で、課金コストを見積もるときはこちらを使います。

どちらのエンドポイントも同じ基盤データセットを共有しますが、切り出す範囲が異なります。

<CLOUDFLARE_ACCOUNT_TAG><API_TOKEN>1 を、ご自身のアカウント ID と API トークンに置き換えます。クエリしたい期間に合わせて、datetimeStartdatetimeEnd も調整します。

コンテナのワークロードメトリクスをクエリする

コンテナとそのサブプロセスの動きを把握するには、containersMetricsAdaptiveGroups を使います。返る数値は自身のコードのリソース使用量で、プラットフォームのオーバーヘッドは含まれません。

ディメンション

次のいずれかのディメンションで結果をグループ化できます。

ディメンション 説明
instanceId コンテナのインスタンス ID です。Cloudflare ダッシュボードと Wrangler に表示される ID と同じです。
placementId 1 つのコンテナインスタンスは、寿命のあいだに別の場所へ配置されることがあります(データセンター間の移動など)。placementId でグループ化すると、配置ごとのメトリクスを分けられます。
applicationId インスタンスが属する Containers アプリケーションです。
location コンテナが動いている Cloudflare データセンターです。
region コンテナが動いているリージョンです。
label(name: "...") 特定のコンテナラベルの値です。ラベルで絞り込んでグループ化する を参照してください。
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours 粒度の異なる時間バケットです。

メトリクス

次のメトリクスグループを使えます。各グループは複数のフィールドを公開します。一覧は GraphQL イントロスペクション、または GraphQL API Explorer で確認できます。

グループ 説明
count 受け取ったメトリクスサンプル数です。
avg memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, gpuMemory, containerUptime 選択した期間におけるメトリクスの平均です。
sum cpuTimeSec, allocatedMemory, allocatedDisk, allocatedCpu, rxBytes, txBytes, containerUptime 選択した期間におけるメトリクスの合計です。
max memory, cpuUtilization, diskUsage, diskUsagePercentage, rxBandwidthBps, txBandwidthBps, containerUptime 観測したメトリクスの最大値です。
quantiles memory, cpuUtilization, rxBandwidthBps, txBandwidthBps, diskUsage, diskUsagePercentage, gpuMemory, containerUptime 重み付き分位数です。各メトリクスは P50P95P99 の接尾辞付きで使えます(例: memoryP95)。

API 呼び出し

次のクエリは、1 つのコンテナインスタンスについて、CPU 時間とピークメモリ使用量を 1 時間単位で返します。

echo '{ "query":
  "query ContainersMetrics($accountTag: String, $datetimeStart: Time, $datetimeEnd: Time, $instanceId: String) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        containersMetricsAdaptiveGroups(
          limit: 100
          filter: {
            datetime_geq: $datetimeStart,
            datetime_leq: $datetimeEnd,
            instanceId: $instanceId
          }
          orderBy: [datetimeHour_ASC]
        ) {
          dimensions {
            datetimeHour
            instanceId
          }
          sum {
            cpuTimeSec
          }
          max {
            memory
          }
          quantiles {
            cpuUtilizationP95
            memoryP95
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "datetimeStart": "2026-04-15T00:00:00Z",
    "datetimeEnd": "2026-04-16T00:00:00Z",
    "instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
  }
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

レスポンス

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersMetricsAdaptiveGroups": [
						{
							"dimensions": {
								"datetimeHour": "2026-04-15T00:00:00Z",
								"instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
							},
							"max": {
								"memory": 312475648
							},
							"quantiles": {
								"cpuUtilizationP95": 0.4821,
								"memoryP95": 298123264
							},
							"sum": {
								"cpuTimeSec": 128.47
							}
						},
						{
							"dimensions": {
								"datetimeHour": "2026-04-15T01:00:00Z",
								"instanceId": "4c9b1b3c-8e8d-4a2d-9a3f-7f2b1c0a0e55"
							},
							"max": {
								"memory": 305135616
							},
							"quantiles": {
								"cpuUtilizationP95": 0.3914,
								"memoryP95": 291454976
							},
							"sum": {
								"cpuTimeSec": 104.91
							}
						}
					]
				}
			]
		}
	},
	"errors": null
}

コンテナの課金利用量をクエリする

課金コストを見積もるには、containersUsageAdaptiveGroups を使います。結果には、コンテナ自身のリソース使用量と、実行に必要なマイクロ VM サンドボックス分が含まれ、Cloudflare ダッシュボードに表示される利用量と一致します。

ディメンション

次のいずれかのディメンションで結果をグループ化できます。

ディメンション 説明
instanceId コンテナのインスタンス ID です。Cloudflare ダッシュボードと Wrangler に表示される ID と同じです。
placementId 1 つのコンテナインスタンスは、寿命のあいだに別の場所へ配置されることがあります(データセンター間の移動など)。placementId でグループ化すると、配置ごとのメトリクスを分けられます。
applicationId インスタンスが属する Containers アプリケーションです。
location コンテナが動いている Cloudflare データセンターです。
region コンテナが動いているリージョンです。
label(name: "...") 特定のコンテナラベルの値です。ラベルで絞り込んでグループ化する を参照してください。
date, datetime, datetimeMinute, datetimeFiveMinutes, datetimeFifteenMinutes, datetimeHour, datetimeSixHours 粒度の異なる時間バケットです。

メトリクス

使えるのは sum メトリクスだけです。

フィールド 説明
cpuTimeSec CPU 時間の合計(秒)です。
allocatedMemory 割り当てメモリの合計(バイト秒)です。
allocatedDisk 割り当てディスクの合計(バイト秒)です。
txBytes 送信バイト数の合計です。

API 呼び出し

次のクエリは、直近 30 日の日次 CPU 使用量とメモリ使用量を返します。

echo '{ "query":
  "query ContainersUsage($accountTag: String, $datetimeStart: Time, $datetimeEnd: Time) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        containersUsageAdaptiveGroups(
          limit: 100
          filter: {
            date_geq: $datetimeStart,
            date_leq: $datetimeEnd
          }
          orderBy: [date_ASC]
        ) {
          dimensions {
            date
          }
          sum {
            cpuTimeSec
            allocatedMemory
            allocatedDisk
            txBytes
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "datetimeStart": "2026-03-23",
    "datetimeEnd": "2026-04-22"
  }
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

レスポンス

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersUsageAdaptiveGroups": [
						{
							"dimensions": {
								"date": "2026-04-20"
							},
							"sum": {
								"allocatedDisk": 172800000000000,
								"allocatedMemory": 22118400000000,
								"cpuTimeSec": 3742.18,
								"txBytes": 8471239
							}
						},
						{
							"dimensions": {
								"date": "2026-04-21"
							},
							"sum": {
								"allocatedDisk": 172800000000000,
								"allocatedMemory": 22118400000000,
								"cpuTimeSec": 3955.02,
								"txBytes": 9023841
							}
						}
					]
				}
			]
		}
	},
	"errors": null
}

ラベルで絞り込んでグループ化する

どちらのエンドポイントも、コンテナラベルを次の 2 つのフィールドで公開します。

  • labelskey=value 文字列の配列で、絞り込み向けです。特定のラベルに一致させるには _has 演算子 を使います。
  • label(name: "...") は、名前付きラベルの値を返すグループ化ディメンションです。レスポンスでは扱いやすいフィールド名にエイリアスできます。

たとえば、次のクエリは本番コンテナの CPU 時間とメモリ使用量を、環境ごとにグループ化して返します。

query ContainersByLabel(
	$accountTag: String
	$datetimeStart: Time
	$datetimeEnd: Time
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			containersMetricsAdaptiveGroups(
				limit: 100
				filter: {
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
					labels_has: "env=production"
				}
			) {
				dimensions {
					env: label(name: "env")
					region: label(name: "region")
				}
				sum {
					cpuTimeSec
				}
				max {
					memory
				}
			}
		}
	}
}

エイリアスしたディメンションは、各結果にそのまま現れます。

{
	"data": {
		"viewer": {
			"accounts": [
				{
					"containersMetricsAdaptiveGroups": [
						{
							"dimensions": {
								"env": "production",
								"region": "enam"
							},
							"max": { "memory": 412316672 },
							"sum": { "cpuTimeSec": 9812.41 }
						},
						{
							"dimensions": {
								"env": "production",
								"region": "weur"
							},
							"max": { "memory": 398458880 },
							"sum": { "cpuTimeSec": 7421.08 }
						}
					]
				}
			]
		}
	},
	"errors": null
}

Footnotes

  1. 設定と権限の詳細は、Analytics API トークンを設定する を参照してください。

役に立ちましたか?