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

Сравнение показателей

При сравнении временных рядов по локациям, диапазонам времени и другим параметрам в эндпоинтах, которые нормализуют значения с помощью min-max, это нужно сделать в одном и том же запросе. Для этого запрашивается несколько рядов. Все значения затем нормализуются с использованием одинаковых минимального и максимального значений и могут безопасно сравниваться между собой.

NetFlows значения нормализуются с помощью min0-max, поэтому мы используем его в качестве примера. См. Получение временных рядов NetFlow, где это описано подробнее.

Сравнение локаций

В следующем примере мы сравним изменение трафика между двумя разными локациями: США и Португалией. В примере используется коды alpha-2 ↗ за последние семь дней:

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=us_data&dateRange=7d&location=US&name=pt_data&dateRange=7d&location=PT&format=json" \
--header "Authorization: Bearer <API_TOKEN>"

В примере выше запрашиваются два временных ряда. Первый ряд имеет следующие параметры:

name=us_data&dateRange=7d&location=US

Второй ряд данных имеет следующие параметры:

name=pt_data&dateRange=7d&location=PT

Все эти параметры являются массивами, и именно позиция элемента в массиве определяет, к какому ряду относится фильтр. См. Конечная точка NetFlow для получения дополнительной информации о доступных параметрах.

В ответе (сокращен ниже для краткости) используется указанный name свойство для объединения временных меток и соответствующих значений. Если построить график по этим данным, становится очевидно, что Cloudflare получала гораздо меньше трафика из Португалии, чем из США.

{
  "success": true,
  "errors": [],
  "result": {
    "us_data": {
      "timestamps": [ "2022-10-26T17:00:00Z", "2022-11-02T15:00:00Z" ],
      "values": [ "0.871752", "1" ]
    },
    "pt_data": {
      "timestamps": [ "2022-10-26T17:00:00Z", "2022-11-02T15:00:00Z" ],
      "values": [ "0.020457", "0.012313" ]
    },
    "meta": {
      "dateRange": {
        "startTime": "2022-10-26T17:00:00Z",
        "endTime": "2022-11-02T17:00:00Z"
      },
      "aggInterval": "ONE_HOUR",
			// ...
    }
  }
}

Сравнение доступно в большинстве конечных точек, а не только в тех, что используют min-max.

Сравнение диапазонов дат

В следующем примере мы сравним показатели США за разные периоды с помощью быстрых кнопок выбора диапазона дат 7d и 7dControl. Это означает последние семь дней и семь дней перед ними соответственно, другими словами, эта неделя по сравнению с предыдущей.

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=this_week&dateRange=7d&location=US&name=previous_week&dateRange=7dControl&location=US&format=json" \
--header "Authorization: Bearer <API_TOKEN>"

Первый ряд данных имеет следующие параметры:

name=this_week&dateRange=7d&location=US

Второй ряд данных имеет следующие параметры:

name=previous_week&dateRange=7dControl&location=US

Теперь в разделе result свойство, вы должны получить что-то вроде этого:

{
  "this_week": {
    "timestamps": [ "2022-10-27T13:00:00Z", "2022-10-27T14:00:00Z", "...", "2022-11-03T12:00:00Z" ],
    "values": [ "0.794321", "1", "...", "0.718433"]
  },
  "previous_week": {
    "timestamps": [ "2022-10-20T13:00:00Z", "2022-10-20T14:00:00Z", "...", "2022-10-27T12:00:00Z" ],
    "values": [ "0.774392", "0.835071", "...", "0.720181"]
  }
}

Анализируя эти данные, можно сделать вывод, что максимальное значение было достигнуто в 2022-10-27T14:00:00Z (все временные метки Radar указаны в формате всемирного координированного времени (UTC)). Также можно проверить, что означают быстрые варианты диапазона дат 7d и 7dControl были разрешены на момент выполнения запроса.

Используйте конкретные временные метки

Также можно запросить данные за конкретные временные метки. В следующем примере мы запросим данные относительно Тонга ↗ в октябре по сравнению с январем 2022 года, когда произошел сбой.

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=tonga&dateStart=2022-10-15T02%3A00%3A00Z&dateEnd=2022-10-15T05%3A00%3A00Z&location=TO&name=tonga_outage&dateStart=2022-01-15T02%3A00%3A00Z&dateEnd=2022-01-15T05%3A00%3A00Z&location=TO&format=json&aggInterval=1h" \
--header "Authorization: Bearer <API_TOKEN>"

Первый ряд данных имеет следующие параметры (в URL-кодировке):

name=tonga&dateStart=2022-10-15T02%3A00%3A00Z&dateEnd=2022-10-15T05%3A00%3A00Z%&location=TO

Второй ряд данных имеет следующие параметры:

name=tonga_outage&dateStart=2022-01-15T02%3A00%3A00Z&&dateEnd=2022-01-15T05%3A00%3A00Z&location=TO

В приведённом выше примере мы запросили интервал агрегации в один час (aggInterval=1h), чтобы результаты можно было отобразить на этой странице. format и aggInterval не являются массивами, как указано в Справочник по API, и применяются глобально ко всем рядам в запросе.

result свойство должно возвращать ответ следующего вида:

{
	"tonga": {
		"timestamps": ["2022-10-15T02:00:00Z", "2022-10-15T03:00:00Z", "2022-10-15T04:00:00Z", "2022-10-15T05:00:00Z"],
		"values": ["1.0", "0.832473", "0.820083", "0.79408"]
	},
	"tonga_outage": {
		"timestamps": ["2022-01-15T02:00:00Z", "2022-01-15T03:00:00Z", "2022-01-15T04:00:00Z", "2022-01-15T05:00:00Z"],
		"values": ["0.354105", "0.357287", "0.181811", "0.044198"]
	}
}

Это показывает, что во время сбоя трафик упал почти до нуля. Если построить график и для наглядности задать конечную дату 18 января, получим следующее:

Тонга: октябрь и январь 2022 года

Следующие шаги

См. раздел Investigate, чтобы подробнее изучить данные, возвращаемые Radar, например NetFlows.