Тонкости настройки SNMPTT в связке с Nagios

Материал из IN-TON
Версия от 14:14, 21 марта 2018; Admin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

В статье Nagios графики и прием SNMP Traps рассмотрели настройку приема SNMP Trap, их обработку и передачу в Nagios, теперь настало время разобраться в тонкостях.

Содержание

Настройка демонов

Подключаем репозитарии contrib и non-free после чего обновляем кеш aptitude, устанавливаем snmp-mibs-downloader и скачиваем стандартные MIB-ы

  1. aptitude update
  2. aptitude install snmp-mibs-downloader
  3. download-mibs

В snmp.conf указываем пути где лежат MIB-ы

  1. mibdirs /var/lib/mibs/ietf:/var/lib/mibs/iana:/usr/share/snmp/mibs:/etc/snmp/mibs

В snmptrapd.conf укажем с какими комьюнити мы будем принимать трапы и перейдем на использование embedded скрипта для лучшей производительности

  1. authCommunity log,execute private
  2. authCommunity log,execute public
  3.  
  4. #traphandle default /usr/sbin/snmptthandler
  5. perl do "/usr/lib/snmptt/snmptthandler-embedded"
  6.  
  7. #disableAuthorization yes

В конфиге snmptt.ini приводим к следующему виду параметры:

  1. net_snmp_perl_enable = 1
  2. net_snmp_perl_cache_enable = 0
  3. mibs_environment = ALL

Включение опции net_snmp_perl_enable необходимо для преобразования числовых значений в текстовые, например состояние интерфейса, вместо числового 1 подставится Up, вместо числового 2 подставится Down, но для этого необходимы соответствующие MIB файлы.

Перезапускаем демона snmptt и видим в логах следующие ошибки:

  1. Feb 9 19:42:48 nagios snmptt[15395]: Expected "::=" (RFC5644): At line 493 in /var/lib/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
  2. Feb 9 19:42:48 nagios snmptt[15395]: Expected "{" (EOF): At line 651 in /var/lib/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
  3. Feb 9 19:42:48 nagios snmptt[15395]: Bad object identifier: At line 651 in /var/lib/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
  4. Feb 9 19:42:48 nagios snmptt[15395]: Bad parse of OBJECT-IDENTITY: At line 651 in /var/lib/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
  5. Feb 9 19:42:48 nagios snmptt[15395]: Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
  6. Feb 9 19:42:48 nagios snmptt[15395]: Undefined identifier: mib-2 near line 18 of /var/lib/mibs/ietf/IPATM-IPMC-MIB
  7.  

Ошибки не критичны, но я решил их поправить:

  1. в файле IANA-IPPM-METRICS-REGISTRY-MIB куча повторяющихся ошибок, первая в том, что в 493 строке находится лишняя двойная кавычка, перед RFC5644, а вторая в том что вместо ::= стоит := повторяются эти ошибки до конца файла.
  2. в файле IPATM-IPMC-MIB ошибка в нехватке в секции импорта идентификатора mib-2, правится следующим образом
  1. snmpModules, MODULE-IDENTITY, NOTIFICATION-TYPE, Counter32,
  2. Integer32, Unsigned32, OBJECT-TYPE, IpAddress, mib-2
  3. FROM SNMPv2-SMI

После исправления перезапускаем демона snmptt и радуемся.

О скрипте submit_check_results

Как следует из документации Nagios скрипт submit_check_results принимает 4 параметра

  1. Имя хоста
  2. Имя сервиса
  3. Серьезность(Severity) 0-OK 1-Warning 2-Critical
  4. Текст с результатами проверки.

Соответственно указав в конфиге SNMPTT для разных трапов разные сервисы можно разложить их в Nagios по разным сервисам.

Конвертируем MIB-ы и рисуем конфиги для SNMPTT

Создадим директорию /etc/snmp/mibs в нее мы будем складывать необходимые нам MIB файлы В директорию закачаем файл описывающий трапы BGP и сконвертируем его для дальнейшего использования

  1. cd /etc/snmp/mibs
  2. wget ftp://ftp.cisco.com/pub/mibs/v2/BGP4-MIB.my
  3. snmpttconvertmib --in=/etc/snmp/mibs/BGP4-MIB.my --out /etc/snmp/BGP4.conf --net_snmp_perl

Подробности о том как утилита конвертирует MIB файлы и почему разные файлы конвертируются по разному читать в документации [1]

Теперь займемся причесыванием полученного файла и приведение в читаемый вид сообщений для Nagios. В файле мы поменяем строку FORMAT добавим строку EXEC и пару REGEX для реализации ракладывания трапов по каждому BGP peer в свой сервис.

Download Code
  1.  
  2. #
  3. #
  4. #
  5. #
  6. MIB: BGP4-MIB (file:/etc/snmp/mibs/BGP4-MIB.my) converted on Tue Feb 9 21:18:21 2016 using snmpttconvertmib v1.4
  7. #
  8. #
  9. #
  10. EVENT bgpEstablished .1.3.6.1.2.1.15.7.1 "Status Events" Normal
  11. FORMAT BGP Peer:$+*
  12. EXEC /usr/share/nagios3/plugins/eventhandlers/submit_check_result $R "BGP $+2" 0 "$Fz"
  13. REGEX (BGP Peer:.*\.(\d+\.\d+\.\d+\.\d+):(.*))("BGP Peer: $1 connection state: $2")e
  14. REGEX (BGP .*\.(\d+\.\d+\.\d+\.\d+):\w+)("BGP $1")e
  15. SDESC
  16. The BGP Established event is generated when
  17. the BGP FSM enters the ESTABLISHED state.
  18. Variables:
  19. 1: bgpPeerLastError
  20. Syntax="OCTETSTR"
  21. Descr="The last error code and subcode seen by this
  22. peer on this connection. If no error has
  23. occurred, this field is zero. Otherwise, the
  24. first byte of this two byte OCTET STRING
  25. contains the error code, and the second byte
  26. contains the subcode."
  27. 2: bgpPeerState
  28. Syntax="INTEGER"
  29. 1: idle
  30. 2: connect
  31. 3: active
  32. 4: opensent
  33. 5: openconfirm
  34. 6: established
  35. Descr="The BGP peer connection state."
  36. EDESC
  37. #
  38. #
  39. #
  40. EVENT bgpBackwardTransition .1.3.6.1.2.1.15.7.2 "Status Events" Normal
  41. FORMAT BGP Peer:$+*
  42. EXEC /usr/share/nagios3/plugins/eventhandlers/submit_check_result $R "BGP $+2" 2 "$Fz"
  43. REGEX (BGP Peer:.*\.(\d+\.\d+\.\d+\.\d+):(.*))("BGP Peer: $1 connection state: $2")e
  44. REGEX (BGP .*\.(\d+\.\d+\.\d+\.\d+):\w+)("BGP $1")e
  45. SDESC
  46. The BGPBackwardTransition Event is generated
  47. when the BGP FSM moves from a higher numbered
  48. state to a lower numbered state.
  49. Variables:
  50. 1: bgpPeerLastError
  51. Syntax="OCTETSTR"
  52. Descr="The last error code and subcode seen by this
  53. peer on this connection. If no error has
  54. occurred, this field is zero. Otherwise, the
  55. first byte of this two byte OCTET STRING
  56. contains the error code, and the second byte
  57. contains the subcode."
  58. 2: bgpPeerState
  59. Syntax="INTEGER"
  60. 1: idle
  61. 2: connect
  62. 3: active
  63. 4: opensent
  64. 5: openconfirm
  65. 6: established
  66. Descr="The BGP peer connection state."
  67. EDESC
  68.  

Подробности о формате файла, переменных, REGEX-ах читаем в документации [2]

Результаты

И в качестве результатов, лог всех участников процесса, а именно snmptrapd, snmptt, nagios

  1. Feb 10 18:03:57 nagios snmptrapd[773]: 2016-02-10 18:03:57 cisco7200 [UDP: [192.168.1.222]:56931->[192.168.1.6]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (117498) 0:19:34.98#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.2.1.15.7.2#011.1.3.6.1.2.1.15.3.1.14.192.168.100.2 = Hex-STRING: 00 00 #011.1.3.6.1.2.1.15.3.1.2.192.168.100.2 = INTEGER: 1
  2. Feb 10 18:03:57 nagios snmptrapd[773]: perl callback function 0xa07ecd0 returns 1
  3. Feb 10 18:03:57 nagios snmptt[7698]: .1.3.6.1.2.1.15.7.2 Normal "Status Events" cisco7200 - BGP Peer: 192.168.100.2 connection state: idle
  4. Feb 10 18:03:57 nagios nagios3: EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;cisco7200;BGP 192.168.100.2;2;BGP Peer: 192.168.100.2 connection state: idle
  5. Feb 10 18:04:03 nagios nagios3: PASSIVE SERVICE CHECK: cisco7200;BGP 192.168.100.2;2;BGP Peer: 192.168.100.2 connection state: idle
  6. Feb 10 18:04:03 nagios nagios3: SERVICE ALERT: cisco7200;BGP 192.168.100.2;CRITICAL;HARD;1;BGP Peer: 192.168.100.2 connection state: idle
  7. Feb 10 18:04:03 nagios nagios3: SERVICE NOTIFICATION: root;cisco7200;BGP 192.168.100.2;CRITICAL;notify-service-by-email;BGP Peer: 192.168.100.2 connection state: idle
  8. Feb 10 18:04:22 nagios snmptrapd[773]: 2016-02-10 18:04:22 cisco7200 [UDP: [192.168.1.222]:56931->[192.168.1.6]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (119972) 0:19:59.72#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.2.1.15.7.1#011.1.3.6.1.2.1.15.3.1.14.192.168.100.2 = Hex-STRING: 00 00 #011.1.3.6.1.2.1.15.3.1.2.192.168.100.2 = INTEGER: 6
  9. Feb 10 18:04:22 nagios snmptrapd[773]: perl callback function 0xa07ecd0 returns 1
  10. Feb 10 18:04:22 nagios snmptt[7698]: .1.3.6.1.2.1.15.7.1 Normal "Status Events" cisco7200 - BGP Peer: 192.168.100.2 connection state: established
  11. Feb 10 18:04:22 nagios nagios3: EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;cisco7200;BGP 192.168.100.2;0;BGP Peer: 192.168.100.2 connection state: established
  12. Feb 10 18:04:33 nagios nagios3: PASSIVE SERVICE CHECK: cisco7200;BGP 192.168.100.2;0;BGP Peer: 192.168.100.2 connection state: established
  13. Feb 10 18:04:33 nagios nagios3: SERVICE ALERT: cisco7200;BGP 192.168.100.2;OK;HARD;1;BGP Peer: 192.168.100.2 connection state: established
  14. Feb 10 18:04:33 nagios nagios3: SERVICE NOTIFICATION: root;cisco7200;BGP 192.168.100.2;OK;notify-service-by-email;BGP Peer: 192.168.100.2 connection state: established
  15.