Источник данных SNMP Traps

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

Расширения / Расширения 2.0 / Источник данных SNMP Traps

SNMP traps — это стандартный способ уведомления центральной системы управления сетью о значительных проблемах и событиях в вашей сетевой инфраструктуре.

Ключ-Астром предоставляет вам платформу для расширения мониторинга данных, связанных с SNMP traps, и пересылки сообщений trap, созданных вашими SNMP-устройствами, в виде логов.

Основные предположения:

  • Ваши устройства способны отправлять SNMP traps.
  • Вы знаете, как настроить эти устройства для отправки traps и имеете соответствующие права.
  • Вы знакомы с основными концепциями Extensions 2.0 и общей структурой YAML-файла расширения.

Предварительные условия и поддержка

Поддерживаемые версии Ключ-Астром:

  • Версия Ключ-Астром 1.236+.
  • Версия Активный Шлюз 1.235+.
  • Log Monitoring v1 не поддерживается.

Поддерживаемые версии SNMP:

  • SNMPv2c и более ранние.
  • SNMPv3 (начиная с версии Активный Шлюз 1.251+).

Аппаратные требования:

При большом количестве отправляемых traps возможно, что некоторые из них могут быть отброшены операционной системой. Та же ситуация происходит при достижении лимита логов.


Значения для EEC (Default Performance Profile):

Instance CPU MEM (MiB) Estimated number of traps Estimated number of traps (SNMP v3)
c5.large 5% 45 MiB 30k/min (логи включены)

45k/min (логи отключены)

17k/min (логи включены)

32k/min (логи отключены)

Значения для EEC (High Performance Profile):

Instance CPU MEM (MiB) Estimated number of traps Estimated number of traps (SNMP v3)
c5.large 15% 45 MiB 75k/min (логи включены)

150k/min (логи отключены)

60k/min (логи включены)

105k/min (логи отключены)

Поддерживаемая аутентификация

SNMP v2c и более ранние:

Используются строки сообщества (Community strings).

SNMP v3:

Для SNMP v3 источник данных SNMP traps поддерживает уровни безопасности NoAuthNoPriv, authNoPriv и authPriv, а также следующие протоколы аутентификации:

authNoPriv:

  • MD5 (HMAC-96-MD5, RFC 3414)
  • SHA (HMAC-96-SHA, RFC 3414)
  • SHA224 (HMAC-128-SHA-224, RFC 7860)
  • SHA256 (HMAC-192-SHA-256, RFC 7860)
  • SHA384 (HMAC-256-SHA-384, RFC 7860)
  • SHA512 (HMAC-384-SHA-512, RFC 7860)

authPriv:

  • DES (CBC-DES, RFC 3414)
  • AES (CFB128-AES-128, RFC 3826)
  • AES1921 (Blumenthal key extension)
  • AES2561 (Blumenthal key extension)
  • AES192C1 (Reeder key extension)
  • AES256C1 (Reeder key extension)

Поддерживаемые сообщения:

Источник данных SNMP traps поддерживает только SNMP traps. SNMP inform-запросы не поддерживаются.

События

События traps отправляют детальную информацию о каждом trap в лог. Сообщение trap содержит следующую информацию:

Контекст: Устройство (IP) и OID переводятся в удобочитаемую форму с использованием файлов MIB.

Сообщение: Само сообщение trap с указанием типа trap.

Атрибуты: Атрибуты, переданные в лог-событие.

Основные атрибуты:

event.type: всегда LOG

log.source: всегда snmptraps

loglevel: всегда NONE

snmp.version: 1, 2c или 3

Ограничения:

Количество получаемых и обрабатываемых trap-событий ограничено 7 000 в минуту.

Определение области данных

  • Имя расширения
  • Версия расширения
  • Частота сбора метрик (интервал)
  • Имя метрики
  • Два доступных измерения: отправитель ловушки и OID ловушки

Пример файла YAML для определения области мониторинга SNMP traps:

name: custom:snmptraps-extension-example

version: 1.0.0

minKey-AstromVersion: "1.235"

author:

    name: Key-Astrom SNMP traps data source team

snmptraps:

    - group: generic

      interval:

          minutes: 1

      featureSet: basic

      metrics:

         - key: number-of-traps-received

           value: calculated

           type: count,delta

Определение области мониторинга ловушек SNMP начинается с узла YAML snmptraps. Все настройки в узле относятся к объявленному типу источника данных, который в данном случае является ловушками SNMP.

Метрики

SNMP traps собирают одну метрику, которая считает количество traps, отправленных источником, определённым в конфигурации мониторинга, за указанный интервал. Пример:

metrics:

  - key: myExtension.number-of-traps-received

    value: calculated

    type: count,delta

Лучшие практики для ключей метрик

Метрики, которые вы вставляете в Ключ-АСТРОМ с помощью вашего расширения, — это лишь некоторые из тысяч метрик, встроенных и пользовательских, обрабатываемых Ключ-АСТРОМ. Чтобы сделать ваши ключи метрик уникальными и легко идентифицируемыми в Ключ-АСТРОМ, лучше всего добавлять к имени метрики префикс имени расширения. Это гарантирует уникальность ключа метрики, и вы можете легко назначить метрику определенному расширению в вашей среде.

Набор функций

Наборы функций — это категории, в которые вы организуете данные, собранные расширением. Для получения дополнительной информации см. Наборы функций. Вы можете определить наборы функций на уровне расширения, группы или индивидуальной метрики.

При активации вашего расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций.

В сильно сегментированных сетях наборы функций могут отражать сегменты вашей среды. Затем, при создании конфигурации мониторинга, вы можете выбрать набор функций и соответствующую группу АктивногоШлюза, которая может подключаться к этому конкретному сегменту.

Все показатели, не отнесенные ни к одному набору характеристик, считаются показателями по умолчанию и всегда включаются в отчет.

Интервал

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

Вы можете определить интервалы с гранулярностью в одну минуту. Максимальный интервал составляет 2880 минут (2 дня, 48 часов).

Установка интервала невозможна для источников данных JMX.

Пример задания интервала:

```yaml

interval:

     minutes: 5

```

Вышеуказанный формат поддерживается, начиная с версии схемы 1.217. Для более ранних версий схемы используйте следующий формат (поддерживается до версии схемы 1.251):

interval: 5m

Файлы MIB

MIB (Management Information Base) — это база данных, управляющая сущностями в сети, идентифицированными OIDs. Она предоставляет дополнительную информацию о OIDs, объявленных в вашем расширении.

Конфигурация мониторинга

После определения области мониторинга необходимо указать устройства, с которых будут собираться данные, и Активный Шлюз, которые будут выполнять расширение и подключаться к вашим устройствам.

Конфигурация мониторинга — это полезная нагрузка JSON, определяющая сведения о подключении, учетные данные и наборы функций, которые вы хотите отслеживать. Подробности см. в разделе Запуск мониторинга.

Пример активации SNMP расширения с помощью JSON-платежа:

```json

[

  {

    "scope": "ag_group-default",

    "value": {

      "version": "1.0.0",

      "description": "traps from routers",

      "enabled": true,

      "featureSets": [

        "basic"

      ],

      "snmptraps": {

        "sources" : [

          {

            "ip": "172.10.11.0/8",

            "port": 8162,

            "authentication": {

              "community": "x120a1f"

            }

          },

          {

            "ip": "0.0.0.0/0",

            "port": 162,

            "authentication": {

              "community": "public"

            }

          }

        ]

      }

    }

  }

]

```

После подготовки вашего YAML-файла расширения упакуйте его, подпишите и загрузите в ваше окружение Ключ-Астром.

Мастер активации расширения на основе Ключ-АСТРОМ Hub содержит динамически обновляемую полезную нагрузку JSON с вашей конфигурацией мониторинга

Вы также можете использовать API Ключ-Астром для загрузки схемы для вашего расширения, которая поможет вам создать полезную нагрузку JSON для вашей конфигурации мониторинга.

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

Выполните следующий запрос:

curl -X GET "{env-id}.live/api/v2/extensions/{extension-name}/{extension-version}/schema" \

   -H "accept: application/json; charset=utf-8" \

   -H "Authorization: Api-Token {api-token}"

Замените {extension-name} и {extension-version} значениями из вашего файла расширения YAML. Успешный вызов возвращает схему JSON.

Область действия (Scope)

Обратите внимание, что каждому хосту Активному Шлюзу, на котором запущено ваше расширение, необходим корневой сертификат для проверки подлинности вашего расширения.

Область действия — это группа Активного Шлюза, которая будет выполнять расширение. Все Активные Шлюзы  из группы будут одновременно запускать эту конфигурацию мониторинга. Если вы планируете использовать один Активный Шлюз, назначьте его выделенной группе. Вы можете назначить Активный Шлюз группе во время или после установки.

Используйте следующий формат при определении группы ActiveGate:

"scope": "ag_group-<ActiveGate-group-name>",

Замените <ActiveGate-group-name> фактическим именем.

Версия (version)

Версия этой конфигурации мониторинга. Обратите внимание, что одно расширение может запускать несколько конфигураций мониторинга.

Описание (Description)

Человекочитаемое описание особенностей этой конфигурации мониторинга.

Включено (Enabled)

Если установлено значение true, конфигурация активна, и Ключ-АСТРОМ немедленно начинает мониторинг.

Источники (sources)

Вам необходимо определить источники ловушек в конфигурации мониторинга. Чтобы определить источник, добавьте следующие данные:

  • Сеть, которая отправляет пакеты с ловушками, указанными в нотации CDIR. Чтобы настроить адрес одного интерфейса, добавьте маску подсети 32 после IP-адреса, например 172.10.11.0/32.
  • UDP-порт, на который отправляются ловушки
  • Учетные данные аутентификации
    • SNMPv1 и SNMPv2 аутентифицируются только с использованием имени сообщества.
    • SNMPv3 требует расширенной аутентификации и описывается в следующем разделе.

Аутентификация

Данные аутентификации, переданные в API Ключ-АСТРОМ при активации конфигурации мониторинга, запутаны, и их невозможно извлечь.

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

authPriv

{

"ip": "10.10.10.10",

"port": 161,

"authentication": {

    "type": "SNMPv3",

    "userName": "user",

    "securityLevel": "AUTH_PRIV",

    "authPassword": "********",

    "authProtocol": "SHA",

    "privPassword": "********",

    "privProtocol": "AES256C"

  }

authNoPriv

{

"ip": "10.10.10.10",

"port": 161,

"authentication": {

    "type": "SNMPv3",

    "userName": "user",

    "securityLevel": "AUTH_NO_PRIV",

    "authPassword": "********",

    "authProtocol": "SHA"

}

NoAuthNoPriv

{

"ip": "10.10.10.12",

"port": 161,

"authentication": {

"type": "SNMPv3",

"userName": "snmptest_SHA_AES256",

"securityLevel": "NO_AUTH_NO_PRIV"

}

Расширенные настройки

В некоторых SNMP traps у OID переменной привязки есть динамические части, которые меняются с каждым поступающим trap. Чтобы предотвратить проблемы с обработкой SNMP traps, можно настроить обрезку OID переменной привязки.

Пример:

```json

"advanced": {

  "varbindings": [

    {

      "root": ".1.3.6",

      "suffixLen": 1

    }

  ]

}

```

  • root — используется для сопоставления суффикса и его соответствующей обрезки. Вы можете указать root в необработанном (1.3.6.1.4.1.9.9.41.1.2.3.1) или разрешенном (CISCO-SMI::ciscoMgmt.41.1.2.3.1) формате.
  • suffixLen — указывает количество октетов в конце OID, которые следует обрезать.

Пример

В этом примере все привязки переменных в поддереве CISCO-SMI::ciscoMgmt заканчиваются на 34024. С каждым последующим сгенерированным прерыванием число будет увеличиваться.

Перед обрезкой:

"event.type": "LOG",

"content": "SNMP trap (CISCO-SMI::ciscoMgmt.41.2.0.1) reported from 192.168.1.100\n",

"status": "NONE",

"timestamp": "1678712960382",

"loglevel": "NONE",

"log.source": "snmptraps",

"snmp.trap_oid": "CISCO-SMI::ciscoMgmt.41.2.0.1.",

"device.address": "192.168.1.100",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.2.34024": "PKI",

"SNMPv2-MIB::snmpTrapOID": ".1.3.6.1.4.1.9.9.41.2.0.1",

"DISMAN-EVENT-MIB::sysUpTimeInstance": "1660720758",

"snmp.version": "2c",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.5.34024": "Certificate chain validation has failed. The certificate has expired. Validity period ended on 2023-11-29T03:21:33Z",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.6.34024": "1004407027",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.3.34024": "4",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.4.34024": "CERTIFICATE_INVALID_EXPIRED"

Все привязки переменных, которые соответствуют значению, указанному в корне, обрезаются.

После обрезки:

"event.type": "LOG",

"content": "SNMP trap (CISCO-SMI::ciscoMgmt.41.2.0.1) reported from 192.168.1.100\n",

"status": "NONE",

"timestamp": "1678712960382",

"loglevel": "NONE",

"log.source": "snmptraps",

"snmp.trap_oid": "CISCO-SMI::ciscoMgmt.41.2.0.1.",

"device.address": "192.168.1.100",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.2": "PKI",

"SNMPv2-MIB::snmpTrapOID": ".1.3.6.1.4.1.9.9.41.2.0.1",

"DISMAN-EVENT-MIB::sysUpTimeInstance": "1660720758",

"snmp.version": "2c",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.5": "Certificate chain validation has failed. The certificate has expired. Validity period ended on 2023-11-29T03:21:33Z",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.6": "1004407027",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.3": "4",

"CISCO-SMI::ciscoMgmt.41.1.2.3.1.4": "CERTIFICATE_INVALID_EXPIRED"

Feature sets

Feature sets позволяют организовывать данные, собранные расширением, в категории. Пример:

```json

"featureSets": [

  "basic",

  "advanced"

]

```