User Tools

Site Tools


informatica:linux:snmp

SNMP

snmpd traps oid snmp-net

Instalar el agente en GNU/Linux

Demonio para contestar a peticiones snmp.

1. Instalar

sudo aptitude update; sudo aptitude install snmp snmpd -R

Si se quiere sensores de temperatura:

sudo aptitude update; sudo aptitude install snmp snmpd

2. Renombrar archivo de configuración original

sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

3. Crear un nuevo archivo de configuración:

sudo vim /etc/snmp/snmpd.conf

Con el siguiente contenido:

Variables:

  • 10.0.0.0/24 - Rango de IP's a las que se le permite acceso al demonio SNMP
  • community_name - contrasenya
com2sec local           localhost       community_name
com2sec mynetwork       10.0.0.0/24	community_name

group   MyROGroup       v1      mynetwork
group   MyROGroup       v2c     mynetwork
group   MyROGroup       usm     mynetwork

group   MyROGroup       v1      local
group   MyROGroup       v2c     local
group   MyROGroup       usm     local

view    all     included        .1

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

4. Guardar y salir

5. Reiniciar el demonio

sudo /etc/init.d/snmpd restart
ps ax | grep snmp

6. Probar:

snmpwalk -v 2c -c community_name localhost .1

Monitorizacion personalizada

Se pueden definir una serie de monitores en el archivo de configuracion de SNMP que permiten devolver informacion acerca de por ejemplo archivos de logs, carga en el sistema etc…

Logs

1. Editar:

sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak; sudo vim /etc/snmp/snmpd.conf

Y anyadir las siguientes linea:

logmatch test_errors /tmp/log.txt 10 ERROR
logmatch test_warnings /tmp/log.txt 10 WARNING

Semantica:

logmatch <name> <logfile> <refresh in seconds> <regex> 

2. Reiniciar el servicio SNMP:

sudo /etc/init.d/snmpd restart

3. Crear el archivo de log:

touch /tmp/log.txt
echo "ERROR" >> /tmp/log.txt
echo "ERROR" >> /tmp/log.txt
echo "WARNING" >> /tmp/log.txt

4. Ver el contador (se refresca cada 10 segundos segun el ejemplo):

snmpwalk -v 2c -c jj.com test-6.dev.jj.com .1.3.6.1.4.1.2021.16

iso.3.6.1.4.1.2021.16.2.1.1.1 = INTEGER: 1
iso.3.6.1.4.1.2021.16.2.1.1.2 = INTEGER: 2
iso.3.6.1.4.1.2021.16.2.1.2.1 = STRING: "test_errors"
iso.3.6.1.4.1.2021.16.2.1.2.2 = STRING: "test_warnings"
iso.3.6.1.4.1.2021.16.2.1.3.1 = STRING: "/tmp/log.txt"
iso.3.6.1.4.1.2021.16.2.1.3.2 = STRING: "/tmp/log.txt"
iso.3.6.1.4.1.2021.16.2.1.4.1 = STRING: "ERROR"
iso.3.6.1.4.1.2021.16.2.1.4.2 = STRING: "WARNING"
iso.3.6.1.4.1.2021.16.2.1.5.1 = Counter32: 2
iso.3.6.1.4.1.2021.16.2.1.5.2 = Counter32: 1
iso.3.6.1.4.1.2021.16.2.1.6.1 = INTEGER: 2
iso.3.6.1.4.1.2021.16.2.1.6.2 = INTEGER: 1
iso.3.6.1.4.1.2021.16.2.1.7.1 = Counter32: 2
iso.3.6.1.4.1.2021.16.2.1.7.2 = Counter32: 1
iso.3.6.1.4.1.2021.16.2.1.8.1 = INTEGER: 2
iso.3.6.1.4.1.2021.16.2.1.8.2 = INTEGER: 1
iso.3.6.1.4.1.2021.16.2.1.9.1 = Counter32: 2
iso.3.6.1.4.1.2021.16.2.1.9.2 = Counter32: 1
iso.3.6.1.4.1.2021.16.2.1.10.1 = INTEGER: 0
iso.3.6.1.4.1.2021.16.2.1.10.2 = INTEGER: 0
iso.3.6.1.4.1.2021.16.2.1.11.1 = INTEGER: 10
iso.3.6.1.4.1.2021.16.2.1.11.2 = INTEGER: 10
iso.3.6.1.4.1.2021.16.2.1.100.1 = INTEGER: 0
iso.3.6.1.4.1.2021.16.2.1.100.2 = INTEGER: 0
iso.3.6.1.4.1.2021.16.2.1.101.1 = STRING: "Success"
iso.3.6.1.4.1.2021.16.2.1.101.2 = STRING: "Success"

Si queremos ver el numero actual de veces que se encuentra la cadena para la primera entrada 'logmatch' ('test_errors' en nuestro ejemplo):

snmpwalk -v 2c -c jj.com test-6.dev.jj.com .1.3.6.1.4.1.2021.16.2.1.6.1
iso.3.6.1.4.1.2021.16.2.1.6.1 = INTEGER: 2

Para la siguiente entrada:

snmpwalk -v 2c -c jj.com test-6.dev.jj.com .1.3.6.1.4.1.2021.16.2.1.6.2
iso.3.6.1.4.1.2021.16.2.1.6.1 = INTEGER: 1

Etc…

Traps en GNU/Linux

Receta nueva (ene/2018)

Recibir

1. Instalar paquete:

sudo apt-get install snmptrapd

2. Crear archivo donde se escribirán los traps:

sudo touch /var/log/snmp-traps.log

3. Configurar la autenticación, en este caso le ponemos “s3cr3t” de contraseña:

sudo cp /etc/snmp/snmptrapd.conf /etc/snmp/snmptrapd.conf.bak
sudo vim /etc/snmp/snmptrapd.conf

Añadir:

doNotRetainNotificationLogs yes
authCommunity log C311n3x

4. Arrancar

TODO: arrancar como servicio. Sospecho que relacionado con esto:

/etc/default/snmptrapd

# snmptrapd control (yes means start daemon).  As of net-snmp version
# 5.0, master agentx support must be enabled in snmpd before snmptrapd
# can be run.  See snmpd.conf(5) for how to do this.
TRAPDRUN=no
  • Con autenticación y formato:
sudo snmptrapd -A -Lf /var/log/snmp-traps.log -F "%y-%m-%l %h:%j:%k a:_%a_ A:_%A_ b:_%b_ B:_%B_ N:_%N_ q:_%q_ v:_%v_ w:_%w_ W:_%W_\n"

* Sin autenticación:
sudo snmptrapd -A -Lf /var/log/snmp-traps.log --disableAuthorization=yes
  • Escuchando en el puerto TCP 666:
snmptrapd -A -Lf /var/log/snmp-traps.log --disableAuthorization=yes TCP:666

En Amazon no recibía los traps en el puerto por defecto, UDP 161

Enviar

  • Versión 1 al puerto y protocolo por defecto:
snmptrap -v 1 -c s3cr3t example.com .1.3.6.1 localhost 6 17 '' .1.3.6.1 s "Just a test SNMP trap"
  • Versión 1 al puerto TCP 666:
snmptrap -v 1 -c s3cr3t TCP:example.com:666 .1.3.6.1 localhost 6 17 '' .1.3.6.1 s "Just a test SNMP trap"

Receta antigua

Asumimos el siguiente escenario:

Maquina Comentario Version SNMP Community name
servidor Recibe el trap 2 community_name
cliente Envia el trap 2 -

1. (servidor) Habilitar traps. Editar:

sudo cp /etc/default/snmpd /etc/default/snmpd.bak; sudo vim /etc/default/snmpd

Y anyadir/editar la siguiente linea:

TRAPDRUN=yes

2. Editar:

sudo cp /etc/snmp/snmptrapd.conf /etc/snmp/snmptrapd.conf.bak; sudo vim /etc/snmp/snmptrapd.conf

Y anyadir/editar las siguientes lineas:

authCommunity log community_name
logoption f /var/log/snmp_traps.log
doNotLogTraps yes

'community_name' es el SNMP community name del servidor

3. (servidor) Reiniciar el servicio SNMP:

sudo /etc/init.d/snmpd restart
Restarting network management services: snmpd snmptrapd.

Nos aseguramos que el servicio “snmptrapd” esta ahora corriendo:

ps ax | grep snmptrapd
 4222 ?        Ss     0:00 /usr/sbin/snmptrapd -Lsd -p /var/run/snmptrapd.pid
 4226 pts/0    S+     0:00 grep snmptrapd

4. (cliente) Creamos una MIB de prueba

sudo vim /usr/share/mibs/netsnmp/NOTIFICATION-TEST-MIB

Con el siguiente contenido:

NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN
        IMPORTS ucdavis FROM UCD-SNMP-MIB;

demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 }

demo-notif NOTIFICATION-TYPE
	STATUS current
        OBJECTS { sysLocation }
	DESCRIPTION "Just a test notification"
        ::= { demonotifs 17 }

END

5. (cliente) Enviamos un trap:

snmptrap -v 2c -c community_name servidor '' NOTIFICATION-TEST-MIB::demo-notif SNMPv2-MIB::sysLocation.0 s "just here"

Cannot rename /var/lib/snmp/snmpapp.conf to /var/lib/snmp/snmpapp.0.conf
Cannot unlink /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf
read_config_store open failure on /var/lib/snmp/snmpapp.conf

Los errores pueden ignorarse, es una cuestion de permisos

6. (servidor) Comprobamos que ha llegado el trap:

sudo cat /var/log/snmp_traps.log 

Y veremos entradas como esta:

2012-11-02 14:09:20 cliente [UDP: [10.0.0.5]:49782->[10.0.0.6]]:
iso.3.6.1.2.1.1.3.0 = Timeticks: (6747914) 18:44:39.14	iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.4.1.2021.991.17	iso.3.6.1.2.1.1.6.0 = STRING: "just here"

TODO Instalar y configurar snmptt para un tratamiento avanzado de los traps

OID

Windows .1.3.6.1.4.1.9600.1.1.5.1.1.48 Total CPU (User?)
Windows .1.3.6.1.4.1.9600.1.1.5.1.1.49 Total CPU (User?)
GNU/Linux .1.3.6.1.4.1.2021.13.15.1.1.1 UCD-DISKIO-MIB::diskIONRead
GNU/Linux .1.3.6.1.4.1.2021.13.15.1.1.6 UCD-DISKIO-MIB::diskIOWrites

Consultas

Version 1 snmpwalk -v 1 -c contrasenya maquina1.dominio.com .1
Version 2 snmpwalk -v 2c -c contrasenya maquina1.dominio.com .1
Version 3 snmpwalk -v 3 -a MD5 -A contrasenya -l authPriv -u usuario -x DES -X contrasenya maquina1.dominio.com .1

Nanostation

Con Nagios:

# /usr/lib/nagios/plugins/check_snmp -H 10.139.56.138 -o .1.3.6.1.2.1.1.3.0 -C public
SNMP OK - Timeticks: (97924400) 11 days, 8:00:44.00 | 

Para sacar todos los OIDs:

# snmpwalk -v1 -c public 10.139.56.138
iso.3.6.1.2.1.1.1.0 = STRING: "Linux 2.4.27-ubnt0 #12 Fri Feb 8 16:27:07 EET 2008 mips"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.10002.1
iso.3.6.1.2.1.1.3.0 = Timeticks: (97963500) 11 days, 8:07:15.00
iso.3.6.1.2.1.1.4.0 = STRING: "guifi@guifi.net"
iso.3.6.1.2.1.1.5.0 = STRING: "MatAAVVEscorxadorRd1"
iso.3.6.1.2.1.1.6.0 = STRING: "MatAAVVEscorxador"
iso.3.6.1.2.1.1.7.0 = INTEGER: 79
iso.3.6.1.2.1.1.8.0 = Timeticks: (1100) 0:00:11.00
iso.3.6.1.2.1.1.9.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.1.9.1.1.2 = INTEGER: 2
iso.3.6.1.2.1.1.9.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.1.9.1.1.4 = INTEGER: 4
iso.3.6.1.2.1.1.9.1.1.5 = INTEGER: 5
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.1
.............

Per veure les interfícies per recolectar:

# snmpwalk -Os -c public -v 1 10.140.53.35 1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "venet0"

Trànsit. L'últim número es la interfície. Si hi ha 3 sortirien 3:

IN:
# snmpwalk -Os -c public -v 1 10.140.53.35 iso.3.6.1.2.1.2.2.1.10
iso.3.6.1.2.1.2.2.1.10.1 = Counter32: 44295734
iso.3.6.1.2.1.2.2.1.10.2 = Counter32: 1208746161
OUT:
# snmpwalk -Os -c public -v 1 10.140.53.35 iso.3.6.1.2.1.2.2.1.16
iso.3.6.1.2.1.2.2.1.16.1 = Counter32: 44295734
iso.3.6.1.2.1.2.2.1.16.2 = Counter32: 1130004646

Ejemplos:

Sistema

Uptime - 1.3.6.1.2.1.1.3.0

Network: Si al final se le pone un número (por ejemplo .7) es la interfície

Signal Strength - 1.3.6.1.4.1.14988.1.1.1.1.1.4
TX Data Rate - 1.3.6.1.4.1.14988.1.1.1.1.1.2
RX Data Rate - 1.3.6.1.4.1.14988.1.1.1.1.1.3
Frequency (eg 5180....) - 1.3.6.1.4.1.14988.1.1.1.1.1.7
last number .7 is interface index.

CPU usage:

1 Minute Average - 1.3.6.1.4.1.10002.1.1.1.4.2.1.3.1
5 Minute Average - 1.3.6.1.4.1.10002.1.1.1.4.2.1.3.2
15 Minute Average - 1.3.6.1.4.1.10002.1.1.1.4.2.1.3.3

Memory:

Total memory - 1.3.6.1.4.1.10002.1.1.1.1.1.0
Free memory - 1.3.6.1.4.1.10002.1.1.1.1.2.0

Mikrotik

Post tempuratura y voltage: http://forum.mikrotik.com/viewtopic.php?f=3&t=49282

Desde la mikrotik sacar OID:

/interface wireless print oid
/system health print oid
/system resource print oid
[admin@Escorxador] > interface wireless print oid 
 0 ;;; Omni
   tx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.2.3 rx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.3.3 ssid=.1.3.6.1.4.1.14988.1.1.1.3.1.4.3 
   bssid=.1.3.6.1.4.1.14988.1.1.1.3.1.5.3 client-count=.1.3.6.1.4.1.14988.1.1.1.3.1.6.3 frequency=.1.3.6.1.4.1.14988.1.1.1.3.1.7.3 
   band=.1.3.6.1.4.1.14988.1.1.1.3.1.8.3 noise-floor=.1.3.6.1.4.1.14988.1.1.1.3.1.9.3 overall-ccq=.1.3.6.1.4.1.14988.1.1.1.3.1.10.3 

 1 tx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.2.15 rx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.3.15 ssid=.1.3.6.1.4.1.14988.1.1.1.3.1.4.15 
   bssid=.1.3.6.1.4.1.14988.1.1.1.3.1.5.15 client-count=.1.3.6.1.4.1.14988.1.1.1.3.1.6.15 frequency=.1.3.6.1.4.1.14988.1.1.1.3.1.7.15 
   band=.1.3.6.1.4.1.14988.1.1.1.3.1.8.15 noise-floor=.1.3.6.1.4.1.14988.1.1.1.3.1.9.15 overall-ccq=.1.3.6.1.4.1.14988.1.1.1.3.1.10.15 

 2 ;;; Troncal Sant Simo
   tx-rate=.1.3.6.1.4.1.14988.1.1.1.1.1.2.14 rx-rate=.1.3.6.1.4.1.14988.1.1.1.1.1.3.14 strength=.1.3.6.1.4.1.14988.1.1.1.1.1.4.14 
   ssid=.1.3.6.1.4.1.14988.1.1.1.1.1.5.14 bssid=.1.3.6.1.4.1.14988.1.1.1.1.1.6.14 frequency=.1.3.6.1.4.1.14988.1.1.1.1.1.7.14 
   band=.1.3.6.1.4.1.14988.1.1.1.1.1.8.14 tx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.2.14 rx-rate=.1.3.6.1.4.1.14988.1.1.1.3.1.3.14 
   ssid=.1.3.6.1.4.1.14988.1.1.1.3.1.4.14 bssid=.1.3.6.1.4.1.14988.1.1.1.3.1.5.14 client-count=.1.3.6.1.4.1.14988.1.1.1.3.1.6.14 
   frequency=.1.3.6.1.4.1.14988.1.1.1.3.1.7.14 band=.1.3.6.1.4.1.14988.1.1.1.3.1.8.14 noise-floor=.1.3.6.1.4.1.14988.1.1.1.3.1.9.14 
   overall-ccq=.1.3.6.1.4.1.14988.1.1.1.3.1.10.14 

Enlaces

Comandos varios

Habilitar snmptranslate

informatica/linux/snmp.txt · Last modified: 2018/01/03 15:55 by javi