Gonzalo Marcote | Open source, open mind

Blog personal sobre GNU/Linux, programación, virtualización y vozip

Monitorizar asterisk con snmp en Debian o Ubuntu

leave a comment

Publico este post, porque di bastantes vueltas hasta que pude echarlo a andar, ya que en en un servidor debian o ubutnu el tema es un poco diferente.

Instalamos los siguientes paquetes para que asterisk tenga soporte SNMP:
aptitude install libsnmp15 libsnmp-base libsnmp-dev

Cuando hagamos el ‘make menuconfig’ nos aseguramos que en ‘Resource Modules’ esté seleccionado el módulo ‘res_snmp’.

Una vez compilado tendremos en nuestro dir /etc/asterisk el archivo res_snmp.conf

Nos aseguramos en el CLI de que esta cargado:
pulsar*CLI> module show like snmp
Module Description Use Count
res_snmp.so SNMP [Sub]Agent for Asterisk 0
1 modules loaded

Ahora procedemos a instalar los paquetes: snmp y snmpd
aptitude install snmp snmpd

Hacemos una copia del archivo /etc/snmp/snmpd.conf y procedemos a editarlo. Ponemos:
master agentx
agentXPerms 0660 0660 root root

com2sec local localhost nombre_comunidad
com2sec mynetwork 192.168.X.0/24 nombre_comunidad

group MyROGroup any local
group MyROGroup any mynetwork

view all included .1

access MyROGroup "" any noauth 0 all none none

Yo pongo user y group ‘root root’ porque corro asterisk como root.
En los datos de la red (192.168.X.0/24) tienes que poner los datos de tu red para que puedas acceder a los datos desde ella (también podríamos validar tan solo una cierta IP).
También tienes que poner el nombre de tu comunidad snmp.

A continuación reiniciamos el servicio:
# service snmpd restart

A continuación configuramos en asterisk el archivo /etc/asterisk/res_snmp.conf y descomentamos ambas líneas:
;
; Configuration file for res_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

Ahora vamos al dir de las sources de asterisk y copiamos los archivos .mib.tx al dir /usr/share/snmp/mibs:

# cd /usr/src/asterisk-1.6.0.XX/doc
# cp digium-mib.txt /usr/share/snmp/mibs/
# cp asterisk-mib.txt /usr/share/snmp/mibs/

Reiniciamos el servicio snmpd de nuevo:
# service snmpd restart

Y exportamos los MIBS:
# export MIBS=+ASTERISK-MIB

Por último reiniciamos asterisk:
CLI> core restart when convenient

Probamos que asterisk nos de toda la información por snmp:
# snmpwalk -On -c nombre_cominudad -v 2c localhost .1.3.6.1.4.1.22736

Y debería de salirte un porrón de información sobre lo que esta pasando en asterisk (canales, llamadas, extenciones, etc, etc)

El motivo por el cual no lograba hacerlo funcionar en Debian o en Ubuntu desde otra máquina es por que esta habilitado para escuchar solo en localhost. Para que puedas leerlo desde otro equipo o aplicación tienes que hacer este cambio en /etc/default/snmpd:
#SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1 -x /var/agentx/master'
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid -x /var/agentx/master'

Quitando la ip para que escuche solo en localhost y reiniciar el servicio.

Ahora ya podemos acceder desde nagios o PTRG por ej.

Fuentes:
http://www.danielaliaman.com/blog/files/AsteriskSNMPtutorial.pdf

Written by Gonzalo

Julio 29th, 2010 at 4:52 pm

Posted in asterisk,ubuntu,voip

Leave a Reply