SNMP Traps
Общие сведения
Название плагина: snmpTrap
Ссылка для загрузки плагина: скачать
Минимальная версия Monq: 9.0.0
Минимальная версия агента Monq: 3.0.0
Описание:
Плагин предназначен для получения SNMP трапов SNMPv1 и SNMPv2.
Формат сценария рабочей конфигурации агента
continuous-jobs:
   - init-step:
       plugin: snmpTrap
       with:
        listen: 0.0.0.0
        port: 162
        mibPath: C:\mibs
        bufferType: memory
        bufferSize: 100
        chunkSize: 32768
        bufferInputName: snmp.job1
        streamKey: <ключ потока>
        customFields:
          agentName: $.agentName 
          hostname: $.hostname 
          ip: $.hostAddress
          myOwnLabel: MyOwnLabelValue
Параметры конфигурации используемые в сценарии
| Параметр | Тип | Обязательный параметр | Значение по умолчанию | Возможные значения | Описание | 
|---|---|---|---|---|---|
| listen | string | нет | 0.0.0.0 | IP-адрес | Задает интерфейс, на котором будет прослушиваться порт. Значение 0.0.0.0 означает прослушивание на всех доступных сетевых интерфейсах. | 
| port | string | нет | 162 | Число от 1 до 65535 | Параметр указывает порт, на котором плагин будет ожидать входящие соединения. | 
| mibPath | string | нет | - | Любая строка | Путь к каталогу с MIB файлами, для более корректного декодирования трапов | 
| bufferType | string | нет | memory | memory/filesystem | Определяет тип памяти для очереди | 
| bufferInputName | string | нет | - | Любая строка | Параметр необходим если пользователь хочет слушать разные порты по одному протоколу на агенте. . | 
| bufferSize | string | нет | = chunkSize | Любое число | Определяет максимальный размер буфера в килобайтах для приема сообщения. Если не задано, по умолчанию будет использовано значение chunkSize. | 
| chunkSize | string | нет | 32768 | Любое число | Задает максимальный размер "порций" данных для хранения входящих сообщений | 
| streamKey | string | да | - | Любая строка | Ключ потока, в который необходимо отправлять собранные данные | 
| customFields | object | нет | - | Словарь значений | Дополнительные поля, которые будут добавлены к получаемым данным. Указанные поля будут добавлены на одном уровне с полученными. Смотрите доступные системные переменные агента. | 
Декодирование OID
Плагин snmpTrap способен декодировать трапы в человекочитаемый формат, для того чтобы пользователь мог явно понимать полученную информацию о трапе.
При запуске плагина агент загружает во внутреннюю память данные MIB файлов, считывая их по указанному пути в параметре mibPath.
Пример декодирования:
Устройство отправило трап, уведомляя пользователя, что состояние порта изменилось с "down" на "up":
UDP: [192.168.1.1]:56789->[192.168.1.2]:162
1.3.6.1.2.1.1.3.0 123456789
1.3.6.1.6.3.1.1.4.1.0 1.3.6.1.6.3.1.1.5.4
1.3.6.1.6.3.1.1.4.3.0 1.3.6.1.4.1.12345
1.3.6.1.2.1.2.2.1.1.1 1
1.3.6.1.2.1.2.2.1.2.1 "Ethernet0"
1.3.6.1.2.1.2.2.1.3.1 6
1.3.6.1.2.1.2.2.1.4.1 1500
1.3.6.1.2.1.2.2.1.5.1 10000000
1.3.6.1.2.1.2.2.1.6.1 0:1:2:3:4:5
1.3.6.1.2.1.2.2.1.7.1 1
1.3.6.1.2.1.2.2.1.8.1 1
После декодирования сырого события оно будет выглядеть следующим образом:
Event: SNMP trap received
Host: 192.168.1.1
Timestamp: 2024-10-01 12:34:56
Trap OID: IF-MIB::linkUp
Variable Bindings:
  DISMAN-EVENT-MIB::sysUpTimeInstance = 123456789
  SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp
  IF-MIB::ifIndex.1 = 1
  IF-MIB::ifDescr.1 = "Ethernet0"
  IF-MIB::ifType.1 = 6
  IF-MIB::ifMtu.1 = 1500
  IF-MIB::ifSpeed.1 = 10000000
  IF-MIB::ifPhysAddress.1 = 0:1:2:3:4:5
  IF-MIB::ifAdminStatus.1 = 1
  IF-MIB::ifOperStatus.1 = 1
- Если MIB файлы не загрузились (например, указанная директория ведет в несуществующую папку) - агент сообщит об ошибке.
- Если необходимые для декодирования файлы не найдены - декодирование не выполняется.
- Если необходимые MIB файлы были обнаружены должны появиться человекочитаемые параметры вместо OID.
Плагин имеет встроенные, общие MIB файлы в библиотеке:
- SNMPV2-SMI
- SNMPV2-CONF
- SNMPV2-TC
- SNMPV2-MIB
- SNMPV2-TM
Если трап можно декодировать используя их он будет декодирован, даже если в указанной пользователем директории нет никаких MIB файлов.
Пример события отправляемого в коллектор
{
  "source": {
    "enterprise": "SNMPV2-SMI::zeroDotZero",
    "agentAddress": "192.168.216.58",
    "generic": "ColdStart",
    "specific": 0,
    "timestamp": 0,
    "mib": "SNMPV2-SMI::mib-2.25.1.7.0",
    "value": 7,
    "enterprises": "SNMPV2-SMI::enterprises.2011.6.7"
  },
  "@timestamp": "2024-08-02T09:01:33.145+03:00",
  "_aggregatedAt": "2024-08-02T09:01:33.145+03:00",
  "_id": "6dd2576b-f122-4298-9294-941c90b1d75e",
  "_labels": {
    "postRoutings": [
      "cl.stream-ready-event.new"
    ]
  },
  "_rawId": "12e7e9ad-394e-45bf-aa86-03f238a92d9b",
  "_stream": {
    "id": 5318,
    "name": "agent new"
  },
  "_userspaceId": 1
}