Configuración básica de Nagios (para agregar rápidamente nuevas máquinas)

Configuración básica de Nagios (para agregar rápidamente nuevas máquinas)

Recientemente comencé a usar Nagios para monitorear alrededor de 25 servidores (principalmente virtuales, algunos independientes). La mayoría de los servidores (incluido el propio host de Nagios) ejecutan Ubuntu 14.04 LTS, y algunos ejecutan 12.04 LTS. Por lo tanto, pensé que podría utilizar NRPE y terminar de una vez.

Configurar NRPE ha resultado ser bastante complejo para mí. Por ejemplo, para un comando simple check_disk, tuve que especificar manualmente qué partición verificar excluyendo todas las demás particiones/sistemas de archivos, como se muestra a continuación:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

De lo contrario, mis umbrales de advertencia y crítico fueron inmediatamente activados por sysfs, proc u otras particiones.

Luego eché un vistazo al monitor de servicio base que el host de Nagios realiza sobre sí mismo. Está listado dentro de /usr/local/nagios/etc/localhost.cfg y contiene lo siguiente (¡lo siento! ¡No entiendo por qué no se formatea correctamente!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

Lo que resulta en esto en el tablero:

impresionante

Esto es perfecto para mí. Esto es exactamente lo que quiero que muestre cada host que agrego. En lugar de perder el tiempo con comandos personalizados, ¿cómo debo exactamente "copiar" esto a cada host a través del archivo de configuración NRPE para ver todos estos servicios específicos para cada host que agrego? Está claro que esto ya está aquí y ya funciona en localhost. Estoy luchando por comprender la organización necesaria para que esto suceda.

Gracias por todos y cada uno de los consejos.

Respuesta1

No hace mucho escribí un script de instalación automática NRPE realmente bueno que creo que puede ayudarte si lo editas para adaptarlo a tus necesidades. El script incluye muchas comprobaciones integradas que se agregan al nrpe.cfgarchivo de cada host. Es decir, puede configurar las comprobaciones que sean relevantes para usted y asegurarse de que cada host que ejecuta el script también las tenga, eso es del lado del cliente.

Un enlace al guión:Aquí.

En lo que respecta al lado del servidor (Nagios), puede instalar un Administrador de configuración de Nagios como NagioSQL, por ejemplo, que le ayudará a administrar sus hosts y servicios de una manera más conveniente a través de una GUI.

Más que eso, para asegurarse de que todos sus hosts tengan estas comprobaciones que mostró, simplemente cree un grupo de servicios que incluya todos estos servicios (verificaciones) que desea monitorear y luego simplemente adjunte este grupo de servicios a cada host que monitoree.

Déjame decirte lo que hice en mi empresa, quería asegurarme de que cada servidor fuera monitoreado con la check_loadverificación, pero como no tenemos una línea base de hardware en la empresa, lo que significa que cada servidor tiene especificaciones diferentes y check_loadse calcula por núcleos/cpu. en la máquina, agregué al módulo "Nagios_client" en nuestro servidor Puppet un custom_factque identifica cuántos procesadores existen en una máquina y configura Nagios check_loaden consecuencia.

Entonces, por ejemplo, digamos que el servidor1 tiene 4 CPU, lo que significa que una carga de 2,8 es ideal (0,7 por CPU). Puppet facteridentifica el número de CPU y luego edita el servidor nrpe.cfgde esta manera:

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

Luego, en NagioSQL, por ejemplo, puede utilizar la "función de Importación" que le permite importar *.cfgarchivos que se cargarán en Nagios como Hosts y Servicios. Por lo tanto, puede crear un host.cfgarchivo y, a través de un script, duplicarlo por host que desea monitorear y simplemente cambiar el nombre de host/ip de cada máquina y esto lo llevará a un paso más hacia configuraciones más automáticas.

En mi caso, por ejemplo, Puppet es capaz de entender que se está ejecutando por primera vez en una máquina y luego también creó el host.cfgarchivo correspondiente en Nagios.

Creo que con Puppet + NagioSQL tu administración de Nagios sería una tarea mucho más sencilla.

Con respecto a su dificultad para configurar cualquier verificación... Siempre puede escribir su propio script y configurar Nagios para que lo ejecute por usted. Por ejemplo, tomemos su check_diskcomando, es un comando muy rico que le permite mostrar todo tipo de datos que son innecesariamente importantes para usted.

Tuve el mismo problema con check_procs, otro comando muy rico que te brinda todo tipo de datos... que no necesitaba, así que escribí un script de verificación simple que hace exactamente lo que necesito y lo configuré en Nagios. Ejemplo:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

Me da menos información que la real check_procspero me da justo la información que necesito.

Entonces, para abreviar, si su check_diskcomando le dificulta configurarlo, simplemente cree su propio script, esa es la belleza de Nagios.

Espero haberte ayudado.

Respuesta2

Necesita algún tipo de software de gestión de configuración para configurar e instalar el demonio nrpe en cada host remoto, así como implementar las configuraciones y, en última instancia, sus complementos.

Puedo sugeriransiblepara esta tarea.

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

información relacionada