Мониторы доступности сети в классическом режиме

Материал из Документация Ключ-АСТРОМ
Версия от 20:38, 18 июля 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «= Мониторы доступности сети в классическом режиме = Предварительный просмотр Мониторинг доступности сети позволяет создавать синтетические мониторы доступности сети типов '''ICMP''', '''TCP''' или '''DNS'''. API Synthetic - Network availability monitors является частью Environment API v2. Д...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Мониторы доступности сети в классическом режиме

Предварительный просмотр

Мониторинг доступности сети позволяет создавать синтетические мониторы доступности сети типов 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 Диапазон = PT1SPT2S

Интервал передачи пакетов задан жестко 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
Примеры значений:
  • A
  • A,AAAA
  • A,AAAA,CNAME
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"