Метрики HTTP-монитора в синтетическом мониторинге

Материал из Документация Ключ-АСТРОМ

Метрики HTTP-монитора в синтетическом мониторинге

Метрики и параметры

Монитор

Ключ метрики Название метрики Описание метрики Единица Размеры
dt.synthetic.http.availability Уровень доступности (по локации) [HTTP-монитор] Коэффициент доступности HTTP-мониторов. % dt.synthetic.monitor.id

dt.entity.http_check monitor.name dt.synthetic.step.id dt.entity.http_check_step step.name step.sequence_number dt.entity.synthetic_location dt.synthetic.monitored_entity_ids primary_tags.__key__ dt.security_context interpolated

dt.synthetic.http.dns Время поиска DNS (по локации) [HTTP-монитор] Время, затраченное на разрешение имени хоста для целевого URL-адреса, суммированное по всем запросам. мс (аналогично предыдущему)
dt.synthetic.http.download_time Время загрузки (по локации) [HTTP-монитор] Время, затраченное на загрузку HTTP-ответа для всех этапов. Этот показатель не основан на показателе из Синтетического мониторинга Классического. мс (аналогично)
dt.synthetic.http.duration Продолжительность (по локации) [HTTP-монитор] Длительность, равная сумме всех запросов. мс (аналогично)
dt.synthetic.http.duration_threshold Пороговое значение длительности [HTTP-монитор] Пороговое значение производительности для суммы всех запросов. мс (аналогично)
dt.synthetic.http.executions Количество выполнений (по статусу) [HTTP-монитор] Количество выполнений монитора. Параметр maintenance_window доступен только в Синтетическом мониторинге Классическом. шт. dt.synthetic.monitor.id

dt.entity.http_check monitor.name dt.synthetic.step.id dt.entity.http_check_step step.name step.sequence_number dt.entity.synthetic_location result.status.message result.status.code result.state result.http_status.code dt.maintenance_window_ids dt.synthetic.monitored_entity_ids primary_tags.__key__ dt.security_context maintenance_window

dt.synthetic.http.response_size Размер ответа (по локации) [HTTP-монитор] Размер ответа, равный сумме всех запросов. КБ (аналогично duration)
dt.synthetic.http.tcp_connect_time Время установления TCP-соединения (по локации) [HTTP-монитор] Время, затраченное на установление TCP-соединения с сервером (включая SSL) для суммы всех запросов. мс (аналогично)
dt.synthetic.http.time_to_first_byte Время до первого байта (по локации) [HTTP-монитор] Время, необходимое для получения первого байта ответа от сервера, соответствующих кэшей приложений или локального ресурса. Рассчитывается как сумма всех шагов. мс (аналогично)
dt.synthetic.http.tls_handshake_time Время установления TLS-соединения (по локации) [HTTP-монитор] Время, затраченное на завершение TLS-рукопожатия для суммы всех запросов. мс (аналогично)
dt.synthetic.http.redirects_count Количество перенаправлений (по локации) [HTTP-монитор] Количество перенаправлений для суммы всех запросов. шт. (аналогично)
dt.synthetic.http.redirects_time Время переадресации (по локации) [HTTP-монитор] Время, затраченное на выполнение перенаправлений для суммы всех запросов. мс (аналогично)
dt.synthetic.http.waiting_time Время ожидания (по локации) [HTTP-монитор] Время, необходимое серверу для ответа первым байтом за все шаги. Этот показатель не основан на показателе из Синтетического мониторинга Классического. мс (аналогично)

Шаги

Ключ метрики Название метрики Описание метрики Единица Размеры
dt.synthetic.http.request.dns Время выполнения DNS-запроса (по запросу, локации) [HTTP-монитор] Время, необходимое для определения имени хоста целевого URL-адреса для отдельных HTTP-запросов. мс (аналогично монитору)
dt.synthetic.http.request.download_time Время загрузки (по шагам, локации) [HTTP-монитор] Время, затраченное на разрешение имени хоста для целевого URL-адреса на отдельных этапах HTTP-запроса. Этот показатель не основан на показателе из Синтетического мониторинга Классического. мс (аналогично)
dt.synthetic.http.request.duration Продолжительность (по запросу, локации) [HTTP-монитор] Длительность отдельных HTTP-запросов. мс (аналогично)
dt.synthetic.http.request.executions Количество выполненных запросов [HTTP-монитор] Количество выполненных запросов. шт. (аналогично executions у монитора)
dt.synthetic.http.request.response_size Размер ответа (по запросу, локации) [HTTP-монитор] Размер ответа отдельных HTTP-запросов. КБ (аналогично)
dt.synthetic.http.request.tcp_connect_time Время установления TCP-соединения (по запросу, локации) [HTTP-монитор] Время, необходимое для установления TCP-соединения с сервером (включая SSL) для отдельных HTTP-запросов. мс (аналогично)
dt.synthetic.http.request.time_to_first_byte Время до первого байта (по запросу, локации) [HTTP-монитор] Время, необходимое для получения первого байта ответа от сервера, соответствующих кэшей приложений или локального ресурса. Рассчитывается для отдельных HTTP-запросов. мс (аналогично)
dt.synthetic.http.request.tls_handshake_time Время установления TLS-соединения (по запросу, локации) [HTTP-монитор] Время, необходимое для завершения TLS-рукопожатия для отдельных HTTP-запросов. мс (аналогично)
dt.synthetic.http.request.redirects_count Количество перенаправлений (запросов) [HTTP-монитор] Количество перенаправлений. шт. (аналогично)
dt.synthetic.http.request.redirects_time Время перенаправления (запрос) [HTTP-монитор] Время, затраченное на выполнение перенаправлений. мс (аналогично)
dt.synthetic.http.request.waiting_time Время ожидания (шаг) (по локации) [HTTP-монитор] Время, необходимое серверу для ответа первым байтом. Этот показатель не основан на показателе из Синтетического мониторинга Классического. мс (аналогично)

Устаревший

Ключ метрики Название метрики Описание метрики Единица Размеры
dt.synthetic.http.availability.excluding_maintenance_windows Коэффициент доступности без учета периодов технического обслуживания (по локации) [HTTP-монитор] Показатель доступности HTTP-мониторов без учета периодов технического обслуживания. Этот показатель отсутствует в последней версии Ключ-АСТРОМ. % dt.entity.http_check

dt.entity.synthetic_location

Варианты использования

Следующие примеры демонстрируют, как можно применять метрики в запросах DQL.

Доступность монитора отслеживания

Предположим, вам нужно выявить мониторы, у которых возникли проблемы с доступностью.

Следующий запрос использует метрику dt.synthetic.http.availability и измерение dt.entity.http_check для возврата мониторов, отсортированных по их доступности, при этом наименее доступные мониторы отображаются первыми.

timeseries {
  availability_series = avg(dt.synthetic.http.availability) },
by: { dt.entity.http_check }
| fieldsAdd monitor_name = entityName(dt.entity.http_check)
| summarize { monitor_name = takeFirst(monitor_name),
              availability = avg(arrayAvg(availability_series)) },
            by: {dt.entity.http_check}
| sort availability asc

Исходный ответ выглядит следующим образом:

{

 "records": [
    {
     "dt.entity.http_check": "HTTP_CHECK-D1DF6416D98DF200",
     "monitor_name": "HTTP monitor",
     "availability": 0
   },
   {
     "dt.entity.http_check": "HTTP_CHECK-DD85DA9C14659614",
     "monitor_name": "HTTP monitor2",
     "availability": 31.746031746031743
   },
   {
     "dt.entity.http_check": "HTTP_CHECK-ADA43EC2FFF9115D",
     "monitor_name": "HTTP monitor3",
     "availability": 46.03174603174603
   },
   {
     "dt.entity.http_check": "HTTP_CHECK-0135CB5835BEAEA8",
     "monitor_name": "HTTP monitor4",
     "availability": 100
   },
   ...
 ]

}

Определите наиболее проблемные локации

Предположим, вам нужно определить локации с наименьшей доступностью и самым медленным средним временем ответа на HTTP-запросы.

В следующем запросе используются метрики dt.synthetic.http.availability и dt.synthetic.http.request.duration, а также измерение dt.entity.synthetic_location.

timeseries {
  availability_series = avg(dt.synthetic.http.availability),
  performance_series = avg(dt.synthetic.http.request.duration) },
by: { dt.entity.synthetic_location }
| fieldsAdd location_name = entityName(dt.entity.synthetic_location)
| summarize { location_name = takeFirst(location_name),
              availability = avg(arrayAvg(availability_series)),
              request_duration = avg(arrayAvg(performance_series))},
            by: {dt.entity.synthetic_location}
| sort availability asc, request_duration desc

Исходный ответ выглядит следующим образом:

{

 "records": [
   {
     "dt.entity.synthetic_location": "SYNTHETIC_LOCATION-00000000000003B3",
     "location_name": "Лас-Вегас",
     "availability": 23.809523809523807,
     "request_duration": 2662.3457875457875
   },
   {
     "dt.entity.synthetic_location": "SYNTHETIC_LOCATION-0000000000000004",
     "location_name": "Amazon US East (N. Virginia)",
     "availability": 60.714285714285715,
     "request_duration": 1297.4880952380952
   },
   {
     "dt.entity.synthetic_location": "SYNTHETIC_LOCATION-2D4A33F9E13D70E7",
     "location_name": "Осло",
     "availability": 66.66666666666667,
     "request_duration": 1114.1904761904761
   },
   {
     "dt.entity.synthetic_location": "SYNTHETIC_LOCATION-0000000000000064",
     "location_name": "Гданьск",
     "availability": 70,
     "request_duration": 294.2772881374772
   },
   {
     "dt.entity.synthetic_location": "SYNTHETIC_LOCATION-9FFF47C604374908",
     "location_name": "Дублин",
     "availability": 72.06349206349208,
     "request_duration": 1146.2952380952381
   },
   ...
 ]

}

Идентификация кодов состояния, полученных в ходе выполнения тестов

Предположим, вам необходимо определить коды состояния ошибок (>= 400), полученные во время выполнения тестов.

В следующем запросе используются метрика dt.synthetic.http.executions и измерение result.http_status.code.

timeseries {
  execution_series = sum(dt.synthetic.http.executions)
}, by: { result.http_status.code }
| filter result.http_status.code >= 400
| summarize { executions = sum(execution_series[]),
              status.code = toString(takeFirst(result.http_status.code)) },
            by: { timeframe, interval, result.http_status.code}

Визуализированный ответ выглядит следующим образом: