Setting up SNMP Y NAGIOS

Share it!

Para instalar y configurar el SERVIDOR snmpd en Debian Etch hay que instalar los siguientes paquetes:

 snmpd,snmp,tkmib ( browser gtk de OID´s )

Después, los ficheros y directorios a tener en cuenta son:

/etc/snmp/snmpd.conf
/etc/default/snmpd
/usr/share/snmp/mibs/.index
/usr/share/snmp/mibs/

Metemos el servicio snmpd para que arranque automaticamente cada vez que arrancamos la máquina:
$ update-rc.d snmpd defaults

Para /etc/snmp/snmpd.conf la configuración utilizada es la siguiente:

# Listas de control de acceso (ACL)
# source community (alias clave de acceso)
com2sec local 127.0.0.1/32 public
com2sec localnet
192.168.1.0/24 public
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local

#Se asigna ACL al grupo de solo lectura
group MyROGroup v1 localnet
group MyROGroup v2c localnet
group MyROGroup usm localnet

# Ramas MIB que se permiten ver
## name incl/excl subtree mask(optional)
view all included .1 80

# Establece permisos de lectura y escritura
## group context sec.model sec.level prefix read write notif

access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all all

# Información de Contacto del Sistema

syslocation pinzatec
syscontact admin@migato.miperro.net

$ /etc/init.d/snmpd restart

Si todo ha funcionado,lo cual es improbable,deberías poder hacer consultas a la interfaz localhost de la siguiente manera:

$ snmpwalk localhost -c public -v2c system

Se debería mostrar la siguiente información ( sólo una pequeña muestra ):

SNMPv2-MIB::sysDescr.0 = STRING: Linux debian 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1470573) 4:05:
05.73
SNMPv2-MIB::sysContact.0 = STRING: Unknown
SNMPv2-MIB::sysName.0 = STRING: debian
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1
= OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB

Si recibimos un mensaje de error similar al siguiente:

system: Unknown Object Identifier (Sub-id not found: (top) -> system) ( entre otros )

O parecido a:
Cannot find module (IP-MIB): At line 0 in (none) ( entre otros )

Eso es debido a que el sistema no puede encontrar la ubicacion de las MIB,para verificar donde se encuentran usar el siguiente comando:

snmpwalk -Dparse-mibs -v 1 -c private 127.0.0.1 127.0.0.1 system

Este comando nos indicará donde está buscando las MIBs,con lo cual podemos verificar si las ha encontrado correctamente (son ficheros .txt),de lo contrario debemos copiar los ficheros que se encuentran en /usr/share/snmp/mibs/ a los directorios en los que busca.

Existe un error en el paquete snmpd de Debian Etch documentado,por el cual el sistema no genera por sí solo el fichero .index en el directorio donde se guardan las MIB,verificamos que está $

$ for i in *.txt; do echo $(basename $i .txt) $i>>.index; done

Una vez hecho esto volvemos a ejecutar:   

$ snmpwalk -Dparse-mibs -v 1 -c private 127.0.0.1 system

Si todo ha ido correctamente cargará las MIBs y nos dirá index ok o similar

Volvemos a ejecutar:

$ snmpwalk localhost -c public -v2c system

Si todo ha funcionado debe salir la información por pantalla correctamente. 
Eso en cuanto a la configuración local del servidor.

Para monitorizar los clientes debemos seguir los mismos pasos descritos     
anteriormente, además, ejecutando:

$ netstat -a|grep snmp

Podemos ver como sólo escucha por la interfaz de localhost,con lo cual si   
ejecutamos snmpwalk atacando a una máquina remota que cumpla las            
características de los ficheros de configuración obtendremos "Timeout       
response from 192.xxx.xx.x". Esto se corrige editando en el fichero         
/etc/default/snmpd la siguiente linea:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid        
localhost'

Se cambia a:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

Ahora volvemos a verificar:

$ netstat -a|grep snmp

udp        0      0 *:snmp                  *:*

Ya escucha por todas las interfaces

$ snmpwalk localhost -c public -v2c system

$ snmpwalk -v 2c 192.168.x.x -c public system

/usr/local/nagios/etc/commands.cfg
/usr/local/nagios/etc/services.cfg

define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o $ARG1$
}

En éste ejemplo sólo funcionamos con dos argumentos,la ip del equipo remoto 
y -o para el OID que especifiquemos posteriormente en el services.cfg. Para 
peticiones snmp que requieran más argumentos sólo habrá que añadirlos en    
otra definicion similar a:

check_snmp -H $HOSTADDRESS$ -o $ARG1$ -c $ARG2$ ...
define service{
host_name pc-javi,pc-julio
service_description RAM IN MACHINE
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admin

notification_interval 240
notification_period 24x7
notification_options w,u,c,r
check_command check_snmp!.1.3.6.1.4.1.2021.<wbr>4.5.0 # RAM IN OID MACHINE } 

De ésta manera ya deberíamos poder ejecutar snmpwalk tanto localmente como a
equipos remotos.No olvidar de reiniciar el servicio snmpd con cada nueva
configuración.

Una vez que todo funcione correctamente y que se puedan hacer peticiones
manuales desde la linea de comandos hay que implementarlo en los ficheros de
nagios que son:

/usr/local/nagios/etc/commands.cfg /usr/local/nagios/etc/services.cfg
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o $ARG1$
}

En éste ejemplo sólo funcionamos con dos argumentos,la ip del equipo remoto 
y -o para el OID que especifiquemos posteriormente en el services.cfg. Para 
peticiones snmp que requieran más argumentos sólo habrá que añadirlos en
otra definicion similar a:

check_snmp -H $HOSTADDRESS$ -o $ARG1$ -c $ARG2$ ...</pre>
&amp;nbsp;

</wbr></wbr></pre>
[sourcecode language='css']
define service{
host_name pc-javi,pc-julio
service_description RAM IN MACHINE
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admin

notification_interval 240
notification_period 24x7
notification_options w,u,c,r
check_command check_snmp!.1.3.6.1.4.1.2021.4.5.0 # RAM IN OID MACHINE
}

Tan sólo habrá que especificar el OID,el cual podemos buscar los genéricos
aquí o aquí

Share it!
Esta entrada fue publicada en GNU\Linux Servers. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>