この例では、GraphQL Analytics API を使って Magic Transit or Cloudflare WAN のトンネルヘルスチェック結果をクエリします。結果は、アカウントで設定したトンネルに対して Cloudflare サーバーが個別に実施したヘルスチェックを集計したものです。過去 3 か月以内の日付について、最大 1 週間分のデータをクエリできます。
次の API 呼び出しは、特定のアカウントについて、特定の Cloudflare データセンターにおける 1 日分のトンネルヘルスチェックを要求し、指定したフィールドを返します。<CLOUDFLARE_ACCOUNT_TAG> と <API_TOKEN>1 を自分の API 認証情報に置き換え、必要に応じて datetimeStart と datetimeEnd を調整します。
API 呼び出しは、Cloudflare データセンターごとのトンネルヘルスチェック結果を返します。各データセンターの結果は、個別サーバーで実施したヘルスチェックから Cloudflare が集計します。tunnelState フィールドはトンネルの状態を表します。Magic Transit or Cloudflare WAN はルーティングにこの状態を使います。tunnelState が 0 のときはダウン、0.5 のときは劣化、1 のときは正常です。
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
#=> }-
詳細は Analytics API トークンを設定する を参照してください。 ↩