NDOUtils: Addon para Nagios

Nagios Data Out (NDO) es un addon oficial de Nagios que permite exportar todos los sucesos y la configuración de una o más instancias de Nagios a una base de datos MySQL, y por supuesto, sin que dejen de escribirse en los ficheros status.dat y retention.dat, y tampoco sin obligarnos a renunciar a tener toda la configuración de Nagios en nuestros ficheros de texto plano, como lo hemos hecho toda la vida.

¿Y para qué necesitaríamos esto entonces?, ¿qué utilidad tiene esto? ... la gran ventaja de configurar NDOUtils en nuestro servidor Nagios, es que nos permitirá integrarlo con otras herramientas como NagVis (usar diagramas de red y vincular alertas), php4nagios (estadísticas para Nagios), o nagiosbp (Nagios Business Process AddOns), que ampliarán las funcionalidades de nuestro Nagios.

Para instalarlo y configurarlo, lo primero que hago es hacer una copia de seguridad de toda las instalación de Nagios, y luego realizo los siguientes pasos:

  1. Preparar el sistema para poder compilar y ejecutar este programa
    yum install mysql-devel perl-DBD-MySQ
  2. Descargar el software de NDOUtils y descomprimirlo...
    cd /opt/software

    export URL="http://downloads.sourceforge.net/project/nagios"
    export URL="$URL/ndoutils-1.x/ndoutils-1-4b8/ndoutils-1.4b8.tar.gz"

    cd /opt
    tar -xzvf software/ndoutils-1.4b8.tar.gz
  3. Compilar el programa
    cd /opt/ndoutils-1.4b8

    export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH"
    export LD_LIBRARY_PATH="/usr/lib/mysql:/lib:$LD_LIBRARY_PATH"

    ./configure --prefix=/usr/local/nagios \
    --enable-mysql \
    --with-mysql-lib=/usr/lib/mysql
    make
  4. Instalar los ejecutables y la configuración de ejemplo de NDO mediante...
    cp -f src/file2sock \
    src/log2ndo \
    src/ndo2db-* \
    src/ndomod-* \
    src/sockdebug \
    /usr/local/nagios/bin/

    /bin/cp -p config/ndo2db.cfg /usr/local/nagios/etc/ndo2db.cfg
    /bin/cp -p config/ndomod.cfg /usr/local/nagios/etc/ndomod.cfg
    ...y dependiendo de la versión de Nagios que tengamos instalado copiaremos un ejecutable u otro. En mi caso uso la versión 3.
    /bin/cp -f src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
    /bin/cp -f src/ndo2db-3x /usr/local/nagios/bin/ndo2db
  5. Ahora en el servidor MySQL tendremos que crear el usuario y la base de datos donde NDO escribirá las tablas y todos estos datos que provienen de Nagios. En mi caso crearé la base de datos nagios_ndo, el usuario nagios con contraseña nagios.pwd:
    create database nagios_ndo;

    CREATE USER nagios@IP_SERVIDOR_NAGIOS
    IDENTIFIED BY 'nagios.pwd';

    GRANT USAGE ON *.* TO nagios@IP_SERVIDOR_NAGIOS
    IDENTIFIED BY 'nagios.pwd'
    WITH MAX_QUERIES_PER_HOUR 0
    MAX_CONNECTIONS_PER_HOUR 0
    MAX_UPDATES_PER_HOUR 0
    MAX_USER_CONNECTIONS 0;

    GRANT ALL PRIVILEGES
    ON nagios_ndo.*
    TO nagios@IP_SERVIDOR_NAGIOS
    WITH GRANT OPTION ;

    flush privileges;
  6. Crear las tablas y el modelo de datos, en la base de datos:
    cd /opt/ndoutils-1.4b8/db
    ./installdb -u nagios \
    -p 'nagios.pwd' \
    -h IP_SERVIDOR_MYSQL \
    -d nagios_ndo
  7. Ahora cambiar la configuracion de NDO en /usr/local/nagios/etc/ndo2db.cfg, para aplicar los siguientes cambios:
    # Evitar problemas con otros plugins NRPE y NSCA
    tcp_port=5663

    # Indicar la IP de nuestro servidor de MySQL
    db_host=IP_SERVIDOR_MYSQL

    # Credenciales de BBDD
    db_name=nagios_ndo
    db_user=nagios
    db_pass=nagios.pwd

    # Mantener los eventos durante 2 semanas
    max_timedevents_age=20160
  8. Ahora cambiar la configuracion de Nagios (/usr/local/nagios/etc/nagios.cfg) para decirle que debe usar el Broker de eventos:
    broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
  9. Editar el fichero de configuracion del broker NDO para configurar el puerto que debe escuchar. Esto es editar el fichero /usr/local/nagios/etc/ndomod.cfg y configurar:
    tcp_port=5663
  10. Crear el script de arranque del servicio, a partir del que nos propone la distribución:
    /bin/cp -f /opt/ndoutils-1.4b8/daemon-init /etc/init.d/ndo2db
    chmod a+x /etc/init.d/ndo2db
    chkconfig ndo2db on

Para terminar, reiniciar todos los servicios y comprobar que las tablas empiezan a rellenarse de datos.
/etc/init.d/ndo2db stop
/etc/init.d/ndo2db start
/etc/init.d/nagios restart


2 comentarios:

Sergio dijo...

Hola, muy buenos datos, pero tengo un problema, no me esta llenando las tablas, faltara algun paso ?? gracias por tus notas

Ignacio Barrancos dijo...

Creo recordar que a mí también me ha pasado alguna vez. He repasado los pasos y creo que no falta ninguno en el post.

Repasa todos los pasos, y compruebas las rutas de los comandos, vaya que el problema sea ese. Comprueba que puedes conectar a Mysql. Ya sabes que primero debe arrancar NDO y luego Nagios. Comprueba que no tengas otras sesiones de NDO colgadas con el comando "ps".

Venga suerte.