Skip to content

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

GraphQL Analytics API

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

Privacy Proxy は、Cloudflare の GraphQL Analytics API でメトリクスを公開します。すべてのメトリクスは、次の単一エンドポイントでクエリできます。

POST https://api.cloudflare.com/client/v4/graphql

始める前に、次のものが必要です。


リクエストを送る

次の例では、curl で Privacy Proxy メトリクスの日次リクエスト量をクエリします。プレースホルダーは自分の値に置き換えます。

curl https://api.cloudflare.com/client/v4/graphql \
  --header "Authorization: Bearer <API_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
    "query": "query DailyRequestVolume($accountTag: String!, $startDate: Date!, $endDate: Date!) { viewer { accounts(filter: { accountTag: $accountTag }) { privacyProxyRequestMetricsAdaptiveGroups(filter: { date_geq: $startDate, date_leq: $endDate }, limit: 10000, orderBy: [date_ASC]) { count dimensions { date } } } } }",
    "variables": {
      "accountTag": "<YOUR_ACCOUNT_TAG>",
      "startDate": "2026-04-04",
      "endDate": "2026-04-06"
    }
  }'

利用できるノード

GraphQL ノードは 4 つあります。いずれも集計データのみを返し、接続単位の生レコードは公開しません。

  1. privacyProxyRequestMetricsAdaptiveGroups — 集計したリクエスト量とエラー率をクエリします。時間、場所、エンドポイント、ステータスコード、プロキシステータスのディメンションでフィルターできます。
  2. privacyProxyIngressConnMetricsAdaptiveGroups — クライアントからプロキシへの接続数、転送バイト数、レイテンシのパーセンタイルをクエリします。時間、場所、エンドポイント、トランスポートのディメンションでフィルターできます。
  3. privacyProxyEgressConnMetricsAdaptiveGroups — プロキシからオリジンへの接続数、転送バイト数、レイテンシのパーセンタイルをクエリします。時間、場所、エンドポイント、トランスポートのディメンションでフィルターできます。
  4. privacyProxyAuthMetricsAdaptiveGroups — 認証試行回数をクエリします。時間、場所、エンドポイント、認証方式、認証結果のディメンションでフィルターできます。

スキーマ

メトリクス

合計フィールド

フィールド 説明 ノード
bytesSentToClient uint64 プロキシからクライアントへ送信した合計バイト数。 イングレス接続
bytesRecvdFromClient uint64 プロキシがクライアントから受信した合計バイト数。 イングレス接続
bytesSentToOrigin uint64 プロキシから上流オリジンへ送信した合計バイト数。 エグレス接続
bytesRecvdFromOrigin uint64 プロキシが上流オリジンから受信した合計バイト数。 エグレス接続
packetsSentToClient uint64 プロキシからクライアントへ送信した合計パケット数。 イングレス接続
packetsRecvdFromClient uint64 プロキシがクライアントから受信した合計パケット数。 イングレス接続
packetsSentToOrigin uint64 プロキシから上流オリジンへ送信した合計パケット数。 エグレス接続
packetsRecvdFromOrigin uint64 プロキシが上流オリジンから受信した合計パケット数。 エグレス接続

カウントフィールド

4 つのノードすべてに count フィールドがあり、クエリフィルターに一致するサンプリング済みイベント(リクエスト、接続、または認証試行)の総数を返します。

分位フィールド

フィールド 説明 ノード
durationMsP50 float64 接続存続時間の中央値(ミリ秒)。 イングレス接続とエグレス接続
durationMsP95 float64 接続存続時間の 95 パーセンタイル(ミリ秒)。 イングレス接続とエグレス接続
durationMsP99 float64 接続存続時間の 99 パーセンタイル(ミリ秒)。 イングレス接続とエグレス接続
handshakeDurationUsP50 float64 TCP+TLS/QUIC ハンドシェイク時間の中央値(マイクロ秒)。 イングレス接続とエグレス接続
handshakeDurationUsP95 float64 ハンドシェイク時間の 95 パーセンタイル(マイクロ秒)。 イングレス接続とエグレス接続
handshakeDurationUsP99 float64 ハンドシェイク時間の 99 パーセンタイル(マイクロ秒)。 イングレス接続とエグレス接続
connectRequestHandlingDurationUsP50 float64 CONNECT リクエストの処理時間の中央値(マイクロ秒)。まだ利用できません。 リクエスト
connectRequestHandlingDurationUsP95 float64 CONNECT リクエストの処理時間の 95 パーセンタイル(マイクロ秒)。まだ利用できません。 リクエスト
connectRequestHandlingDurationUsP99 float64 CONNECT リクエストの処理時間の 99 パーセンタイル(マイクロ秒)。まだ利用できません。 リクエスト
connectTunnelSetupDurationUsP50 float64 CONNECT リクエスト受信後にトンネルを確立する時間の中央値(マイクロ秒)。まだ利用できません。 リクエスト
connectTunnelSetupDurationUsP95 float64 トンネルセットアップ時間の 95 パーセンタイル(マイクロ秒)。まだ利用できません。 リクエスト
connectTunnelSetupDurationUsP99 float64 トンネルセットアップ時間の 99 パーセンタイル(マイクロ秒)。まだ利用できません。 リクエスト

ディメンション

すべてのノード

フィールド 説明
date Date カレンダー日付(日単位)。
datetimeMinute Time 分単位に切り捨てたタイムスタンプ。
datetimeFiveMinutes Time 5 分間隔に切り捨てたタイムスタンプ。
datetimeFifteenMinutes Time 15 分間隔に切り捨てたタイムスタンプ。
datetimeHour Time 時間単位に切り捨てたタイムスタンプ。
coloCode string リクエストを処理した Cloudflare データセンター。
endpoint string トラフィックを生成した appId。

タイムスタンプのディメンションは、接続またはリクエストの開始ではなく終了を指します。

リクエストノードのみ

フィールド 説明
statusCode uint16 プロキシがクライアントに返した HTTP ステータスコード。
proxyStatus string プロキシレベルのエラー分類。プロキシレベルのエラーがなければ null です。取りうる値は プロキシステータスのリファレンス を参照してください。
tunnelType string 使用したトンネルプロトコル(connect-tcpconnect-udpconnect-ip)。まだ利用できません。

イングレス接続ノードのみ

フィールド 説明
transport string クライアントからプロキシへの接続のトランスポートプロトコル(tcpquic)。
tlsVersion string クライアントからプロキシへの接続でネゴシエートした TLS バージョン。まだ利用できません。

エグレス接続ノードのみ

フィールド 説明
transport string プロキシからオリジンへの接続のトランスポートプロトコル(tcpquic)。

認証ノードのみ

フィールド 説明
authMethod string 使用した認証方式(例: TokenPsk)。
authResult string 認証結果(successfailure)。

引数

4 つのノードは、同じ引数シグネチャを共有します。

  • filter required — データをフィルターします。フィルター内では常に accountTag が必要です。
  • limit optional — 返すレコードの最大数です。
  • orderBy optional — 結果の並び順です。

クエリの例

privacyProxyRequestMetricsAdaptiveGroups ノード

リクエスト量の概要

日付範囲における日次リクエスト量の概要を取得します。

query DailyRequestVolume(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

ステータスコードとプロキシステータス別のエラー内訳

発生している HTTP ステータスコードとプロキシレベルのエラーを特定し、障害の原因を絞り込みます。

query ErrorBreakdown(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          datetimeFifteenMinutes_geq: $start
          datetimeFifteenMinutes_leq: $end
          statusCode_geq: 400
        }
        limit: 10000
        orderBy: [datetimeFifteenMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFifteenMinutes
          statusCode
          proxyStatus
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}

頻度順の主なプロキシエラー

最も多いプロキシエラータイプを順位付けし、調査の優先度を決めます。

query TopProxyErrors(
  $accountTag: String!
  $start: Date!
  $end: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $start
          date_leq: $end
          proxyStatus_neq: ""
        }
        limit: 10000
        orderBy: [count_DESC]
      ) {
        count
        dimensions {
          proxyStatus
          statusCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04",
  "end": "2026-04-06"
}

トンネルタイプの分布

connect-tcpconnect-udpconnect-ip の割合を時系列で監視し、クライアントの接続方法を把握します。

query TunnelTypeDistribution(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyRequestMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
          tunnelType
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

privacyProxyIngressConnMetricsAdaptiveGroups ノード

接続量とイングレスバイト数の概要

日次のイングレス接続数と転送バイト数の概要を取得します。

query IngressTrafficOverview(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        sum {
          bytesSentToClient
          bytesRecvdFromClient
        }
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

データセンター別の接続存続時間

データセンター間でクライアントからプロキシへの接続存続時間を比較し、長時間接続や停滞した接続があるリージョンを特定します。

query IngressDurationByColo(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [quantiles_durationMsP50_DESC]
      ) {
        quantiles {
          durationMsP50
          durationMsP95
          durationMsP99
        }
        dimensions {
          coloCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

プロトコルと TLS バージョンの分布

クライアントが使うトランスポートプロトコル(QUIC と TCP)と TLS バージョンを把握すると、廃止計画、設定ミスのあるクライアントの検出、トラフィックがセキュリティ要件を満たしているかの確認に役立ちます。

query IngressProtocolDistribution(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyIngressConnMetricsAdaptiveGroups(
        filter: {
          datetimeFifteenMinutes_geq: $start
          datetimeFifteenMinutes_leq: $end
        }
        limit: 10000
        orderBy: [datetimeFifteenMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFifteenMinutes
          transport
          tlsVersion
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}

privacyProxyEgressConnMetricsAdaptiveGroups ノード

エグレスバイト数の概要

プロキシと上流オリジン間の日次バイト流量の概要を取得します。

query EgressBytesOverview(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        sum {
          bytesSentToOrigin
          bytesRecvdFromOrigin
        }
        dimensions {
          date
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

データセンター別のプロキシからオリジンへのレイテンシ

データセンター間でプロキシからオリジンへのハンドシェイク時間を比較し、オリジン到達性が低下しているリージョンを特定します。

query EgressLatencyByColo(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [quantiles_handshakeDurationUsP50_DESC]
      ) {
        quantiles {
          handshakeDurationUsP50
          handshakeDurationUsP95
          handshakeDurationUsP99
        }
        dimensions {
          coloCode
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

エグレス性能の推移

特定の時間窓で、プロキシからオリジンへのハンドシェイクレイテンシを細かい粒度で追跡します。

query EgressPerformanceTrend(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyEgressConnMetricsAdaptiveGroups(
        filter: {
          datetimeFiveMinutes_geq: $start
          datetimeFiveMinutes_leq: $end
        }
        limit: 10000
        orderBy: [datetimeFiveMinutes_ASC]
      ) {
        quantiles {
          handshakeDurationUsP50
          handshakeDurationUsP95
          handshakeDurationUsP99
        }
        count
        dimensions {
          datetimeFiveMinutes
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T08:00:00Z",
  "end": "2026-04-06T14:00:00Z"
}

privacyProxyAuthMetricsAdaptiveGroups ノード

方式別の認証量

方式ごとの日次認証量を追跡し、導入状況の把握と異常の検出に使います。

query AuthVolumeByMethod(
  $accountTag: String!
  $startDate: Date!
  $endDate: Date!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          date_geq: $startDate
          date_leq: $endDate
        }
        limit: 10000
        orderBy: [date_ASC]
      ) {
        count
        dimensions {
          date
          authMethod
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "startDate": "2026-04-04",
  "endDate": "2026-04-06"
}

認証失敗の急増検出

認証失敗の急増を検出し、どの認証方式が失敗しているかを特定します。

query AuthFailureSpike(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          datetimeMinute_geq: $start
          datetimeMinute_leq: $end
          authResult: "failure"
        }
        limit: 10000
        orderBy: [datetimeFiveMinutes_ASC]
      ) {
        count
        dimensions {
          datetimeFiveMinutes
          authMethod
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T10:00:00Z",
  "end": "2026-04-06T14:00:00Z"
}

認証成功率

時間ごとの成功数と失敗数を比較し、認証成功率の算出と劣化傾向の把握に使います。

query AuthSuccessRate(
  $accountTag: String!
  $start: Time!
  $end: Time!
) {
  viewer {
    accounts(filter: { accountTag: $accountTag }) {
      privacyProxyAuthMetricsAdaptiveGroups(
        filter: {
          datetimeHour_geq: $start
          datetimeHour_leq: $end
        }
        limit: 10000
        orderBy: [datetimeHour_ASC]
      ) {
        count
        dimensions {
          datetimeHour
          authResult
        }
      }
    }
  }
}
{
  "accountTag": "<YOUR_ACCOUNT_TAG>",
  "start": "2026-04-04T00:00:00Z",
  "end": "2026-04-06T23:59:59Z"
}

関連リソース

役に立ちましたか?