Прежде чем начинать собирать статистику с 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
    
  2. Опять какая-то ошибка, немного погуглив яндексом в рамблере нашел страничку с описанием бага #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` порт и **UNIX**-сокет `/var/agentx/master`. Значит мы все сделали правильно, и теперь двигаемся дальше к настройке **zabbix**.
    

...... Тут должна быть часть о настройке Zabbix :) Когла-нибудь допишу. ......

Настройка сервера Zabbix Основную работу мы проделали. Теперь нам нужно подключить сервер к Zabbix и добавить туда шаблон. Сначала добавим шаблон, это делается в меню Настройки – Шаблон – Импорт шаблона. Шаблон можно скачать тут. Перед тем, как импортировать его, все значения PASSWORD нужно сменить на тот пароль, который вы указали в snmpd.conf. Теперь добавим наш сервер Настройка – Узлы сети – Создать узел сети. Заполняем поля, вводим название хоста, его ИП адрес, присоединяем шаблон, который мы импортировали. Все, теперь все должно работать. Шаблон умеет показывать количество каналов, версию , аптайм , ИД процесса, количество загруженных модулей. Так же в шаблоне есть встроенный график, отображающий количество каналов.


Ссылки по теме:

  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