Nagios: Sistema de monitorización en Docker

nagios-docker

¿Qué es Nagios?

Nagios es un sistema de monitorización de código abierto que tiene una interface web que nos va a permitir ver si todos tus sistemas están OK o si tienen algún tipo de problema.

Existen dos versiones la versión:

  • Nagios Core: La versión base, la que se usa y está disponible de forma gratuita o Community.
  • Nagios XI: La versión profesional y que está licenciada. Fue creada para luchas contra Zabbix, que es otra aplicación comercial de monitorización.

Con esta aplicación, puedes comprobar múltiples tipos de sistemas gracias a la integración SNMP, check de puertos, ….

Tiene un amplio catálogo de aplicaciones y protocolos los cuales pueden comprobar como espacio, memoria, smtp, pop, ftp,… o aplicaciones como el propio ssh del servidor. Pero además cuenta con NRPE para que usemos los nuestros propios.

Lo interesante de este sistema es que no monitoriza el servidor en el que se ejecuta, puede monitorizar cualquier sistema al que se tenga acceso tanto interno como cualquier sistema de internet.

NRPE

NRPE es una aplicación que nos permite ejecutar nuestros propios scripts bajo cualquier sistema y usarlo para la comprobación con Nagios.

Crea un servicio en el servidor y a través del fichero de configuración /etc/nagios/nrpe.cfg le indicamos que comandos nos pueden ejecutar desde el exterior.

Lanzando Nagios en un Docker

He creado una Imagen en Docker para tenerlo de manera fácil. Esta Imagen está configurada para que levante Exim, Nagios y Apache, de manera que le pasemos los ficheros de configuración de Nagios en un directorio.

Para instalarlo en nuestro sistema es muy simple:

git clone --recurse-submodules https://github.com/Alferez/docker-nagios
cd docker-nagios
docker build --no-cache -t docker-nagios .

Con esto ya tenemos nuestro docker-nagios compilado, ahora solo tendremos que descomprimir el fichero que tenemos dentro de la carpeta default-config y editar los distintos ficheros de configuración al igual que el ejemplo que ya tenemos.

También podemos usar directamente la última versión y pasarle la configuración en una carpeta. Para ello ejecutamos el docker:

docker run --rm -p 80:80 -v /YOUR_CONFIGURATION_FOLDER:/usr/local/nagios/etc --name nagios alferez/nagios:latest

Actualización: La imagen ha sido actualizada a las últimas versiones. También tienes disponibles múltiples scripts para usar en la monitorización.

Configuración de Nagios

Como hemos dicho antes, la configuración de ejemplo la tenemos dentro de la propia carpeta de GitHub.

Entre los ficheros que existen, tenemos que tener en cuenta varias carpetas que veremos a continuación para que se usan:

commands.d

Es donde definimos los comandas que usaremos, ya que dentro de la configuración usaremos un nombre que le asociaremos (command_name), pero tenemos que definir ese command line que hará.

Su formato es:

define command{
        command_name    check_ftp
        command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
        }

Además tenemos los commandos que usaremos para la notificación. En nuestro caso por mail, pero podemos usar telegram o SMS.

contacts.d

Aquí es donde estaremos nosotros, las personas que gestionamos los servidores. Aquí es donde vamos a poner nuestro correo o nuestro movil para las notificaciones.

define contact{
    contact_name                    nagiosadmin
    alias                           nagiosadmin
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r
    host_notification_options       d,u,r
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    email                           yourmail@gmail.com
    pager                           666666666
}

contactgroups.d

Aquí es donde se crearán los grupos de notificaciones y donde se pondrán los grupos de persona que se monitorizarán.

define contactgroup {
contactgroup_name nagiosadmin
alias nagiosadmin
members nagiosadmin, nagiosadmin2, nagiosadmin3, nagiosadmin4
}

hosts.d

La parte más importante, ya que es donde se dan de alta los servidores. Si esta parte está mal, no se podrán comprobar luego sus servicios.

define host{
        use                     generic-host
        host_name               servidor
        alias                   servidor
        address                 192.168.1.100
        check_command           check-host-alive
        max_check_attempts      2
        contact_groups          nagiosadmin
        notification_interval   15
        notification_period     24x7
        notification_options    d,u,r
        }

hostgroups.d

Aquí es donde agrupamos los hosts creados en el paso anterior para tener más claro en que lugar se encuentras los apartados.

define hostgroup {
hostgroup_name office
alias office
members servidor, impresora, router
}

services.d

La segunda parte importante, aquí es donde especificamos que queremos comprobar en base al alias del servidor definido en el fichero hosts.d

define service{
        use                             without_alarm-service
        host_name                       servidor
        service_description             HTTP
	check_command			check_http
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           5
        retry_check_interval            1
        contact_groups                  nagiosadmin
        notification_interval           15
        notification_period             24x7
        notification_options            w,u,c,r
        }

En caso de fallar, el aviso llegará al grupo nagiosadmin, que tenemos que tener creado. En caso de que alguno de los parámetros falle en cualquier definición, el servicio no arrancará.

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar