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