Skip to content

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

GraphQL で Magic Transit と Cloudflare WAN の IPsec/GRE トンネルヘルスチェック結果をクエリする

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

この例では、GraphQL Analytics API を使って Magic Transit or Cloudflare WAN のトンネルヘルスチェック結果をクエリします。結果は、アカウントで設定したトンネルに対して Cloudflare サーバーが個別に実施したヘルスチェックを集計したものです。過去 3 か月以内の日付について、最大 1 週間分のデータをクエリできます。

次の API 呼び出しは、特定のアカウントについて、特定の Cloudflare データセンターにおける 1 日分のトンネルヘルスチェックを要求し、指定したフィールドを返します。<CLOUDFLARE_ACCOUNT_TAG><API_TOKEN>1 を自分の API 認証情報に置き換え、必要に応じて datetimeStartdatetimeEnd を調整します。

API 呼び出しは、Cloudflare データセンターごとのトンネルヘルスチェック結果を返します。各データセンターの結果は、個別サーバーで実施したヘルスチェックから Cloudflare が集計します。tunnelState フィールドはトンネルの状態を表します。Magic Transit or Cloudflare WAN はルーティングにこの状態を使います。tunnelState0 のときはダウン、0.5 のときは劣化、1 のときは正常です。

API 呼び出し

echo '{ "query":
  "query GetTunnelHealthCheckResults($accountTag: string, $datetimeStart: string, $datetimeEnd: string) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        magicTransitTunnelHealthChecksAdaptiveGroups(
          limit: 100,
          filter: {
            datetime_geq: $datetimeStart,
            datetime_lt:  $datetimeEnd,
          }
        ) {
          avg {
            tunnelState
          }
          dimensions {
            tunnelName
            edgeColoName
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "datetimeStart": "2022-08-04T00:00:00.000Z",
    "datetimeEnd": "2022-08-04T01:00:00.000Z"
  }
}' | 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 @-

結果は(要求どおり)JSON で返されます。出力を jq にパイプすると、次の例のように読みやすく整形できます。

... | 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 .

## Example response:
#=> {
#=>   "data": {
#=>     "viewer": {
#=>       "accounts": [
#=>         {
#=>           "conduitEdgeTunnelHealthChecks": [
#=>             {
#=>               {
#=>                 "avg": {
#=>                   "tunnelState": 1
#=>                 },
#=>                 "dimensions": {
#=>                   "edgeColoName": "mel01",
#=>                   "tunnelName": "tunnel_01",
#=>                   "tunnelState": 0.5
#=>                 }
#=>               },
#=>               {
#=>                 "avg": {
#=>                   "tunnelState": 0.5
#=>                 },
#=>                 "count": 310,
#=>                 "dimensions": {
#=>                   "edgeColoName": "mel01",
#=>                   "tunnelName": "tunnel_02",
#=>                   "tunnelState": 0.5
#=>                 }
#=>               }
#=>           ]
#=>         }
#=>       ]
#=>     }
#=>   },
#=>   "errors": null
#=> }

Footnotes

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

役に立ちましたか?