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

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

В этом примере используется GraphQL Analytics API для запроса данных о входящем трафике туннелей Cloudflare WAN за указанный период времени.

Следующий вызов API запрашивает трафик входящего туннеля Cloudflare WAN за один час и выводит запрошенные поля. Замените <CLOUDFLARE_ACCOUNT_TAG> с ID вашего аккаунта, <EMAIL>, <API_KEY>1 (устаревшая версия) или <API_TOKEN>2 (предпочтительно) с вашими учетными данными API и настройте datetime_geq и datetime_leq значения по необходимости.

В примере выполняется запрос для входящего трафика. Чтобы выполнить запрос для исходящего трафика, измените значение в direction фильтр.

Вызов API

PAYLOAD='{ "query":
  "query GetTunnelHealthCheckResults($accountTag: string, $datetimeStart: string, $datetimeEnd: string) {
      viewer {
        accounts(filter: {accountTag: $accountTag}) {
          magicTransitTunnelTrafficAdaptiveGroups(
            limit: 100,
            filter: {
              datetime_geq: $datetimeStart,
              datetime_lt:  $datetimeEnd,
              direction: $direction
            }
          ) {
            avg {
              bitRateFiveMinutes
            }
            dimensions {
              tunnelName
              datetimeFiveMinutes
            }
          }
        }
      }
  }",
    "variables": {
      "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
      "direction": "ingress",
      "datetimeStart": "2022-05-04T11:00:00.000Z",
      "datetimeEnd": "2022-05-04T12:00:00.000Z"
    }
  }
}'

# curl with Legacy API Key
curl https://api.cloudflare.com/client/v4/graphql \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "$(echo $PAYLOAD)"

# curl with API Token
curl https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "$(echo $PAYLOAD)"

Возвращаемые значения показывают общую пропускную способность в битах в секунду за пятиминутный интервал для конкретного туннеля. Чтобы использовать другие интервалы агрегации, задайте одинаковое временное окно и для метрики, и для даты и времени. Например, для анализа почасовых групп используйте bitRateHour и datetimeHour.

Результат представлен в формате JSON (как и было запрошено), поэтому передача вывода в jq форматирует его для упрощения анализа, как в следующем примере:

curl https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "$(echo $PAYLOAD)" | jq .

## Example response:
#=> {
#=>   "data": {
#=>     "viewer": {
#=>       "accounts": [
#=>         {
#=>           "magicTransitTunnelTrafficAdaptiveGroups": [
#=>             {
#=>               avg: { bitRateFiveMinutes:  327680 },
#=>               dimensions: {
#=>                 datetimeFiveMinute: '2021-05-12T22:00-00:00',
#=>                 tunnelName: 'tunnel_name'
#=>               }
#=>             },
#=>             {
#=>               avg: { bitRateFiveMinutes:  627213680 },
#=>               dimensions: {
#=>                 datetimeFiveMinute: '2021-05-12T22:05-00:00',
#=>                 tunnelName: 'another_tunnel'
#=>              }
#=>             }
#=>           ]
#=>         }
#=>       ]
#=>     }
#=>   },
#=>   "errors": null
#=> }

Сноски

  1. Подробности см. в Аутентификация с помощью ключа Cloudflare API.

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