Прежде чем начинать собирать статистику с
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