======= 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 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 [[http://snmptt.sourceforge.net/docs/snmptt.shtml|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 ====== http://www.ubnt.com/forum/showthread.php?t=13543 http://www.mikrotik.com/documentation//manual_2.9/Mikrotik.mib http://www.ubnt.com/forum/showthread.php?t=26169 Cacti: http://www.ubnt.com/forum/showthread.php?t=7186 ====== Comandos varios ====== http://www.net-snmp.org/wiki/index.php/TUT:snmptranslate ====== Habilitar snmptranslate ====== https://wiki.debian.org/SNMP