Configuración Nagios
El instalador copió los archivos de configuración ejemplo en /usr/local/nagios/etc/ y haciendo una lectura del archivo de configuración principal nagios.cfg vemos el orden de lectura del resto de los archivos.
commands.cfgComandos que se ejecutarán en cada uno de los chequeos
contacts.cfgContactos disponibles para informar o enviar alertas
localhost.cfgInformación del servidor Nagios
timeperiods.cfgFranjas horarias para alarmas y chequeos
printer.cfg, switch.cfg, templates.cfg, windows.cfgArchivos de configuración de los objetos a chequear.
En esta versión de Nagios, están agrupados por tipo de dispositivo: impresoras, switches, servidores Windows, etc. La sintaxis es la misma para todos, con pequeñas variantes.
Cambio de destinatario para recepción de las alarmas vía e-mail. Lo que deberemos hacer es modificar el archivo /usr/local/nagios/etc/objects/contacts.cfg de la siguiente manera:
[color=#a9a9a9]Pulsa en la imagen para ampliarla[/color]
Donde dice nagios@localhost lo reemplazaremos por la dirección de correo del administrador de monitoreo.
Si bien para la configuración inicial es poco probable que necesitemos cambiar los comandos ejecutados para los chequeos. Cada comando tiene definido un nombre y una instrucción, a la cual podremos pasarle variables y macros.
Daremos un breve ejemplo de cómo funciona la ejecución de comandos destinados a un cliente Nagios para Windows.
# 'check_nt' command definition define command{ command_name check_nt command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ }
Otro ejemplo. Deseamos ejecutar un script personalizado que nos dirá cuántas actualizaciones faltan en un sistema, entonces definimos el comando:
# Ejecución de script personalizado define command{ command_name check_actualizaciones command_line $USER1$/check_actualizaciones.py -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ }check_actualizaciones.py es mi script ejecutable, para este ejemplo hagamos de cuenta que es una caja cerrada.
Porque no todo lo que deseamos verificar debe ser ejecutado constantemente, nos es posible definir franjas horarias en el archivo timeperiods.cfg el cual es muy intuitivo.
[color=#a9a9a9]Pulsa en la imagen para ampliarla[/color]
Como se observa en la imagen, hay una franja horaria llamada 24x7 y a continuación los días y horarios que esta franja representa. Podría ser utilizada para chequeos o notificaciones a usuarios que necesitan ser tenidos en cuenta las 24 hs los 7 días de la semana. Como por ejemplo: verificación de espacio en disco, consumo de CPU, disponibilidad (uptime) de un sistema.
Ahora bien, podríamos definir una franja horaria personalizada para nuestro chequeo de actualizaciones de sistema (porque no necesitamos que corra 24x7).
# 'fin de semana' define timeperiod{ timeperiod_name weekend alias Fin de semana saturday 00:00-24:00 sunday 00:00-24:00 }Por último, definimos lo más importante, el objeto a chequear. Aquí es donde se hace referencia a los anteriores archivos de configuración. Tomaremos como ejemplo el archivo windows.cfg (donde podemos agrupar los servidores homónimos).
Definimos el objeto, en este caso un servidor.
define host{ use windows-server ; Tomará valores de una plantilla host_name ServidorExchange ; El nombre al que se hará referencia EN NAGIOS alias Servidor Exchange DAG ; Nombre descriptivo address 192.168.1.2 ; Dirección IP del host }Y servicios que deseamos monitorearle.
define service{ use generic-service host_name ServidorExchange ;Servidor que deseamos chequear service_description Espacio en disco C:\ ;Descripción del chequeo check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90 ;Aquí se invoca el comando que definimos en el archive checkcommands.cfg check_period 24x7 ; franja horaria definida en archivo timeperiods.cfg notification_period 24x7 contact_groups administradoresexchange,admins ;grupos de contactos definidos en contacts.cfg } define service{ use generic-service host_name ServidorExchange service_description Actualizaciones de Windows check_command check_actualizaciones | 1 | 2 ;Los argumentos a pasar se separan con pipe check_period weekend notification_period 24x7 contacts nagiosadmin ;contacto definido en contacts.cfg }Por supuesto, también es posible verificar varios servidores al mismo tiempo o un grupo previamente definidos…
define service{ use generic-service host_name servidor1,servidor2,servidor3 service_description Carga de CPU check_command check_nt!CPULOAD!-l 5,80,90 }Hay infinidad de opciones para estos archivos que nos otorgan flexibilidad a la hora de configurar qué y cómo queremos monitorear. Para mayor información del tema, es recomendable la lectura en esta zona de la web Nagios.
Es una herramienta que ha estado disponible para monitoreo de infraestructura informática desde 1999, aunque en aquel entonces bajo el nombre NetSaint. Para evitar futuros problemas de marcas registradas un tiempo después fue renombrado a Nagios (“Nagios Ain’t Gonna Insist On Sainthood”).
Siempre bajo el licenciamiento GPL, durante 10 años supo tener una comunidad creciente de desarrolladores que aportaron código e ideas para mejorar el producto, aunque en 2009 debido a diferencias relacionadas a la administración del proyecto tanto desde lo conceptual como informático miembros del equipo comenzaron un fork (bifurcación) llamado Icinga. Este nuevo proyecto mantiene compatibilidad 100% desde y hacia Nagios, con código más pulido y funcionalidades que eran requeridas por la comunidad y se hacían oídos sordos (según informan sus desarrolladores).
Actualmente hay muchas herramientas de monitoreo bajo la licencia GPL de donde elegir y al mismo tiempo algunas de ellas (Icinga, Op5, Ninja, Shinken, Naemon y otras) tomaron como base Nagios con sus defectos y virtudes pero ésta se jacta por noveno año consecutivo tener la mención de “Network Monitoring Application of the Year”.
Sitios recomendados:
- Nagios Exchange
Proyectos y plug-ins relacionados con Nagios
- NSClient++
Cliente Nagios para entornos Windows