Категории

среда, 26 декабря 2012 г.

Asterisk 1.8 и статистика по SNMP в zabbix

Прежде чем начинать собирать статистику с Asterisk по протоколу snmp, нужно чтобы в нем был модуль res_snmp.so:
FreeBSD# asterisk -rvvvv
...
pbx*CLI> module show like snmp                                                                                                                   Module                         Description                              Use Count 
res_snmp.so                    SNMP [Sub]Agent for Asterisk             0         
1 modules loaded
Как видим, все на месте. Для тех, у кого это нет этого модуля, нужно пересобрать порт с нужной опцией:
FreeBSD# make config
[*] SNMP      SNMP protocol
Когда разобрались с наличием модуля, идем в конфиг /usr/local/etc/asterisk/res_snmp.conf и включаем SNMP:
[general]
; We run as a subagent per default -- to run as a full agent
; we must run as root (to be able to bind to port 161)
subagent = yes
; SNMP must be explicitly enabled to be active
enabled = yes
Как видим, Asterisk не может открыть 161 порт (по нему работает протокол snmp), если он запущен не от пользователя root. Но не беда, по умолчанию asterisk работает как суб-агент snmp это значит, что он может отдавать данные в демон snmpd через сокет и ему не надо будет открывать 161 порт.
Готовим конфиг для snmp, вот мой конфиг /usr/local/etc/snmp/snmpd.conf:
syslocation  "Univers Server Room"
syscontact  admin@my_organization_dom
rocommunity  public ТУТ_IP_сервера_zabbix

master agentx
agentXPerms  0660 0550 asterisk asterisk
agentXSocket /var/agentx/master
Если с запуском Asterisk 1.8 в jail не возникло проблем, то с запуском snmpd было 2 проблемы:
1. Не запускался демон snmpd:
FreeBSD# service snmpd restart
snmpd not running? (check /var/run/net_snmpd.pid).
Starting snmpd.
/usr/local/etc/rc.d/snmpd: WARNING: failed to start snmpd
Сообщение об ошибке как-то не особо помогло в решении проблемы, но все-же рискнем заглянуть в логи:
FreeBSD# cat /var/log/snmpd.log 
init_kmem: kvm_openfiles failed: /dev/mem: No such file or directory
Agent initialization failed
Решение оказалось простым man snmpd:
FreeBSD# man snmpd
....
-r      Do not require root access to run the daemon.  Specifically, do
               not exit if files only accessible to root  (such  as  /dev/kmem
               etc.) cannot be opened.
.....
Как сказано в мане, говорим демону snmpd запускаться с опцией -r, добавляем в /etc/rc.conf строку:
#----------------------------- SNMP ---------------------------------------#
snmpd_enable="YES"
snmpd_flags="-r"
#--------------------------------------------------------------------------#
И пробуем еще раз, теперь должно все запуститься:
FreeBSD# service snmpd restart
Stopping snmpd.
Waiting for PIDS: 27711.
Starting snmpd.
Error 2 (No such file or directory) could not get the assoclist
Опять какая-то ошибка, немного погуглив яндексом в рамблере нашел страничку с описанием бага #2311, там говорится про ядро FreeBSD и отсутствие в нем SCTP (У меня в ядре как раз небыло этого SCTP) и эту ошибку можно спокойно проигнорировать. Ну чтож, если говорят, что все должно работать, то проверяем:
FreeBSD# sockstat | grep snmpd
root     snmpd      27758 6  udp4   *:161                 *:*
root     snmpd      27758 7  stream /var/agentx/master
root     snmpd      27758 8  tcp4   *:199                 *:*
root     snmpd      27758 9  stream /var/agentx/master
Как видим, snmpd слушает 161 порт (по нему работает протокол snmp) и сокет /var/agentx/master. Значит мы все сделали правильно, и теперь двигаемся дальше к настройке zabbix.
...... Тут должна быть часть о настройке Zabbix :) Позже допишу. ......

Ссылки по теме:
1. FreeBSD jails and net-snmp
2. SourceForge SNMPd bug: #2311 5.7.1 errors at startup on FreeBSD systems without SCTP
3. Asterisk MIB Definitions
4. asterisk-users mailing list - ASTERISK and SNMP
5. Мониторим Asterisk при помощи snmp и Zabbix

Комментариев нет:

Отправить комментарий