← Cloudflare Magic Transit / magic-transit / analytics
Запрос результатов проверки работоспособности туннелей Magic Transit через GraphQL
В этом примере используется GraphQL Analytics API для запроса результатов проверок работоспособности туннелей Magic Transit. Эти результаты формируются на основе отдельных проверок, которые серверы Cloudflare выполняют для туннелей, настроенных в вашем аккаунте. Можно запросить данные за период до одной недели, но не более чем за последние три месяца.
Следующий вызов API запрашивает проверки работоспособности туннеля для конкретного аккаунта за один день для конкретного дата-центра Cloudflare и выводит запрошенные поля. Замените <CLOUDFLARE_ACCOUNT_TAG> и <API_TOKEN>1 со своими учётными данными API и настройте datetimeStart и datetimeEnd переменные по мере необходимости.
Вызов API возвращает результаты проверки работоспособности туннеля по дата-центрам Cloudflare. Cloudflare объединяет результаты каждого дата-центра на основе проверок работоспособности, выполненных на отдельных серверах. В следующей таблице tunnelState поле отражает состояние туннеля. Magic Transit использует эти состояния для маршрутизации. 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
#=> }Сноски
-
Подробности см. в Настройте токен Analytics API. ↩