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)
## sec.name source community (alias clave de acceso)
com2sec local 127.0.0.1/32 public
com2sec localnet
192.168.1.0/24 public
#Se asigna ACL al grupo de lectura escritura
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 neosistec
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 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á vacío o lo creamos,posicionandonos en los directorios en los cuales snmp busca los ficheros:
$ 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
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$ ...
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 en:
http://www.debianadmin.com/linux-snmp-oids-for-cpumemory- and-disk-statistics.html
o de manera específica de algún dispositivo en concreto en:
http://www.mibdepot.com/cgi-bin/vendor_index.cgi?r=apache& id=103612
No hay comentarios:
Publicar un comentario