Метрики 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_addressrequest.tcp_port_numberresult.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.hostrequest.target_addressrequest.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. Возможные причины: сервис не прослушивает указанный порт, сервис достиг предела ресурсов или подключений, сервис стал недоступен во время процесса установки сокетного соединения.
|