Configuración de Nagios 2/2

news and informations automotive,business,crime,health,life,politics,science,technology,travelautomotive,business,crime,health,life,politics,science,technology,travel

Los Hosts son objetos que describen máquinas que deberían ser monitorizadas, ya sean físicas o virtuales.  También le dice a Nagios cuándo y cómo debería monitorizarse, así como a quién debería avisarse si hay algún problema.

Veamos un ejemplo:

Imagen1

La directiva notification_options tiene varias opciones posibles que se pueden combinar:

  • d: Enviar notificaciones en estado DOWN.
  • u: Enviar notificaciones en estado UNKNOWN.
  • r: Enviar notificaciones en estado RECOVERY.
  • f: Enviar notificaciones en estado FLAPPING.
  • s: Enviar notificaciones al inicio y fin de SCHEDULED DOWNTIME.
  • n: No enviar notificaciones.

Donde hemos definido un host Linux para el que se utilizará el comando check-host-alive cada cinco minutos para comprobar que sigue activo.  Tras cinco comprobaciones fallidas, se considerará que el host está caído y se enviará una notificación cada 30 minutos.

En el siguiente enlace tenemos una lista de directivas que podemos usar para definir hosts:

http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#host

Por defecto, Nagios asume que el estado de todos los hosts es activo, y si no indicamos la opción check_command para un host, siempre quedará en ese estado.

Además, como ya hemos visto, Nagios utiliza los estados lógicos Hard y Soft para gestionar los estados de los hosts.

La directiva parents del objeto host se utiliza para definir la topología de la red y normalmente apunta a un switch o un router.  Se asumirá que el host es inalcanzable si el parent está en un estado caído Hard.

Imagen2

Nagios también permite agrupar hosts para facilitar su gestión.  Un host puede ser miembro de más de un grupo.

Imagen3

Las directivas usadas para definir grupos de hosts las tenemos en el siguiente enlace:

Podemos usar los grupos de hosts para definir servicios y dependencias.  Por ejemplo, podemos decirle a Nagios que todos los servidores Linux tienen un servicio SSH que debe ser monitorizado y que todos los servidores AIX deberían aceptar conexiones Telnet entrantes.

Vamos a definir la monitorización del host local donde tenemos instalado Nagios.  Añadiremos esta definición al archivo /etc/nagios/hosts/localhost.cfg.

Imagen4

 

Configuración de Servicios

Los servicios son objetos que describen la funcionalidad que está ofreciendo un host en particular.  Podría ser casi cualquier cosa, como un servidor FTP o recursos como espacio de almacenamiento o carga de CPU.

El servicio siempre está asociado al host sobre el que se ejecuta y se identifica por su descripción, que tiene que ser única en un host particular.

Veamos un ejemplo:

Imagen5La directiva notification_options tiene varias opciones posibles que se pueden combinar:

  • w: Enviar notificaciones en estado WARNING.
  • u: Enviar notificaciones en estado UNKNOWN.
  • c: Enviar notificaciones en estado CRITICAL.
  • r: Enviar notificaciones en estado RECOVERY.
  • f: Enviar notificaciones en estado FLAPPING.
  • s: Enviar notificaciones al inicio y fin de SCHEDULED DOWNTIME.
  • n: No enviar notificaciones.

En el siguiente enlace tenemos la lista de directivas que podemos usar en la definición de servicios:

http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#service

Es posible especificar que un servicio es ofrecido por múltiples máquinas o por un grupo de hosts.  También podemos especificar hosts para los que no queremos que se lleve a cabo la comprobación de un determinado servicio, por ejemplo, si un servicio está presente en todas las máquinas de un grupo menos en una.

Veamos un ejemplo de esto:

Imagen6

Los servicios también pueden agruparse como los hosts.  Aquí tenemos los atributos que deben usarse para definir un grupo de servicios:

Imagen7

Y un ejemplo:

Imagen8

donde agrupamos los servicios mysql y pgsql de linux01 y el servicio db2 de la máquina aix01.

Igual que en los hosts, en los servicios también podemos definir dependencias y Nagios sólo realizará las comprobaciones en un servicio si todos los servicios de los que depende están funcionando correctamente.

Nagios requiere que, al menos, un servicio esté definido para cada host.  En nuestro caso vamos a monitorizar el protocolo SSH.

Añadimos lo siguiente al archivo /etc/nagios/hosts/localhost.cfg:

Imagen9

 

Configuración de Comandos

La definición de comandos describe cómo debería hacerse la monitorización de los hosts y servicios.  También especifica cómo debería tratarse la notificación de problemas.

La definición de un comando tiene dos parámetros:

  • Nombre: Se usa para definir comprobaciones y notificaciones.
  • Línea de comando: Comando y parámetros que se ejecutarán.

El nombre del comando suele ser el mismo que el del plugin que ejecuta, pero puede ser diferente.

Veamos un ejemplo:

Imagen10

Y una corta descripción que usa este comando:

Imagen11

Los comandos permiten el paso de argumentos para ofrecer mayor flexibilidad:

Imagen12

Otro ejemplo es configurar un comando para un servicio ya definido:

Imagen13

Para nuestra topología usaremos comandos que ya vienen configurados por defecto.  Sólo tenemos que copiar el archivo al directorio correcto:

Imagen14

Configuración de Periodos de Tiempo

Aquí definimos fechas y horas durante las que debería llevarse a cabo una acción o debería notificarse a determinadas personas.  Por ejemplo:

Imagen15

Hay diferentes formas de especificar una fecha y dependiendo del tipo, unas tienen precedencia sobre otras.  Por ejemplo, una definición para el 24 de diciembre es más importante que una definición genérica de que cada día de la semana debería hacerse algo entre las 9:00 y las 17:00.

Posibles tipos de fechas:

Imagen16

Para poder configurar correctamente todos los objetos, vamos a crear algunos periodos de tiempo que usaremos en la configuración.  Los definiremos en /etc/nagios/timeperiods/default.cfg:

Imagen17

Imagen18

 

Configuración de Contactos

Los contactos definen personas que son los propietarios de máquinas específicas o a los que se debería contactar en caso de problemas.  Por ejemplo:

Imagen19

Las directivas que podemos usar para la definición de contactos las tenemos en la siguiente página:

http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#contact

Los contactos son mapeados (contact_name) a usuarios que inician sesión en la interfaz web de Nagios.  Esto significa que todas las operaciones realizadas a través de la interfaz serán registradas como que han sido ejecutadas por ese usuario en particular y la interfaz web usará los permisos concedidos al contacto cuando evalúe si una operación debería llevarse a cabo o no.

Los contactos también pueden ser agrupados para mantener listas de usuarios responsables de determinadas tareas.

Imagen20

http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#contactgroup

Para nuestro ejemplo vamos a crear un contacto en el archivo /etc/nagios/contacts/nagiosadmin.cfg:

Imagen21

Y también definimos el grupo admins en el archivo /etc/nagios/contacts/groups.cfg:

Imagen22

 

Con esto terminamos los posts dedicados a la configuración de los diferentes objetos de Nagios.  Este ha sido un poco largo, pero no quería extenderlo en más posts.

A partir de aquí, todavía nos quedan muchas más cosas por ver: notificaciones, instalación en modo distribuido, Centreon, administración de usuarios, integración de módulos…