Mostrar alertas en Nagios con SNMP TRAPS

La monitorización de dispositivos de red, suele realizarse mediante SNMP, pero como es lógico no es bueno estar sondeando toda nuestra electrónica o dispositivos de red mediante SNMP, por lo que en estos dispositivos podemos configurar que remita los SNMP TRAPS hacia nuestro servidor Nagios cuando surja un evento.

Si aún no tienes un sistema de monitorización con Nagios instalado, te recomendaría ver los siguientes enlaces ya que toda la explicación de directorios y configuraciones la haré en base al proceso de instalación que expliqué en mis vídeos.

En mi canal de Youtube:

  1. Cómo instalar Nagios 4 en Ubuntu
  2. Cómo monitorizar un servidor Microsoft Windows con Nagios
  3. Cómo monitorizar un servidor Linux con Nagios
  4. Cómo monitorizar electrónica de red con Nagios
  5. Cómo actualizar Nagios Core
  6. Cómo instalar un Theme y paquete de iconos en Nagios

Configurar y definir el servicio de SNMP_TRAP

Editaremos el fichero templates.cfg ubicado en /usr/local/nagios/etc/objects/

sudo nano /usr/local/nagios/etc/objects/templates.cfg

Dentro de este fichero añadiremos las siguientes líneas:

define service {
name                            SNMP_TRAP
service_description             SNMP_TRAP
active_checks_enabled           1       
passive_checks_enabled          1       
parallelize_check               1       
process_perf_data               0
obsess_over_service             0       
check_freshness                 0       
notifications_enabled           1       
event_handler_enabled           1       
flap_detection_enabled          1       
process_perf_data               1       
retain_status_information       1       
retain_nonstatus_information    1       
check_command                   check-host-alive      
is_volatile                     1
check_period                    24x7
max_check_attempts              1
normal_check_interval           1
retry_check_interval            1
notification_interval           15 ;Las notificaciones será cada 15 minutos
notification_period             24x7
notification_options            w,u,c,r
contact_groups                  admins       
register                        0
}

Crear un fichero para la configuración del chequeo de los SNMP TRAP

Vamos a crear un nuevo fichero dentro del directorio /usr/local/nagios/etc/objects/ que se llamará snmptrap.cfg, para que así siempre que incluyamos un nuevo host o dispositivo a uno de los grupos de monitorización, lo podamos agregar aquí. Para este ejemplo yo agregaré dos grupos (switches-oficina y switches-cpd)

sudo nano /usr/local/nagios/etc/objects/snmptrap.cfg

Dentro de este fichero incluiremos las siguientes líneas:

define service {
use                 SNMP_TRAP
hostgroup_name      switches-oficina,switches-cpd
service_description Mensaje SNMP TRAP
check_interval      15 ; Realizaremos las comprobaciones cada 15 minutos
}

En el «use» podéis ver que utlizaremos el servicio que hemos definido en nuestro fichero de «templates.cfg» como SNMP_TRAP.

Si por ejemplo, creamos un nuevo fichero donde definimos por ejemplo los switches de fibra de nuestro almacenamiento, podremos venir al fichero anterior (snmptrap.cfg) y añadir en hostgroup_name lo siguiente:

define service {
use                 SNMP_TRAP
hostgroup_name      switches-oficina,switches-cpd,switches-fibra
service_description TRAP
check_interval      15
}

Para que el Nagios utilice el fichero que hemos creado de snmptrap.cfg, debemos editar el fichero nagios.cfg y agregarlo; para ello:

sudo nano /usr/local/nagios/etc/nagios.cfg

Añadiremos la siguiente línea:

cfg_file=/usr/local/nagios/etc/objects/snmptrap.cfg

Después de haber realizado todas estas configuraciones, debemos reiniciar el servicio de nagios.

Modificar el fichero submit_check_result

Este fichero si os habéis descargado la última versión de nagios (4.3.2) lo podréis encontrar donde habéis descomprimido el archivo con todo el código (/nagios-4.3.2/contrib/eventhandlers/)

Por si no lo habéis descargado os lo dejo aquí ya modificado, sólo tendréis que crear un fichero con el nombre submit_check_result y guardarlo en /usr/local/nagios/libexec/

Originalmente este fichero en su primera línea contiene:

#!/bin/sh

Si se ejecuta desde una línea de comandos, funcionará perfectamente, pero cuando lo llamemos desde snmptt, fallará, por eso se modifica poniendo #!/bin/bash

#!/bin/bash

# SUBMIT_CHECK_RESULT
# Written by Ethan Galstad (egalstad@nagios.org)
# Last Modified: 02-18-2002
#
# This script will write a command to the Nagios command
# file to cause Nagios to process a passive service check
# result.  Note: This script is intended to be run on the
# same host that is running Nagios.  If you want to
# submit passive check results from a remote machine, look
# at using the nsca addon.
#
# Arguments:
#  $1 = host_name (Short name of host that the service is
#       associated with)
#  $2 = svc_description (Description of the service)
#  $3 = return_code (An integer that determines the state
#       of the service check, 0=OK, 1=WARNING, 2=CRITICAL,
#       3=UNKNOWN).
#  $4 = plugin_output (A text string that should be used
#       as the plugin output for the service check)
#

echocmd="/bin/echo"

CommandFile="/usr/local/nagios/var/rw/nagios.cmd"

# get the current date/time in seconds since UNIX epoch
datetime=`date +%s`

# create the command line to add to the command file
cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"

# append the command to the end of the command file
`$echocmd $cmdline >> $CommandFile`

Instalar snmpd y snmptt

En principio si has llegado a este artículo seguramente ya tengas instalados estos paquetes, pero para los que no los tengan, deberán ejecutar lo siguiente:

sudo apt-get install snmptt snmpd -y

Descargar e instalar MIBs

Por defecto snmptt buscará los Mibs a utilizar en el siguiente directorio /usr/share/snmp/mibs, por lo que todos los mibs que necesitemos descargar, lo haremos ahí.

Para seguir este ejemplo descargaremos los Mibs del Switch Cisco SF300-24P desde este enlace; descomprimiendo y ubicando todos los ficheros y el directorio que se encuetra dentro de /usr/share/snmp/mibs

Configurar snmptrapd

Editaremos el fichero snmptrapd.conf que se encuentra en el directorio /etc/snmp

sudo nano /etc/snmp/snmptrapd.conf

Agregamos al final del fichero las siguientes líneas:

disableAuthorization yes
traphandle default /usr/sbin/snmptthandler

Convertir los Mibs

Ya que seguramente nos hemos descargado Mibs de varios dispositivos, podemos ejecutar lo siguiente:

for f in /usr/share/snmp/mibs/*; do snmpttconvertmib --in=$f --out=/etc/snmp/snmptt.conf --debug --exec='/usr/local/nagios/libexec/submit_check_result $r TRAP 2' ; done

Ahora ya podemos reiniciar snmptt:

sudo systemctl restart snmptt

Verificamos que está corriendo ejecutando:

sudo systemctl status snmptt

Comprobar que funciona

Dentro de nuestra infraestructura de nagios, tenemos un switch con hostname switchxxx, y que está dentro del grupo switches-oficina, por lo que desde consola podemos ejecutar lo siguiente:

/usr/local/nagios/libexec/submit_check_result switchxxx TRAP 2 "Tutorial Blog"

Si accedemos a nuestro host dentro de Nagios, deberíamos ver lo siguiente:

 

 

 

Espero que os sea de ayuda 🙂

 

Sobre Bosco López

/dev/null

Te puede interesar también

Notificaciones de Nagios vía Telegram

En este artículo veremos como configurar nuestro Nagios para que nos informe de las distintas …

2 Comentarios

  1. Hola Bosco.

    Estoy siguiendo tu entrada para configurar los Traps en Nagios pero no me funcionan.
    Hay una cosa que me desconcierta cuando creas el servicio SNMP_TRAP. El comando que se invoca es:

    check-host-alive

    Y yo no encuentro ese comando por ninguna parte.

    Un saludo

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.