Red de conocimiento informático - Material del sitio web - Cómo extender Nagios para implementar monitoreo personalizado

Cómo extender Nagios para implementar monitoreo personalizado

Si no puede encontrar un complemento que cumpla con sus requisitos, es fácil escribirlo usted mismo. Este artículo presenta cómo escribir un complemento usted mismo.

Los complementos de Nagios se pueden escribir en cualquier lenguaje de programación, siempre que el lenguaje de programación sea compatible con la plataforma que ejecuta Nagios. Bash es un lenguaje popular para escribir complementos de Nagios porque es potente y fácil de usar.

Cada verificación válida de Nagios con la ayuda de un complemento genera un estado de salida numérico. Los estados posibles son:

0: todos los aspectos son normales y la verificación se completó con éxito.

1--El recurso está en estado de advertencia. Algo no está del todo bien en alguna parte.

2--El recurso se encuentra en estado crítico. El motivo puede ser que el host esté inactivo o que el servicio no se esté ejecutando.

3--Estado desconocido, esto no necesariamente indica que haya un problema, sino que la verificación no da un estado claro y definitivo.

El complemento también puede generar mensajes de texto. De forma predeterminada, este mensaje se muestra en la interfaz web de Nagios y en los mensajes de alerta de correo de Nagios. Aunque los mensajes no son obligatorios, normalmente puedes encontrarlos en los complementos disponibles porque los mensajes le dicen al usuario qué salió mal sin obligarlo a consultar la documentación.

Un complemento simple de Nagios escrito en Bash es similar a este. Este complemento de ejemplo verifica un archivo específico:

#!/bin/bash

#Especifique el primer argumento ($1) como nombre del archivo

filename=$1

#Primero verifique si el archivo existe. Esta es la primera y más básica comprobación con la que debes empezar.

if [ ! -e $filename ]; thenecho "Estado CRÍTICO - el archivo $filename no existe"

salir 2 #Regresar al estado crítico, eso se debe a lo peor Lo que pasa es que el archivo simplemente no existe.

#Si se cumple la condición anterior (el archivo existe), verifique si el archivo es legible:

elif [ ! -r $nombre de archivo ]; el nombre del archivo no es legible."

salir 1 #Volver al estado de advertencia, esto se debe a que este estado es mejor que el archivo que no existe en absoluto;

#Si se cumple la condición anterior, compruebe si no es un archivo normal, ni un directorio o archivo de dispositivo.

elif [ ! -f $nombredearchivo ]; thenecho "Estado DESCONOCIDO - el archivo $nombredearchivo no es un archivo."

salir 3 #Regresar al estado desconocido;

#Si se pasan todas las comprobaciones anteriores, entonces significa que está bien:

elseecho "Estado correcto - el archivo está bien"exit 0 #Devolver estado correctofi

Comentario (comienza con # en Bash ) explica el código; si necesita una explicación más clara o desea obtener más información sobre el operador de prueba de archivos de Bash, consulte la documentación (que se define como un comando de Nagios en mands.cfg. Suponiendo que haya nombrado el script check_file. sh, agregue la siguiente definición de comando:

#Nuestro comando de verificación de archivos personalizado:

define comando{command_name check_filecommand_line $USER1$/check_file.sh $ARG1$}

Esto debería quedar bastante claro. La variable $ARG1$ representa el primer argumento pasado al comando de Nagios, en este caso, el primer argumento debe ser el nombre del archivo.

Si desea pasar más argumentos, puede usar $ARG2$ como segundo argumento, $ARG3$ como tercer argumento, y así sucesivamente.

Para comenzar a usar su complemento, defínalo como un servicio en su archivo de configuración de Nagios (como service.cfg):

defina servicio{use local-servicehost_name localhostservice_description Verifique el file /etc/passwdcheck_command check_file!/etc/passwd}

El servicio anterior está definido para el host local (host_name

localhost), use una plantilla para el servicio local (use local - servicio), consulte la sección de herencia de objetos del documento de civilización para obtener más detalles

(comando mand. Especifica el comando check_file, seguido de un signo de exclamación como separador, seguido del nombre del archivo como parámetro real

nombre. Si su complemento tiene más de un argumento, puede separarlo con signos de exclamación adicionales.

Ejecutar el complemento de Nagios de forma remota

Una desventaja obvia. el complemento check_file de ejemplo es local en ejecución, lo que significa que el archivo en el servidor remoto no se puede verificar. Tiene muchas formas de resolver este problema.

La primera es utilizar el comando ssh. para ejecutar el código de forma remota en el servidor, puede usar ssh para ejecutar comandos remotos. Esto también requiere que configure un inicio de sesión con clave sin contraseña para el servidor Nagios y su usuario de Nagios. Consulte este artículo

/blog/opensource/remotely-monitor-servers-

with-the-nagios-checkbyssh-plugin/321 para obtener todos los detalles. p> p>La ventaja de este primer enfoque es que tiene el poder y la flexibilidad de ejecutar comandos localmente en el servidor monitoreado. La desventaja es que el servidor Nagios debe poder iniciar sesión en el servidor remoto sin una contraseña. un problema de seguridad y no se recomienda su uso en entornos sensibles.

El segundo método más seguro es utilizar la función de extensión SNMP. Esto requiere que haya instalado y configurado el paquete net-snmp en el servidor remoto (. Para CentOS).

Si desea utilizar el comando de extensión SNMP, primero copie el script check_file.sh al servidor remoto. Por ejemplo, puede colocar el script en el directorio /usr/bin/.

A continuación, agregue la directiva de configuración extend check_passwd_file /usr/bin/check_file.sh

/etc/passwd al archivo /etc/snmp/snmpd.conf en el servidor remoto. La sintaxis es extender some_alias comando

argumento. Este es el principal inconveniente de este enfoque: hay que definir un alias para cada verificación individual, lo que en este caso significa definir un alias para cada archivo individual que queremos probar

nombre porque los parámetros reales no se pueden transferir vía SNMP.

Mientras el archivo /etc/snmp/snmpd.conf cambie, debe usar el comando service snmpd

reload (para CentOS) para recargar el servicio snmpd.

Luego, puede usar el comando snmpget para probar la nueva verificación, simplemente siga snmpget -v2c

-c public -OvQ 10.0.0.2

NET-SNMP-EXTEND-MIB:: Igual que en nsExtendOutputFull.\"check_passwd_file\". Este ejemplo

El comando snmpget consulta el servidor 10.0.0.2 con la cadena "public"*** a través de SNMP versión 2c. El identificador de objeto (OID) del comando de extensión SNMP personalizado es

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"some_alias\".

Desafortunadamente, el comando anterior no se puede implementar directamente usando Nagios. Si snmpget funciona correctamente y puede conectarse al host remoto, siempre devolverá el estado 0, lo que indica que todo es normal, porque el programa snmpget sale sin errores. Por lo tanto, incluso si un archivo no existe, el script de verificación devolverá el estado 0, pero imprimirá el mensaje correcto de que el archivo no existe.

Puedes resolver este problema aprovechando un complemento especial para Nagios llamado check_snmp_extend.sh. Este complemento obtiene la primera palabra del mensaje de estado

y establece el estado en función de esa palabra. Anticipándonos al uso de este complemento, configuramos los mensajes en el script de muestra check_file.sh para que comiencen con OK, CRÍTICO, ADVERTENCIA y DESCONOCIDO.

Para comenzar a utilizar el complemento check_snmp_extend.sh, primero descargue el complemento (mand{command_name check_snmp_extendcommand_line $USER1$/check_snmp_extend.sh $HOSTADDRESS$ $ARG1$}

Después de eso, defina un elemento Servicio:

defina servicio{use generic-servicehost_name somehost.example.orgservice_description Comprobar /etc/passwdcheck_command check_snmp_extend!check_passwd_file}

Utilice opciones de extensión SNMP como su configuración SNMP Seguridad. Este enfoque requiere cambios mínimos en el host remoto y garantiza una configuración estándar que cumple con las mejores prácticas de seguridad. Puede encontrar otros complementos de Nagios para propósitos similares, como nrpe, pero requieren que se instalen servicios adicionales de forma remota. , lo cual no siempre es una buena idea desde una perspectiva de seguridad y compatibilidad.

Como puede ver, es fácil de ampliar con complementos escritos en casa. Nagios permite este tipo de escalado, que es uno de. las razones por las que muchos administradores la prefieren a otras soluciones de monitoreo.