INTEGRITY Документация

Запрос результатов проверки работоспособности туннелей IPsec/GRE Cloudflare WAN через GraphQL

В этом примере используется GraphQL Analytics API для запроса результатов проверки работоспособности туннелей Cloudflare WAN. Эти результаты агрегируются из отдельных проверок работоспособности, которые серверы Cloudflare выполняют для туннелей, настроенных в вашем аккаунте. Вы можете запросить данные максимум за одну неделю за период до трёх месяцев назад.

Следующий вызов API запрашивает проверки работоспособности туннеля для конкретного аккаунта за один день для конкретного дата-центра Cloudflare и выводит запрошенные поля. Замените <CLOUDFLARE_ACCOUNT_TAG> и <API_TOKEN>1 со своими учётными данными API и настройте datetimeStart и datetimeEnd переменные по мере необходимости.

Вызов API возвращает результаты проверки работоспособности туннеля по дата-центрам Cloudflare. Cloudflare объединяет результаты каждого дата-центра на основе проверок работоспособности, выполненных на отдельных серверах. В следующей таблице tunnelState поле отражает состояние туннеля. Cloudflare WAN использует эти состояния для маршрутизации. tunnelState значение 0 обозначает отключенный туннель, 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
#=> }

Сноски

  1. Подробности см. в Настройте токен Analytics API.