Мониторы доступности сети в классическом режиме
Предварительный просмотр
Мониторинг доступности сети позволяет создавать синтетические мониторы доступности сети типов ICMP, TCP или DNS.
API Synthetic - Network availability monitors является частью Environment API v2. Для получения дополнительной информации см. API Explorer.
Ограничения
Количество запросов
Максимальное количество запросов, выполняемых одним монитором доступности сети, составляет 1000.
Если монитор использует целевой фильтр, может оказаться невозможным точно предсказать количество запросов до их выполнения (например, при мониторинге всей группы хостов или подсети с широким диапазоном IP-адресов). В таких случаях ограничение применяется, когда целевой фильтр преобразуется в фактический список адресов до выполнения монитором.
Операционная система
Мониторы доступности сети не поддерживаются на хостах Windows с включенным синтетическим режимом АктивногоШлюза.
Тип развертывания
Поддержка мониторов доступности сети доступна только в частных синтетических локациях.
Контейнерные площадки
Мониторы доступности сети поддерживаются в контейнеризированных развертываниях АктивногоШлюза с поддержкой Synthetic, но для этого требуются дополнительные разрешения.
Мониторы ICMP используют исполняемый файл ping, для работы которого требуется набор прав доступа CAP_NET_RAW, установленный для контейнера, выполняющего запросы (synthetic-vuc). Кроме того, свойство allowPrivilegeEscalation в securityContext для этого контейнера должно быть установлено в значение true, поскольку процесс, запускающий исполняемый файл ping, по умолчанию не имеет необходимых привилегий.
Полный код securityContext для контейнера synthetic-vuc с включенными мониторами доступности сети должен выглядеть следующим образом.
securityContext:
readOnlyRootFilesystem: true
privileged: false
allowPrivilegeEscalation: true
runAsNonRoot: true
capabilities:
drop: ["all"]
add: ["NET_RAW"]
|
POST создать многопротокольный монитор
Схема монитора SyntheticMultiProtocolMonitorUpdateDto
Необходимый
| Параметр |
Тип |
Описание
|
name* |
string |
Название монитора
|
type* |
string |
Тип синтетического монитора. Эта конечная точка поддерживает только многопротокольные мониторы. Элемент может содержать значение MULTI_PROTOCOL.
|
frequencyMin* |
integer |
Частота работы монитора в минутах
|
locations* |
list |
Места, к которым прикреплен наблюдатель
|
active |
boolean |
Значение по умолчанию — true. Если false, монитор отключен.
|
steps* |
list |
Этапы мониторинга. См. схему steps.
|
syntheticMonitorOutageHandlingSettings |
list |
Конфигурация обработки сбоев мониторинга. См. схему syntheticMonitorOutageHandlingSettings.
|
tags |
list |
Набор меток, присваиваемых монитору вручную. Здесь можно указать только ключ (обязательно) и значение (необязательно) метки.
|
steps схема SyntheticMultiProtocolMonitorStepDto
| Параметр |
Тип |
Описание
|
name* |
string |
Название шага
|
requestType* |
string |
Тип запроса. Элемент может содержать значения ICMP, TCP, или DNS
|
targetFilter |
string |
Фильтр контролируемых хостов
|
targetList* |
list |
Список целевых объектов (адреса, IP-адреса)
|
properties* |
map<string, string> |
Свойства, применяемые ко всем запросам на данном этапе.
|
constraints* |
list |
Список ограничений, применяемых к данному шагу и всем запросам на этом шаге. См. схему constraints.
|
requestConfigurations* |
list |
Запрос конфигураций. См. схему requestConfigurations.
|
requestConfigurations схема SyntheticMultiProtocolRequestConfigurationDto
| Параметр |
Тип |
Описание
|
constraints |
list |
Список ограничений, применяемых ко всем запросам в схеме constraints.
|
constraints схема SyntheticMultiProtocolMonitorConstraintDto
| Параметр |
Тип |
Описание
|
type* |
string |
Тип ограничения
|
properties* |
map<string, string> |
Свойства ограничения. Примеры см. в разделе «Ограничения конфигурации скрипта».
|
syntheticMonitorOutageHandlingSettings схема SyntheticMonitorOutageHandlingSettingsDto
| Параметр |
Тип |
Описание
|
globalConsecutiveOutageCountThreshold |
integer |
Количество последовательных отказов для всех местоположений
|
globalOutages* |
boolean |
Сгенерируйте сообщение о проблеме и отправьте оповещение, если монитор недоступен в течение одного globalConsecutiveOutageCountThreshold или нескольких последовательных запусков во всех настроенных местах.
|
localConsecutiveOutageCountThreshold |
integer |
Количество последовательных отказов для любого местоположения
|
localLocationOutageCountThreshold |
integer |
Количество неисправных мест
|
localOutages* |
boolean |
Сгенерируйте сообщение о проблеме и отправьте оповещение, если монитор недоступен в течение localConsecutiveOutageCountThreshold или более последовательных выполнений в localLocationOutageCountThreshold или более местах.
|
Примеры
Пример монитора с ICMP-запросами
{
"name": "Пример монитора NAM с шагом ICMP",
"type": "MULTI_PROTOCOL",
"frequencyMin": "1",
"locations": [
"SYNTHETIC_LOCATION-8A91FE7982E24C06"
],
"active": "true",
"steps": [
{
"name": "ICMP шаг 1",
"requestType": "ICMP",
"targetFilter": null,
"targetList": [
"127.0.0.1",
"127.0.0.2",
"127.0.0.3",
"127.0.0.4"
],
"constraints": [
{
"type": "SUCCESS_RATE_PERCENT",
"properties": {
"value": "49",
"operator": ">"
}
}
],
"properties": {
"ICMP_NUMBER_OF_PACKETS": "3",
"ICMP_TIMEOUT_FOR_REPLY": "PT1S"
},
"requestConfigurations": [
{
"constraints": [
{
"type": "ICMP_SUCCESS_RATE_PERCENT",
"properties": {
"value": "100"
}
}
]
}
]
}
],
"syntheticMonitorOutageHandlingSettings": {
"globalOutages": true,
"localOutages": false,
"globalConsecutiveOutageCountThreshold": 1,
"localLocationOutageCountThreshold": null,
"localConsecutiveOutageCountThreshold": null
},
"tags": [
{
"key": "my-icmp-monitor"
},
{
"key": "environment",
"value": "UAT"
}
]
}
|
Пример монитора с TCP-запросами
{
"name": "Пример монитора NAM с шагом TCP",
"type": "MULTI_PROTOCOL",
"frequencyMin": "1",
"locations": [
"SYNTHETIC_LOCATION-8A91FE7982E24C06"
],
"active": "true",
"steps": [
{
"name": "TCP шаг 1",
"requestType": "TCP",
"targetFilter": "hostGroup == my-host-group0 and ipRange == 45-55.*.*.*",
"targetList": [],
"constraints": [
{
"type": "SUCCESS_RATE_PERCENT",
"properties": {
"value": "66",
"operator": ">="
}
}
],
"properties": {
"TCP_PORT_RANGES": "22,443,5501-5509"
},
"requestConfigurations": [
{
"constraints": []
}
]
}
],
"syntheticMonitorOutageHandlingSettings": {
"globalOutages": true,
"localOutages": false,
"globalConsecutiveOutageCountThreshold": 1,
"localLocationOutageCountThreshold": null,
"localConsecutiveOutageCountThreshold": null
},
"tags": [
{
"key": "my-tcp-monitor"
},
{
"key": "environment",
"value": "UAT"
}
]
}
|
Пример монитора с DNS-запросами
{
"name": "Пример монитора NAM с шагом DNS",
"type": "MULTI_PROTOCOL",
"frequencyMin": 1,
"locations": [
"SYNTHETIC_LOCATION-6F3084B1ECD81DE1"
],
"active": true,
"steps": [
{
"name": "Шаг DNS 1",
"requestType": "DNS",
"targetFilter": null,
"targetList": [
"dynatrace.com"
],
"constraints": [
{
"type": "SUCCESS_RATE_PERCENT",
"properties": {
"value": "90",
"operator": ">="
}
}
],
"properties": {
"DNS_RECORD_TYPES": "A,AAAA",
"DNS_SERVER": "10.102.40.11"
},
"requestConfigurations": [
{
"constraints": [
{
"type": "DNS_STATUS_CODE",
"properties": {
"status": "NOERROR",
"operator": "="
}
}
]
}
]
}
],
"syntheticMonitorOutageHandlingSettings": {
"globalOutages": true,
"localOutages": false,
"globalConsecutiveOutageCountThreshold": 1,
"localLocationOutageCountThreshold": null,
"localConsecutiveOutageCountThreshold": null
},
"tags": [
{
"key": "my-dns-monitor"
},
{
"key": "environment",
"value": "UAT"
}
]
}
|
Доступные параметры конфигурации скрипта
Примеры форматов продолжительности
- 100 миллисекунд =
PT0.1S
- 500 миллисекунд =
PT0.5S
- 1 секунда =
PT1S
- 10 секунд =
PT10S
- 90 секунд =
PT1M30S
- 1 минута =
PT1M
- 2 минуты =
PT2M
- 5 минут =
PT5M
ICMP
| Имя |
Тип |
Описание |
Значения
|
EXECUTION_TIMEOUT |
string:duration |
Истекло время ожидания выполнения одного запроса. |
Допустимая продолжительность, например, PT1S значение по умолчанию = ICMP_NUMBER_OF_PACKETS × ICMP_TIMEOUT_FOR_REPLY + defaultTimeout (defaultTimeout = 1s) Диапазон = 0–PT2M
|
ICMP_NUMBER_OF_PACKETS |
integer |
Количество эхо-запросов. Эквивалентами процесса Ping являются параметры -c (Linux) и -n (Windows). |
Значение по умолчанию = 1 Диапазон = 1–10
|
ICMP_PACKET_SIZE |
integer |
Эквивалентами параметров процесса Ping являются параметры -s (Linux) и -l (Windows). |
Значение по умолчанию = 32 Диапазон = 0–65500
|
ICMP_TIME_TO_LIVE |
integer |
Эквивалентами параметров Time to live (TTL) Ping являются параметры -t (Linux) и -i (Windows). |
Диапазон = 1–255
|
ICMP_TYPE_OF_SERVICE |
integer |
Эквивалентами процесса service Ping являются параметры -Q (Linux) и -v (Windows). |
Диапазон = 0–255
|
ICMP_DO_NOT_FRAGMENT_DATA |
boolean |
Не фрагментировать. Эквивалентами процесса Ping являются параметры -M do (Linux) и -f (Windows). |
true или false
|
ICMP_TIMEOUT_FOR_REPLY |
string:duration |
Дождитесь ответного сообщения с эхо-сигналом. Эквивалентами процесса Ping являются параметры -W (Linux) и -w (Windows). |
Допустимая длительность, например, PT1S в миллисекундах в Windows; PT0.1S принимаются значения, подобные этому. В секундах в Linux; PT1S обязательны значения, подобные этому. Значение по умолчанию = PT1S Диапазон = PT1S–PT2S
|
Интервал передачи пакетов задан жестко 200ms, что соответствует минимальному значению, допустимому для параметра -i команды Linux ping без необходимости предоставления повышенных привилегий.
TCP
| Имя |
Тип |
Описание |
Значения
|
TCP_PORT_RANGES |
string |
Список диапазонов портов, разделенных запятыми.
Один диапазон может представлять собой либо один номер порта, либо диапазон портов, определяемый как два номера портов, разделенных дефисом.
Итоговый список запросов для выполнения представляет собой произведение всех определенных портов и целевых хостов. Например, если на этапе заданы два целевых хоста (1.1.1.1 и 2.2.2.2) и диапазон из двух портов (80-81), то в рамках такого этапа выполняется четыре запроса.
- Запрос в
1.1.1.1 порт 80
- Запрос в
1.1.1.1 порт 81
- Запрос в
2.2.2.2 порт 80
- Запрос в
2.2.2.2 порт 81
|
Примеры значений:
8080
8000-9000
80,443,90-100
|
EXECUTION_TIMEOUT |
string:duration |
Таймаут соединения |
Например, срок действия. PT1S
Таймаут по умолчанию = 1s
Диапазон = 0–PT2M
|
DNS
| Имя |
Тип |
Описание |
Значения
|
DNS_RECORD_TYPES |
string |
Список типов DNS-записей, разделенных запятыми.
Итоговый список выполненных запросов представляет собой произведение всех определенных типов записей и целевых хостов. Например, если шаг содержит два типа записей (A, AAAA) и два целевых хоста (host1.domain.com и host2.domain.com), то в рамках такого шага выполняется четыре запроса.
- Запрос на предоставление
A содержимого записи для host1.domain.com
- Запрос на предоставление
AAAA содержимого записи для host1.domain.com
- Запрос на предоставление
A содержимого записи для host2.domain.com
- Запросить или
AAAA записать содержимое для host2.domain.com
|
Примеры значений:
|
EXECUTION_TIMEOUT |
string:duration |
Таймаут соединения |
Например, срок действия. PT1S
Таймаут по умолчанию = 2s
Диапазон = 0–PT2M
|
DNS_SERVER |
string |
Адрес DNS-сервера для запроса, с необязательным указанием порта.
Если указано имя хоста, оно преобразуется в IP-адрес с использованием DNS-сервера по умолчанию системы.
Если указан только хост, используется порт по умолчанию 53.
Если значение не указано, используются DNS-сервер и порт по умолчанию, указанные в системе.
|
Действительный адрес, например:
1.1.1.1
8.4.4.8:53
dns.google
dns9.quad9.net:53
|
DNS_FORCE_TCP |
boolean |
По умолчанию запрос к DNS-серверу осуществляется по протоколу UDP, если только сообщение не слишком велико для размещения в UDP-дейтаграмме. Эта опция позволяет указать вместо этого протокол TCP. |
true или false
Значение по умолчанию = false
|
Ограничения конфигурации скрипта
Ограничения описывают условия успеха.
Ограничения на уровне шага
SUCCESS_RATE_PERCENT
Процент успешных запросов на этапе
Фактический процент успешных запросов = отношение количества запросов, которые не завершились неудачей (успешные + пропущенные запросы), ко всем запросам.
Например, если 1 запрос не удался, 2 запроса пропущены, а 3 запроса оказались успешными, то соотношение составит (2+3)/6 = 83,33%.
| Атрибут |
Тип |
Описание |
Значения
|
operator |
string |
Оператор сравнения для сопоставления фактического и ожидаемого значения. |
>= или значение по умолчанию >= <= != >=
|
value |
integer |
Ожидаемое значение показателя успешности для использования в качестве эталона сравнения. |
Значение по умолчанию = 0 Диапазон = 0–100
|
{
"type": "SUCCESS_RATE_PERCENT",
"properties": {
"value": "83",
"operator": ">"
}
}
|
Ограничения запросов ICMP
ICMP_SUCCESS_RATE_PERCENT
Процент успешных пингов (эхо-запросов) в запросе
Фактический процент успешности = отношение количества полученных пакетов к количеству отправленных пакетов
Например, если было отправлено 5 пакетов и получено 4 пакета, то соотношение составит 4/5 = 80,00%.
| Атрибут |
Тип |
Описание |
Значения
|
operator |
string |
Оператор сравнения для сопоставления фактического и ожидаемого значения. |
>= или значение по умолчанию >= <= != >=
|
value |
integer |
Ожидаемое значение показателя успешности для использования в качестве эталона сравнения. |
Значение по умолчанию = 0 Диапазон = 0–100
|
{
"type": "ICMP_SUCCESS_RATE_PERCENT",
"properties": {
"value": "79",
"operator": ">"
}
}
|
Ограничения TCP-запросов
TCP_PORT_UNREACHABLE
Это особое ограничение, которое инвертирует статус выполнения TCP-запросов. Его следует применять, если ожидается, что проверяемый порт недоступен.
Данное ограничение не имеет параметров конфигурации.
Если это ограничение применяется:
- Когда после попытки подключения обнаруживаются статусы
Execution timeout (12033) и TCP socket connection error (22000), они интерпретируются как HEALTHY (0).
- Статус
HEALTHY (0) соединения интерпретируется как CONSTRAINT_VIOLATED (1401) результат ожидаемого сбоя.
- Статусы
UNEXPECTED_ERROR (-1) и UNKNOWN_HOST (12013) сохраняются и отображаются в неизменном виде.
{
"type": "TCP_PORT_UNREACHABLE",
"properties": {}
}
|
Ограничения на DNS-запросы
DNS_STATUS_CODE
Проверяет код состояния ответа DNS, который указывает, был ли запрос успешным или нет.
| Атрибут |
Тип |
Описание |
Значения
|
operator |
string |
Оператор сравнения для сопоставления фактического и ожидаемого значения. |
= или != значение по умолчанию =
|
statusCode |
integer |
Числовой код, указывающий на статус ответа DNS. Эксклюзивно с status |
Допустимый код, например: 0 Значение по умолчанию = 0 Диапазон = 0–65535
|
status |
string |
Мнемоническое обозначение, представляющее код состояния DNS. Эксклюзивно с statusCode |
Допустимый статус, например, NOERROR значение по умолчанию = NOERROR
|
{
"type": "DNS_STATUS_CODE",
"properties": {
"operator": "=",
"statusCode": "0"
}
}
|
{
"type": "DNS_STATUS_CODE",
"properties": {
"operator": "=",
"status": "NOERROR"
}
}
|
DNS_IP_ADDRESS
Проверяет значение IP-адреса, возвращаемое в записях A/AAAA.
| Атрибут |
Тип |
Описание |
Значения
|
quantifier |
string |
Сколько записей должно соответствовать условию, чтобы ограничение было выполнено? |
any (как минимум один) или all значение по умолчанию = any
|
operator |
string |
Оператор сравнения |
= или значения по умолчанию = - для адреса - != для подсети in
|
recordType |
string |
тип записи DNS |
A или AAAA значения по умолчанию: - A если адрес/подсеть IPv4 - AAAA если адрес/подсеть IPv6
|
address |
string |
IPv4-адрес в точечной нотации или IPv6-адрес в нотации с двоеточием. Только у операторов =, != эксклюзивно для subnet |
Действительный адрес, например, 192.168.0.1, 2001:db8::2:1
|
subnet |
string |
Подсеть IPv4 в точечной нотации или подсеть IPv6 в нотации с двоеточием, за которой следует длина префикса сети. Только с оператором. in Исключительно с address |
Допустимая подсеть, например, 172.22.80.0/20, 2001:db8:85a3::0/48
|
{
"constraintType": "DNS_IP_ADDRESS",
"attributes": {
"quantifier": "any",
"recordType": "A",
"operator": "=",
"address": "54.208.9.71"
}
}
|
{
"constraintType": "DNS_IP_ADDRESS",
"attributes": {
"quantifier": "all",
"recordType": "A",
"operator": "in",
"subnet": "10.102.44.0/24"
}
}
|
DNS_RECORD_COUNT
Проверяет количество записей заданного типа.
| Атрибут |
Тип |
Описание |
Значения
|
operator |
string |
Оператор сравнения |
>= или значение по умолчанию >= <= != >
|
recordType |
string |
тип записи DNS |
Допустимый тип записи, например: MX
|
value |
integer |
Ожидаемое количество записей |
Допустимое количество, например. 2 Значение по умолчанию = 0 Диапазон = 0–65535
|
{
"constraintType": "DNS_RECORD_COUNT",
"attributes": {
"recordType": "A",
"operator": ">",
"value": "0"
}
}
|
DNS_TIME_TO_LIVE
Проверяет время жизни (TTL) записей заданного типа.
| Атрибут |
Тип |
Описание |
Значения
|
quantifier |
string |
Сколько записей должно соответствовать условию, чтобы ограничение было выполнено? |
any (как минимум один) или all значение по умолчанию = any
|
operator |
string |
Оператор сравнения |
>= или значение по умолчанию >= <= != >
|
recordType |
string |
тип записи DNS |
Допустимый тип записи, например: NS
|
value |
integer |
Ожидаемое время жизни (TTL) в секундах |
Допустимое значение TTL, например, 3600 значение по умолчанию = 0 Диапазон = 0–2147483647
|
{
"constraintType": "DNS_TIME_TO_LIVE",
"attributes": {
"quantifier": "any",
"recordType": "A",
"operator": ">=",
"value": "30"
}
}
|
DNS_RECORD_VALUE
Проверяет исходное значение записей заданного типа, при этом формат значения зависит от типа записи.
Ограничения обрабатывают все записи в ответе, независимо от того, к какому разделу они относятся (answer, authority, или additional).
| Атрибут |
Тип |
Описание |
Значения
|
quantifier |
string |
Сколько записей должно соответствовать условию, чтобы ограничение было выполнено? |
any (как минимум один) или all значение по умолчанию = any
|
operator |
string |
Оператор сравнения: contains проверяет, содержит ли значение записи заданную последовательность; matches проверяет, соответствует ли значение записи заданному шаблону. |
contains или matches значение по умолчанию = contains
|
recordType |
string |
тип записи DNS |
Допустимый тип записи, например: TXT
|
sequence |
string |
Последовательность символов, которую должно содержать значение записи. Только с оператором. contains Исключая с pattern |
Непустая последовательность, например, ms71815323
|
pattern |
string |
Шаблон для сопоставления со значением записи, где * обозначает 0 или более символов. Только с оператором. matches Исключительно с sequence |
Например, непустой шаблон "v=spf1 include:*
|
{
"constraintType": "DNS_RECORD_VALUE",
"attributes": {
"quantifier": "any",
"recordType": "TXT",
"operator": "contains",
"sequence": "ms71815323"
}
}
|
{
"constraintType": "DNS_RECORD_VALUE",
"attributes": {
"quantifier": "any",
"recordType": "TXT",
"operator": "matches",
"pattern": "\"v=spf1 include:*"
}
}
|
Целевой фильтр
Фильтр целевых устройств позволяет фильтровать хосты, отслеживаемые Ключ-АСТРОМ, или пользовательские устройства, имеющие IP-адреса. С помощью этого фильтра можно выбрать два типа целевых устройств на основе следующих критериев:
- тип (
type)
- теги (
tag)
- Идентификатор хоста (
hostId) (устарело, работает только для хостов, используйте вместо него идентификатор сущности)
- Идентификатор сущности (
entityId)
- группы хостов (
hostGroup)
- зоны управления (
managementZone)
- IP-маска (
ipMask)
- Диапазон IP-адресов (
ipRange)
- экземпляр группы процессов (
processGroupInstance)
- сетевые интерфейсы конкретного пользовательского устройства (
interfacesOf)
- имя расширения (
extensionName)
Диапазон IP-адресов и маска IP-адреса являются фильтрами для хостов или устройств, известных как сервер Ключ-АСТРОМ, и не позволяют сканировать сеть.
Синтаксис
- Логические операторы:
AND и OR (регистронезависимо)
- Скобки
- Операторы выражений:
== и !=
- Названия и значения тегов
- Отрицание ("не"):
!=.
- Подстановочный знак:
* (выбирает все хосты, отслеживаемые Ключ-АСТРОМ)
Примеры
tag == tagname or hostGroup == group1
(tag == tagname1:tagvalue1 or tag == tagname1:tagvalue2) and (hostGroup == group1 or managementZone == zone1)
tag != tagname1 and tag != tagname2:tagvalue
tag == tagname:tagvalue and (managementZone == zone1 or managementZone == zone2)
tag == "[tagwithbrackets and spaces]":"value, with, commas, and, spaces"
ipMask == 127.0.0.1/24
hostId == HOST-000123
type == CUSTOM_DEVICE and ipMask == 172.17.0.2/24
entityId == HOST-045BFCDA3F507D30 or entityId == CUSTOM_DEVICE-13081D4B74B3E2C8
type == HOST and processGroupInstance == PROCESS_GROUP_INSTANCE-07611353BB98908C
type == CUSTOM_DEVICE and interfacesOf == CUSTOM_DEVICE-E1A88946BF04D5E7
type == CUSTOM_DEVICE and extensionName == "Docker devices"
Метрики и параметры
Размеры (все мониторы доступности сети)
| Имя |
Тип |
Описание |
Пример значения
|
multi_protocol.request.type |
string |
Тип запроса |
icmp, tcp
|
multi_protocol.request.target_address |
string |
Адрес целевого объекта |
54.171.216.19
|
dt.entity.host |
string |
Если имеется, идентификатор отслеживаемого объекта для целевого объекта. |
HOST-024C103F7F86A290
|
dt.entity.synthetic_location |
string |
Синтетический идентификатор местоположения (идентификатор отслеживаемого объекта) |
SYNTHETIC_LOCATION-A4F834D72840EFC1
|
dt.entity.multiprotocol_monitor |
string |
Идентификатор монитора (идентификатор отслеживаемого объекта) |
MULTIPROTOCOL_MONITOR-3F6C9D500287BBAF
|
multi_protocol.step.id |
numeric |
Последовательный идентификатор шага |
1
|
multi_protocol.request.id |
numeric |
Запросить последовательный идентификатор |
2
|
multi_protocol.result.status |
string |
Статус выполнения |
HEALTHY, CONSTRAINT_VIOLATED
|
multi_protocol.result.status.code |
numeric |
Числовое представление состояния выполнения |
0, 1401
|
Отслеживание метрик (всех мониторов доступности сети)
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.execution_time / builtin:synthetic.multiProtocol.executionTime |
numeric |
dt.entity.synthetic_location dt.entity.multiprotocol_monitor |
Продолжительность между началом и окончанием выполнения визита (в миллисекундах). Метрика доступна только в том случае, если визит действительно состоялся; должны быть доступны как время начала, так и время окончания.
|
dt.synthetic.multi_protocol.success_rate / builtin:synthetic.multiProtocol.successRate |
numeric |
dt.entity.synthetic_location dt.entity.multiprotocol_monitor |
Отношение выполненных шагов, которые не завершились с ошибкой (успешные + пропущенные), ко всем выполненным шагам. Мы учитываем шаги, которые были фактически выполнены, а не шаги, которые планировалось выполнить. Например, при 2 успешных шагах, 1 неудачном шаге и 8 не начатых шагах, отношение составляет 2/3, или 66,67%.
|
dt.synthetic.multi_protocol.availability / builtin:synthetic.multiProtocol.availability |
numeric |
dt.entity.synthetic_location dt.entity.multiprotocol_monitor |
Доступность рассчитывается на основе статуса выполнения посещений: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
dt.synthetic.multi_protocol.executions / builtin:synthetic.multiProtocol.executions |
numeric |
dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.result.status multi_protocol.result.status.code |
Количество выполнений монитора за определенный период времени
|
dt.synthetic.multi_protocol.availability.excluding_maintenance_windows / builtin:synthetic.multiProtocol.availability.excludingMaintenanceWindows |
numeric |
dt.entity.synthetic_location dt.entity.multiprotocol_monitor |
Доступность рассчитывается на основе статуса выполнения посещений и отображается только в том случае, если для монитора не определено окно технического обслуживания: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов состояния ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
Показатели шага (все мониторы доступности сети)
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.step.execution_time / builtin:synthetic.multiProtocol.step.executionTime |
numeric |
multi_protocol.request.type dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id |
Продолжительность между началом и концом выполнения шага (в миллисекундах). Эта метрика доступна только в том случае, если выполнение шага состоялось с четко определенным временем окончания; следовательно, она недоступна для пропущенных шагов.
|
dt.synthetic.multi_protocol.step.success_rate / builtin:synthetic.multiProtocol.step.successRate |
numeric |
multi_protocol.request.type dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id |
Отношение количества выполненных запросов, не завершившихся с ошибкой (успешные + пропущенные), ко всем выполненным запросам. Если шаг был пропущен (любым из предшествующих шагов), он не имеет показателя успешности; мы рассматриваем его как невыполненный. Если для шага нет выполненных запросов (потому что его скрипт перед выполнением завершился с ошибкой или выдал ошибку SCRIPT_FINISH), мы возвращаем значение 0% (для неудачных запросов) или 100% (для завершенных). Например, при 2 успешных, 1 неудачном и 4 пропущенных запросах соотношение составляет 6/7, или 85,71%.
|
dt.synthetic.multi_protocol.step.availability / builtin:synthetic.multiProtocol.step.availability |
numeric |
multi_protocol.request.type dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id |
Доступность рассчитывается на основе статуса выполнения шагов: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
dt.synthetic.multi_protocol.step.executions / builtin:synthetic.multiProtocol.step.executions |
numeric |
multi_protocol.request.type dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.result.status multi_protocol.result.status.code |
Количество выполнений шагов за определенный период времени
|
dt.synthetic.multi_protocol.step.availability.excluding_maintenance_windows / builtin:synthetic.multiProtocol.step.availability.excludingMaintenanceWindows |
numeric |
multi_protocol.request.type dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id |
Доступность рассчитывается на основе статуса выполнения шагов и отображается только в том случае, если для монитора не определено окно обслуживания: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов состояния ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
Запрос метрик (всех мониторов доступности сети)
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.request.availability / builtin:synthetic.multiProtocol.request.availability |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (только для мониторов с filter определенными характеристиками) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Доступность рассчитывается на основе статуса выполнения запросов: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
dt.synthetic.multi_protocol.request.executions / builtin:synthetic.multiProtocol.request.executions |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (только для мониторов с filter определенными характеристиками) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id multi_protocol.result.status multi_protocol.result.status.code |
Количество выполнений запросов за определенный период времени
|
dt.synthetic.multi_protocol.request.availability.excluding_maintenance_windows / builtin:synthetic.multiProtocol.request.availability.excludingMaintenanceWindows |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (только для мониторов с filter определенными характеристиками) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Доступность рассчитывается на основе статуса выполнения запросов и отображается только в том случае, если для монитора не определено окно технического обслуживания: 100% для кода = 0, HEALTHY, SCRIPT_FINISH - 0 SKIPPED % для кодов состояния ошибок, таких как 1401 - CONSTRAINT_VIOLATED
|
Метрики монитора ICMP
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.icmp.success_rate / builtin:synthetic.multiProtocol.icmp.successRate |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Соотношение полученных и отправленных пакетов не учитывает заданное количество отправляемых пакетов. Например, если из 10 отправляемых пакетов 5 были отправлены, а 4 получены, то соотношение составляет 4/5, или 80,00%.
|
dt.synthetic.multi_protocol.icmp.packets_sent / builtin:synthetic.multiProtocol.icmp.packetsSent |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Общее количество отправленных пакетов
|
dt.synthetic.multi_protocol.icmp.packets_received / builtin:synthetic.multiProtocol.icmp.packetsReceived |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Количество успешно возвращенных пакетов.
|
dt.synthetic.multi_protocol.icmp.average_round_trip_time / builtin:synthetic.multiProtocol.icmp.averageRoundTripTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Среднее время кругового пути (RTT)
|
dt.synthetic.multi_protocol.icmp.min_round_trip_time / builtin:synthetic.multiProtocol.icmp.minRoundTripTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Минимальное время кругового обхода (RTT)
|
dt.synthetic.multi_protocol.icmp.max_round_trip_time / builtin:synthetic.multiProtocol.icmp.maxRoundTripTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Максимальное время кругового обхода (RTT)
|
dt.synthetic.multi_protocol.icmp.request_execution_time / builtin:synthetic.multiProtocol.icmp.requestExecutionTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Продолжительность между началом и окончанием обработки запроса (в миллисекундах). Этот показатель всегда предоставляется, даже если фактическое выполнение запроса не состоялось (например, из-за исключений или тайм-аутов). Диагностический показатель — позволяет проверить время выполнения внешнего процесса ping.
|
Размеры монитора TCP
| Имя |
Тип |
Описание |
Пример значения
|
multi_protocol.request.tcp_port_number |
string |
Номер порта для TCP-запросов, указанный в конфигурации монитора. |
665
|
метрики монитора TCP
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.tcp.connection_time / builtin:synthetic.multiProtocol.tcp.connectionTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id multi_protocol.request.tcp_port_number |
Продолжительность между временем начала (создание и подключение сокета) и временем окончания (успешное установление соединения) в миллисекундах. Метрика доступна только в том случае, если запрос был выполнен (без исключений или тайм-аутов) с четко определенным временем окончания.
|
Размеры монитора DNS
| Имя |
Тип |
Описание |
Пример значения
|
multi_protocol.request.dns_record_type |
string |
Тип DNS-записи, запрашиваемой в запросе, указан в конфигурации. |
A, AAAA, CNAME
|
метрики монитора DNS
| Имя |
Тип |
Размеры |
Описание
|
dt.synthetic.multi_protocol.dns.resolution_time / builtin:synthetic.multiProtocol.dns.resolutionTime |
numeric |
multi_protocol.request.type multi_protocol.request.target_address dt.entity.host (Только для мониторов с заданным фильтром) dt.entity.synthetic_location dt.entity.multiprotocol_monitor multi_protocol.step.id multi_protocol.request.id |
Длительность между началом и окончанием запроса к DNS-серверу в миллисекундах. Метрика доступна только в том случае, если запрос был выполнен (без исключений или тайм-аутов) с четко определенным временем окончания.
|
Статусы выполнения
Все мониторы доступности сети
| Код / сообщение |
Пример |
Описание
|
| 0 HEALTHY |
- |
Все хорошо.
|
| -1 UNEXPECTED_ERROR |
Насыщение ресурсами |
Неожиданная проблема, обычно связанная с компонентами выполнения монитора.
|
| 1401 CONSTRAINT_VIOLATED |
- |
Ограничения, заданные в конфигурации монитора, не были соблюдены.
|
| 1604 VALIDATION_ERROR |
- |
Обнаружена некорректная конфигурация монитора.
|
| 12013 UNKNOWN_HOST |
Ошибка в имени хоста. |
Не удается определить IP-адрес хоста. Причиной этой ошибки может быть несколько факторов: - Недопустимое имя хоста - Недоступен DNS-сервер - Проблемы с DNS-кэшем - Помехи от брандмауэра или прокси-сервера
|
| 12033 Execution timeout |
Сервер работает медленно. |
Превышение времени ожидания выполнения запроса — эта ошибка может быть вызвана несколькими причинами: — Проблемы с сетью; — Медленная работа или не отвечающий сервер или служба; — Блокировка соединения правилами брандмауэра; — Слишком малое значение времени ожидания.
|
статусы выполнения монитора TCP
| Код / сообщение |
Пример |
Описание
|
| 22000 TCP socket connection error |
Сервис не прослушивает указанный порт. |
Этот статус означает, что хост был идентифицирован и доступен, но TCP-соединение не удалось установить или оно было неожиданно закрыто. Дополнительное пояснение к точному исключению приведено ниже. Этот статус используется, если исключение java.net.SocketException возникает во время попытки подключения. Причиной этой ошибки может быть несколько проблем: - Служба не прослушивает указанный порт; - Служба достигла предела ресурсов или соединений; - Служба стала недоступна в процессе установления сокетного соединения.
|
Примеры DQL-запросов для извлечения данных
В этих примерах используются блокноты Тетради и демонстрируется, как работать с результатами мониторинга доступности сети. В качестве отправной точки для изучения возможностей извлечения и интерпретации данных с помощью DQL используются метрики результатов.
Статус хост-сущности для запросов ICMP
Монитор MULTIPROTOCOL_MONITOR-5C2F92334DF71A90 выполняет ICMP-запросы и фильтрует отслеживаемые хосты по метрике "targetFilter": "hostGroup == e2e-synthetic-private-location" (что составляет примерно 26 хостов). Используя метрику dt.synthetic.multi_protocol.request.executions и разделяя её по параметрам dt.entity.host и multi_protocol.result.status, мы можем отобразить статус соединения с конкретным отслеживаемым хостом в этой группе хостов. Некоторые хосты не соответствуют ожидаемому уровню успешности; вместо того, чтобы быть HEALTHY помеченными как, их запросы помечаются как CONSTRAINT_VIOLATED.
Статус временного ряда = avg(dt.synthetic.multi_protocol.request.executions),
by: {dt.entity.host, multi_protocol.result.status},
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, чтобы получить представление о количестве отправленных и полученных пакетов. Мы разделяем результаты по измерению multi_protocol.request.target_address и фильтруем данные только для 18.x.x.x и 10.x.x.x. Для 18.x.x.x было получено такое же количество пакетов, как и было отправлено, но для 10.x.x.x все пакеты теряются, и ни один не был получен.
временные ряды {
packets_sent = sum(dt.synthetic.multi_protocol.icmp.packets_sent),
packets_received = sum(dt.synthetic.multi_protocol.icmp.packets_received)
},
Автор: {multi_protocol.request.target_address},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-548C3CD54183CED9"
И (
multi_protocol.request.target_address == "18.xxx"
ИЛИ multi_protocol.request.target_address == "10.xxx"
)
Целевой статус для TCP-запросов
Монитор MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 выполняет TCP-запросы к хостам из группы хостов, которая разрешается в IP-адреса 18.x.x.x, 34.x.x.x, и 44.x.x.x. Используя метрику dt.synthetic.multi_protocol.request.executions и разделяя ее по измерениям multi_protocol.request.target_address, multi_protocol.request.tcp_port_number, и multi_protocol.result.status, мы можем отобразить состояние TCP-соединения для пары IP-адрес-порт. У каждого хоста открыты порты 22 (SSH) и 8080 (HTTP-сервер), и каждое соединение с хостами на этих портах завершается успешно со статусом HEALTHY. Ни одна служба не использует стандартный HTTP-порт 80. Поэтому соединения со всеми хостами на этом порту завершаются с ошибкой со статусом TCP socket connection error. Обратите внимание, что результаты этого запроса можно ограничить только успешными запросами, отфильтровав по измерению multi_protocol.result.status.code (code == 0).
статус временного ряда = сумма(dt.synthetic.multi_protocol.request.executions),
by: {multi_protocol.request.target_address, multi_protocol.request.tcp_port_number, multi_protocol.result.status},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"
// и multi_protocol.result.status.code == 0
Время установления TCP-соединения с целевым портом
Монитор MULTIPROTOCOL_MONITOR-74E68F22FF5E9227 выполняет TCP-запросы к хостам из группы хостов, которые разрешаются в IP-адреса 18.x.x.x, 34.x.x.x, и 44.x.x.x. В этом примере вместо IP-адресов мы разделяем результаты по идентификаторам отслеживаемых хостов. Мы используем среднее значение метрики dt.synthetic.multi_protocol.tcp.connection_time, разделенной по измерениям dt.entity.host, multi_protocol.request.target_address, и multi_protocol.request.tcp_port_number, чтобы проверить типичное время, необходимое для успешного подключения к целевому порту для хоста. Открыты только порты 22 (SSH) и 8080 (HTTP-сервер), и это единственные порты, для которых доступен dt.synthetic.multi_protocol.tcp.connection_time. Хосты фактически находятся в разных географических местах (Огайо, Орегон и Северная Вирджиния в США), поэтому разница во времени подключения ожидаема.
длительность временного ряда = avg(dt.synthetic.multi_protocol.tcp.connection_time),
by: {dt.entity.host, multi_protocol.request.target_address, multi_protocol.request.tcp_port_number},
filter: dt.entity.multiprotocol_monitor == "MULTIPROTOCOL_MONITOR-74E68F22FF5E9227"