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> &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í