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

Запрос аналитики пропускной способности туннелей IPsec/GRE Magic Transit и Cloudflare WAN с помощью GraphQL

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

Следующий вызов API запрашивает входящий трафик туннеля Magic Transit или 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. ↩