Begemot SNMPD - настройка штатного агента SNMP

Версия для печатиОтправить другуPDF version

Так уж случилось, что на одном из серверов порт net-snmp никак не хотел собираться, ругаясь на ошибки компиляции. Тратить время, разбираться и устранять причину не очень хотелось, поэтому решил воспользоваться возможностями штатного агента SNMP - bsnmpd.

bsnmpd (сокращено от Begemot SNMPD) - это минимальный агент SNMP, предусматривающий возможность расширения с помощью внешних модулей.

Файл конфигурации - /etc/snmpd.config, который довольно хорошо прокомментирован. После правки "под себя", получился следующий конфиг (комментарии удалены):

location := "Location 1"
contact := "contact [at] example [dot] com"
system := 1     # FreeBSD
traphost := localhost
trapport := 162
read := "read_community_here"
write := "write_community_here"
trap := "trap_community_here"
NoAuthProtocol          := 1.3.6.1.6.3.10.1.1.1
HMACMD5AuthProtocol     := 1.3.6.1.6.3.10.1.1.2
HMACSHAAuthProtocol     := 1.3.6.1.6.3.10.1.1.3
NoPrivProtocol          := 1.3.6.1.6.3.10.1.2.1
DESPrivProtocol         := 1.3.6.1.6.3.10.1.2.2
AesCfb128Protocol       := 1.3.6.1.6.3.10.1.2.4
securityModelAny        := 0
securityModelSNMPv1     := 1
securityModelSNMPv2c    := 2
securityModelUSM        := 3
MPmodelSNMPv1           := 0
MPmodelSNMPv2c          := 1
MPmodelSNMPv3           := 3
noAuthNoPriv := 1
authNoPriv := 2
authPriv := 3
%snmpd
begemotSnmpdDebugDumpPdus       = 2
begemotSnmpdDebugSyslogPri      = 7
begemotSnmpdCommunityString.0.1 = $(read)
begemotSnmpdCommunityDisable    = 1
begemotSnmpdPortStatus.0.0.0.0.161 = 1
begemotSnmpdLocalPortStatus."/var/run/snmpd.sock" = 1
begemotSnmpdLocalPortType."/var/run/snmpd.sock" = 4
begemotTrapSinkStatus.[$(traphost)].$(trapport) = 4
begemotTrapSinkVersion.[$(traphost)].$(trapport) = 2
begemotTrapSinkComm.[$(traphost)].$(trapport) = $(trap)
sysContact      = $(contact)
sysLocation     = $(location)
sysObjectId     = 1.3.6.1.4.1.12325.1.1.2.1.$(system)
snmpEnableAuthenTraps = 2
begemotSnmpdModulePath."mibII"  = "/usr/lib/snmp_mibII.so"
begemotSnmpdModulePath."hostres" = "/usr/lib/snmp_hostres.so"
begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"

Конфигурационный файл готов... Можно запускать сервис. Однако, тем кто не закрыл SNMP в файрволе, советую внести список разрешенных хостов в hosts.allow. Пример:

snmpd : 127.0.0.1 : allow
snmpd : ALL : deny

Добавим запуск bsnmpd в rc.conf:

# echo '# Begemot SNMPD' >> /etc/rc.conf
# echo 'bsnmpd_enable="YES"' >> /etc/rc.conf

Запускаем сервис и проверяем, запустился ли демон:

# sh /etc/rc.d/bsnmpd start
Starting bsnmpd.
# ps -ax | grep snmpd | grep -v grep
 7842  -  Ss       0:00,08 /usr/sbin/bsnmpd -p /var/run/snmpd.pid

Процесс запустился. Теперь можно снимать статистику работы сервера по SNMP, например, используя Cacti.

Итак, как уже оговаривалось вначале, расширение функциональных возможностей bsnmpd возможно с помощью внешних модулей. На момент написания статьи вместе с  bsnmpd поставлялись следующие модули (их можно сразу подключать в конфигурационном файле без дополнительных манипуляций):

  • bridge - доступ к функциям и ресурсам сетевого моста. Более подробно: man snmp_bridge.
  • hostres - реализация HOST-RESOURCES-MIB, описаных в RFC 2790. Более подробно: man snmp_hostres.
  • mibII - доступ к функциям и ресурсам сетевой подсистемы. Более подробно: man snmp_mibII.
  • netgraph - доступ к функциям и ресурсам Netgraph. Более подробно: man snmp_netgraph.
  • pf - доступ к функциям и ресурсам пакетного фильтра PF.
  • wlan - доступ к функциям и ресурсам беспроводной сети. Более подробно: man snmp_wlan.

Дополнительные модули можно найти в портах. Посмотрим, что на сегодня доступно в портах:

# ls /usr/ports/net-mgmt/ | grep bsnmp
drwxr-xr-x    2 root  wheel   512 17 мар 16:34 bsnmp-jails
drwxr-xr-x    2 root  wheel   512 17 мар 16:34 bsnmp-regex
drwxr-xr-x    2 root  wheel   512 17 мар 16:34 bsnmp-ucd
drwxr-xr-x    2 root  wheel   512 17 мар 16:34 bsnmptools

Теперь более детально:

  • bsnmp-jails - модуль для bsnmpd, который позволяет получать статистику по Jail: сетевой трафик, использование процессорного времени, процессов, количество потоков и дисковая утилизация.
  • bsnmp-regex - модуль для bsnmpd, который позволяет создавать счетчики из лог-файлов, вывода программ или других текстовых данных. Счетчики используют регулярные выражения для подсчета количества совпадений или для получения конкретных данных. Полученые данные можно отобразить инструментами SNMP.
  • bsnmp-ucd - модуль для bsnmpd, который позволяет получать доступ к памяти, load average, использование CPU и другой системной статистике. Является частичной реализацией UCD-SNMP-MIB.
  • bsnmptools - инструменты для работы с SNMP, аналоги snmpget и snmpwalk.

Процесс установки и настройки модулей не рассматриваю - это уже тема для отдельной статьи.

Ваша оценка: Нет Средняя: 4.2 (6 голосов)

Вставай, Україно!

Литература