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

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

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

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

Размеры (для всех мониторов сетевой доступности)

Название Тип Описание Пример значения
dt.entity.host
string Если доступен, идентификатор сущности мониторинга для целевого хоста.
HOST-024C103F7F86A290
dt.entity.multiprotocol_monitor
string Идентификатор монитора (идентификатор сущности мониторинга).
MULTIPROTOCOL_MONITOR-3F6C9D500287BBAF
dt.entity.synthetic_location
string Идентификатор синтетической локации (идентификатор сущности мониторинга).
SYNTHETIC_LOCATION-A4F834D72840EFC1
dt.maintenance_window_ids
array UUID окон обслуживания.
c715d677-eb1b-3e1b-8dbc-db06cad5b8eb
dt.security_context
string Контекст безопасности используется в разрешениях доступа для ограничения видимости.
mySecurityContext
dt.synthetic.monitor.id
string Идентификатор синтетического монитора.
SYNTHETIC_TEST-1234567890ABCDEF
dt.synthetic.monitored_entity_ids
array Идентификаторы отслеживаемых сущностей.
APPLICATION-EA7C4B59F27D43EB
dt.synthetic.step.id
string Идентификатор шага.
SYNTHETIC_TEST_STEP-1234567890ABCDEF
interpolated
boolean Информация о том, была ли доступность монитора интерполирована.
false
monitor.name
string Название монитора.
My NAM monitor
primary_tags.__key__
string Определяемые пользователем основные теги Grail.
tag-value
request.id
numeric Порядковый идентификатор запроса.
2
request.target_address
string Адрес целевой сущности.
54.171.216.19
request.type
string Тип запроса.
icmp, tcp
result.state
string Состояние результата выполнения монитора.
SUCCESS, FAIL
result.status.code
numeric Числовое представление статуса выполнения.
0, 1401
result.status.message
string Статус выполнения.
HEALTHY, CONSTRAINT_VIOLATED
step.id
numeric Порядковый идентификатор шага.
1
step.name
string Название шага.
My step
step.sequence_number
numeric Номер последовательности шага (начиная с 0).
0

Метрики монитора (для всех мониторов сетевой доступности)

Название Тип Размеры Описание
dt.synthetic.multi_protocol.availability
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.availability
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, interpolated
Доступность, рассчитанная на основе статуса выполнения визитов: 100 % для кода 0: HEALTHY, SCRIPT_FINISH, SKIPPED; 0 % для кодов ошибок, таких как 1401 — CONSTRAINT_VIOLATED.
dt.synthetic.multi_protocol.execution_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.executionTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context
Продолжительность между началом и окончанием выполнения визита (в миллисекундах). Метрика доступна только если выполнение визита состоялось; необходимо наличие как времени начала, так и времени окончания.
dt.synthetic.multi_protocol.executions
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.executions
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, dt.maintenance_window_ids, result.state, result.status.code, result.status.message
Количество выполнений монитора за время.
dt.synthetic.multi_protocol.success_rate
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.successRate
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context
Отношение выполненных шагов без ошибок (успешных и пропущенных) ко всем выполненным шагам. Учитываются только шаги, которые были фактически выполнены, а не запланированные. Например, при 2 успешных шагах, 1 ошибочном и 8 не запущенных отношение составляет 2/3, или 66,67 %.

Метрики шагов (для всех мониторов сетевой доступности)

Название Тип Размеры Описание
dt.synthetic.multi_protocol.step.availability
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.step.availability
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.type
Доступность, рассчитанная на основе статуса выполнения шагов: 100 % для кода 0: HEALTHY, SCRIPT_FINISH, SKIPPED; 0 % для кодов ошибок, таких как 1401 — CONSTRAINT_VIOLATED.
dt.synthetic.multi_protocol.step.execution_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.step.executionTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.type
Продолжительность между началом и окончанием выполнения шага (в миллисекундах). Метрика доступна только если выполнение шага состоялось и имеет определённое время окончания; поэтому недоступна для пропущенных шагов.
dt.synthetic.multi_protocol.step.executions
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.step.executions
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.type, result.state, result.status.code, result.status.message
Количество выполнений шагов за время.
dt.synthetic.multi_protocol.step.success_rate
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.step.successRate
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.type
Отношение выполненных запросов без ошибок ко всем выполненным запросам. Если у шага нет выполненных запросов (поскольку ни один не соответствует его определению в конфигурации монитора), возвращается значение 100 %. Например, при 2 успешных запросах и 1 ошибочном отношение составляет 2/3, или 66,67 %.

Метрики запросов (для всех мониторов сетевой доступности)

Название Тип Размеры Описание
dt.synthetic.multi_protocol.request.availability
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.request.availability
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Доступность, рассчитанная на основе статуса выполнения запросов: 100 % для кода 0: HEALTHY, SCRIPT_FINISH, SKIPPED; 0 % для кодов ошибок, таких как 1401 — CONSTRAINT_VIOLATED.
dt.synthetic.multi_protocol.request.executions
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.request.executions
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type, result.state, result.status.code, result.status.message
Количество выполнений запросов за время.

Метрики ICMP-мониторов

Название Тип Размеры Описание
dt.synthetic.multi_protocol.icmp.packets_received
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.icmp.packetsReceived
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Количество пакетов, успешно возвращённых.
dt.synthetic.multi_protocol.icmp.packets_sent
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.icmp.packetsSent
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Общее количество отправленных пакетов.
dt.synthetic.multi_protocol.icmp.request_execution_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.icmp.requestExecutionTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Продолжительность между началом и окончанием обработки запроса (в миллисекундах). Эта метрика предоставляется всегда, даже если фактическое выполнение запроса не состоялось (например, из-за исключений или тайм-аутов). Диагностическая метрика — позволяет проверить время выполнения внешнего процесса ping.
dt.synthetic.multi_protocol.icmp.round_trip_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.icmp.roundTripTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Время кругового пути (Round-Trip Time) для полученных пакетов.
dt.synthetic.multi_protocol.icmp.success_rate
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.icmp.successRate
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type
Отношение полученных пакетов к отправленным. Не учитывает настроенное количество пакетов для отправки. Например, из 10 пакетов для отправки, если 5 было отправлено и 4 получено, отношение составляет 4/5, или 80,00 %.

Размеры TCP-мониторов

Название Тип Описание Пример значения
request.tcp_port_number
string Номер порта TCP-запроса, указанный в конфигурации монитора.
665

Метрики TCP-мониторов

Название Тип Размеры Описание
dt.synthetic.multi_protocol.tcp.connection_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.tcp.connectionTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type, request.tcp_port_number
Продолжительность между временем начала (создание сокета и соединение) и временем окончания (когда соединение успешно установлено) в миллисекундах. Метрика доступна только если выполнение запроса завершилось без исключений или тайм-аутов и имеет определённое время окончания.

Размеры DNS-мониторов

Название Тип Описание Пример значения
request.dns_record_type
string Тип DNS-записи, запрашиваемой запросом, указанный в конфигурации.
A, AAAA, CNAME

Метрики DNS-мониторов

Название Тип Размеры Описание
dt.synthetic.multi_protocol.dns.resolution_time
(последняя версия Ключ-АСТРОМ)
builtin:synthetic.multiProtocol.dns.resolutionTime
(предыдущая версия Ключ-АСТРОМ)
numeric
dt.synthetic.monitor.id, dt.entity.multiprotocol_monitor, monitor.name, dt.synthetic.step.id, step.name, step.sequence_number, dt.entity.synthetic_location, dt.entity.host (only for monitors with filter defined), dt.synthetic.monitored_entity_ids, primary_tags.__key__, dt.security_context, step.id, request.id, request.target.address, request.type, request.dns_record_type
Продолжительность между началом и окончанием запроса к DNS-серверу в миллисекундах. Метрика доступна только если выполнение запроса состоялось (без исключений или тайм-аутов) и имеет определённое время окончания.

Запросы DQL для извлечения данных

Используйте запросы DQL для извлечения данных с метриками и размерностями.

Следующие примеры используют Notebooks для демонстрации работы с результатами мониторов сетевой доступности. В них метрики результатов используются как отправная точка для изучения возможностей извлечения и интерпретации данных с помощью DQL.

Статус сущности хоста для ICMP-запросов

Монитор MULTIPROTOCOL_MONITOR-5C2F92334DF71A90 выполняет ICMP-запросы и фильтрует отслеживаемые хосты с помощью "targetFilter": "hostGroup == e2e-synthetic-private-location" (что разрешается примерно в 26 хостов).

Используя метрику dt.synthetic.multi_protocol.request.executions и разбивая её по размерностям dt.entity.host и result.status.message, мы можем отобразить статус подключения к конкретной отслеживаемой сущности хоста в этой группе хостов. Некоторые хосты не соответствуют ожидаемому уровню успешности; вместо HEALTHY их запросы помечаются как CONSTRAINT_VIOLATED.

timeseries status = avg(dt.synthetic.multi_protocol.request.executions),
by:{dt.entity.host, result.status.message},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-5C2F92334DF71A90"

Количество отправленных и полученных ICMP-пакетов

Монитор MULTIPROTOCOL_MONITOR-548C3CD54183CED9 выполняет ICMP-запросы к хостам с явно определёнными IP-адресами: 18.x.x.x, 10.x.x.x и 34.x.x.x. Каждый из этих IP-адресов сопоставлен с отдельным хостом.

Мы используем сумму метрик dt.synthetic.multi_protocol.icmp.packets_sent и dt.synthetic.multi_protocol.icmp.packets_received, чтобы получить представление о том, сколько пакетов было отправлено и получено.

Разбиваем результаты по размерности request.target_address и фильтруем данные только для 18.x.x.x и 10.x.x.x.

Для 18.x.x.x получено столько же пакетов, сколько было отправлено, но для 10.x.x.x все пакеты потеряны и ни один не получен.

timeseries {
  packets_sent = sum(dt.synthetic.multi_protocol.icmp.packets_sent),
  packets_received = sum(dt.synthetic.multi_protocol.icmp.packets_received)
},
by:{request.target_address},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-548C3CD54183CED9"
    AND (
        request.target_address == "18.x.x.x"
        OR request.target_address == "10.x.x.x"
    )

Статус цели для TCP-запросов

Монитор MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 выполняет TCP-запросы к хостам из группы хостов, которая разрешается в IP-адреса 18.x.x.x, 34.x.x.x и 44.x.x.x.

Чтобы отобразить статус TCP-подключения для пары IP-порт, мы используем метрику dt.synthetic.multi_protocol.request.executions и разбиваем её по следующим размерностям:

  • request.target_address
  • request.tcp_port_number
  • result.status.message

В следующем примере:

  • На каждом хосте открыты порты 22 (SSH) и 8080 (HTTP-сервер), и каждое подключение к хостам на этих портах завершается успешно со статусом HEALTHY.
  • Ни один сервис не использует стандартный HTTP-порт 80. Поэтому подключения ко всем хостам на этом порте завершаются ошибкой со статусом ошибки TCP-сокета.

Обратите внимание, что результаты этого запроса можно ограничить только успешными запросами с помощью фильтра по размерности result.status.code (code == 0).

timeseries status = sum(dt.synthetic.multi_protocol.request.executions),
by: {request.target_address, request.tcp_port_number, result.status.message},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"
//  and result.status.code == 0

Время TCP-подключения к целевому порту

Монитор MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 выполняет TCP-запросы к хостам из группы хостов, которая разрешается в IP-адреса 18.x.x.x, 34.x.x.x и 44.x.x.x.

В следующем примере мы разбиваем результаты по идентификаторам отслеживаемых сущностей хостов.

Чтобы проверить типичное время, затрачиваемое на успешное подключение к целевому порту для хоста, мы используем среднее значение метрики dt.synthetic.multi_protocol.tcp.connection_time с разбивкой по размерностям:

  • dt.entity.host
  • request.target_address
  • request.tcp_port_number

Открыты только порты 22 (SSH) и 8080 (HTTP-сервер), и только для этих портов доступна метрика dt.synthetic.multi_protocol.tcp.connection_time. Хосты фактически находятся в разных географических локациях (Огайо, Орегон и Северная Вирджиния в США), поэтому разница во времени подключения ожидаема.

timeseries duration = avg(dt.synthetic.multi_protocol.tcp.connection_time),
by:{dt.entity.host, request.target_address, request.tcp_port_number},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"

Статусы выполнения

Все мониторы сетевой доступности

Код / Сообщение Пример Описание
0 HEALTHY
Всё в порядке.
-1 UNEXPECTED_ERROR
Resource saturation Неожиданная проблема, обычно связанная с компонентами выполнения монитора.
1401 CONSTRAINT_VIOLATED
Условия ограничений, определённые в конфигурации монитора, не были выполнены.
1604 VALIDATION_ERROR
Обнаружена некорректная конфигурация монитора.
12013 UNKNOWN_HOST
Error in the hostname Не удаётся определить IP-адрес хоста. Возможные причины: неверное имя хоста, недоступность DNS-сервера, проблемы с кешем DNS, вмешательство брандмауэра или прокси.
12033 Execution timeout
Server operates slowly Тайм-аут выполнения запроса. Возможные причины: проблемы с сетью, медленный или не отвечающий сервер или сервис, блокировка подключения правилами брандмауэра, слишком маленький тайм-аут.

Статусы выполнения TCP-мониторов

Код / Сообщение Пример Описание
22000 TCP socket connection error
Service is not listening on a specified port. Этот статус означает, что хост был идентифицирован и доступен, но TCP-соединение не может быть установлено или было неожиданно закрыто. Предоставляется дополнительное объяснение точного исключения. Статус используется, если во время попытки подключения возвращается java.net.SocketException. Возможные причины: сервис не прослушивает указанный порт, сервис достиг предела ресурсов или подключений, сервис стал недоступен во время процесса установки сокетного соединения.