Instalar y configurar NDOUtils en Centos 8
Aprendemos a instalar y configurar NDOUtils en Centos 8. Las siglas del producto significan «Nagios Data Output Utilities» y son un conjunto de herramientas que permiten exportar datos actuales e históricos de una o más instancias de Nagios a una base de datos MySQL o MariaDB. Es una herramienta bastante popular en la comunidad. NDOUtils consta de un demonio independiente, un agente de eventos Nagios y varias utilidades auxiliares.
Al igual que en otras ocasiones voy a utilizar un VPS con Centos 8 que he creado en mi proveedor de confianza Clouding.io Previamente ya tengo instalado Nagios Core, para ello os podéis servir de la entrada que escribí en su día: Instalar Nagios 4 en RHEL 8 y Centos 8
Instalar NDOUtils en Centos 8
Lo primero que haremos es instalar el servidor de base de datos MariaDB. Para ello utilizaremos la última versión disponible. Siguiendo las instrucciones de su propia página web: MairaDB Config Repositories
En nuestro caso, con estas instrucciones. Creamos el siguiente repositorio:
sudo vi /etc/yum.repos.d/MariaDB.repo |
Con el contenido:
# MariaDB 10.5 CentOS repository list - created 2020-07-14 08:02 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.5/centos8-amd64 module_hotfixes=1 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 |
Una vez hecho esto ya podemos instalar y encender el servicio:
sudo dnf install -y mariadb mariadb-server sudo dnf install mysql-devel --disablerepo=AppStream sudo systemctl start mariadb |
Una vez encendida, ejecutamos el script ‘mysql_secure_installation’, que nos ayudará a asegurar la instalación, además de definir una contraseña para el usuario ‘root’ del motor de la base de datos.
sudo mysql_secure_installation |
Crear la base de datos para NDOUtils
Nos conectamos como ‘root’ al motor de la base de datos.
sudo mysql -u root -p |
Y creamos la base de datos correspondiente asignandole un usuario.
CREATE DATABASE nagios DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'ndoutils'@'localhost' IDENTIFIED BY 'ndoutils_password'; GRANT USAGE ON *.* TO 'ndoutils'@'localhost' IDENTIFIED BY 'ndoutils_password' \ 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.* TO 'ndoutils'@'localhost' WITH GRANT OPTION ; |
Una vez hecho esto, limpiamos los privilegios y salimos.
FLUSH PRIVILEGES;
\q |
Podemos comprobar que hemos hecho bien nuestro trabajo, de la siguiente manera:
echo 'show databases;' | sudo mysql -u ndoutils -p -h localhost |
Con el resultado:
Database information_schema nagios |
Ajustes del kernel de Linux
NDOUtils usa la cola de mensajes del núcleo o kernel para transferir los datos de Nagios a NDOUtils. Vamos a aumentar los valores predeterminados con los que arranca el Kernel para garantizar que funcione de manera óptima.
Realizamos una copia de seguridad del fichero de configuración.
sudo cp /etc/sysctl.conf /etc/sysctl.conf_backup |
Y realizamos los siguientes cambios:
sudo -s sed -i '/msgmnb/d' /etc/sysctl.conf sed -i '/msgmax/d' /etc/sysctl.conf sed -i '/shmmax/d' /etc/sysctl.conf sed -i '/shmall/d' /etc/sysctl.conf printf "\n\nkernel.msgmnb = 131072000\n" >> /etc/sysctl.conf printf "kernel.msgmax = 131072000\n" >> /etc/sysctl.conf printf "kernel.shmmax = 4294967295\n" >> /etc/sysctl.conf printf "kernel.shmall = 268435456\n" >> /etc/sysctl.conf sysctl -e -p /etc/sysctl.conf |
El fichero debería quedar con la siguiente información:
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 131072000 kernel.msgmax = 131072000 kernel.shmmax = 4294967295 kernel.shmall = 268435456 |
Para que se apliquen los cambios reiniciamos el host.
sudo reboot |
Descargar e instalar NDOUtils
Descargamos el código del proyecto desde su página en GitHub
cd /tmp wget -O ndoutils.tar.gz \ https://github.com/NagiosEnterprises/ndoutils/releases/download/ndoutils-2.1.3/ndoutils-2.1.3.tar.gz tar xzf ndoutils.tar.gz |
Una vez descargado debemos compilarlo. Yo ya tengo las herramientas necesarias para realizar dicha compilación, si no las tienes en el sistema, son estas:
sudo dnf groupinstall "Development Tools" |
Como paso adicional, instalaremos el paquete ‘perl-DBD-MySQL’, que utilizaremos más adelante.
sudo dnf install perl-DBD-mysql |
Ahora sí, compilamos:
cd /tmp/ndoutils-2.1.3/ ./configure make all |
Instalamos los binarios:
make install |
Iniciamos la base de datos:
cd db/ ./installdb -u 'ndoutils' -p'password' -h 'localhost' -d nagios cd .. |
Con este resultado:
DBD::mysql::db do failed: Table 'nagios.nagios_dbversion' doesn't exist at ./installdb line 52. ** Creating tables for version 2.0.1 Using mysql.sql for installation... ** Updating table nagios_dbversion Done! |
El primer mensaje se puede omitir, es un aviso, la tabla ‘nagios.nagios_dbversion’ no existe, se espera, se está probando para asegurarse de que la base de datos no se haya inicializado.
Instalar los ficheros de configuración
Esto instala los archivos de configuración y configura las credenciales de MariaDB, para que NDOUtils pueda conectarse a la base de datos.
Procedemos a instalarlos:
sudo -s make install-config mv /usr/local/nagios/etc/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg sed -i 's/^db_user=.*/db_user=ndoutils/g' /usr/local/nagios/etc/ndo2db.cfg sed -i 's/^db_pass=.*/db_pass=ndoutils_password/g' /usr/local/nagios/etc/ndo2db.cfg mv /usr/local/nagios/etc/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg |
El primer fichero de configuración es: /usr/local/nagios/etc/ndo2db.cfg
, donde indicamos el usuario y la contraseña de la base de datos:
db_user=ndoutils db_pass=passwd_que_tengamos |
Y el segundo fichero es: /usr/local/nagios/etc/ndomod.cfg
. En un principio en este fichero no tenemos que modificar nada.
Instalar el servicio o daemon
Instalamos el servicio o daemon:
sudo -s make install-init systemctl enable ndo2db.service |
Encender el servicio
Esta parte es realmente sencilla.
sudo systemctl start ndo2db.service |
Actualizar Nagios para utilizar NDOUtils
Ahora necesitamos decirle a Nagios que use el módulo NDO. Esto es tan simple como agregar la siguiente línea al archivo nagios.cfg:
roker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg |
Los siguientes comandos agregarán esa línea, así como una línea adicional que explica para qué sirve el módulo.
printf "\n\n# NDOUtils Broker Module\n" >> /usr/local/nagios/etc/nagios.cfg printf "broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg\n" \ >> /usr/local/nagios/etc/nagios.cfg |
Reiniciar el servicio de Nagios
Una vez hechos estos cambios reiniciamos el servicio de Nagios.
sudo systemctl restart nagios.service sudo systemctl status nagios.service |
Trabajar con NDO
Un primer ejemplo de uso es el siguiente:
[davidochobits@servnagios ndoutils-2.1.3]$ grep ndo /usr/local/nagios/var/nagios.log [1594720972] ndomod: NDOMOD 2.1.3 (2017-04-13) Copyright (c) 2009 Nagios Core Development Team and Community Contributors [1594720972] ndomod: Successfully connected to data sink. 0 queued items to flush. [1594720972] ndomod registered for process data [1594720972] ndomod registered for timed event data [1594720972] ndomod registered for log data' [1594720972] ndomod registered for system command data' [1594720972] ndomod registered for event handler data' [1594720972] ndomod registered for notification data' [1594720972] ndomod registered for service check data' [1594720972] ndomod registered for host check data' [1594720972] ndomod registered for comment data' [1594720972] ndomod registered for downtime data' [1594720972] ndomod registered for flapping data' [1594720972] ndomod registered for program status data' [1594720972] ndomod registered for host status data' [1594720972] ndomod registered for service status data' [1594720972] ndomod registered for adaptive program data' [1594720972] ndomod registered for adaptive host data' [1594720972] ndomod registered for adaptive service data' [1594720972] ndomod registered for external command data' [1594720972] ndomod registered for aggregated status data' [1594720972] ndomod registered for retention data' [1594720972] ndomod registered for contact data' [1594720972] ndomod registered for contact notification data' [1594720972] ndomod registered for acknowledgement data' [1594720972] ndomod registered for state change data' [1594720972] ndomod registered for contact status data' [1594720972] ndomod registered for adaptive contact data' [1594720972] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully |
Comprobamos que la información se añade en la base de datos:
echo 'select * from nagios.nagios_logentries;' | sudo mysql -u ndoutils -p |
Con un resultado similar:
[davidochobits@servnagios ndoutils-2.1.3]$ echo 'select * from nagios.nagios_logentries;' | sudo mysql -u ndout Enter password: logentry_id instance_id logentry_time entry_time entry_time_usec logentry_type logentry_data 1 1 2020-07-14 12:02:52 2020-07-14 12:02:52 690328 262144 ndomod registered for log data' 2 1 2020-07-14 12:02:52 2020-07-14 12:02:52 690349 262144 ndomod registered for system co 3 1 2020-07-14 12:02:52 2020-07-14 12:02:52 690360 262144 ndomod registered for event han 4 1 2020-07-14 12:02:52 2020-07-14 12:02:52 690371 262144 ndomod registered for notificat 5 1 2020-07-14 12:02:52 2020-07-14 12:02:52 690383 262144 ndomod registered for service c (.....) |
Comandos para operar con NDOUtils
Para encender, parar, reiniciar o comprobar su estado, las órdenes son:
sudo systemctl start ndo2db.service sudo systemctl stop ndo2db.service sudo systemctl restart ndo2db.service sudo systemctl status ndo2db.service |
Espero que esta entrada os sea de utilidad en algún momento. Nos vamos leyendo.
Fuentes consultadas
NDOUtils – Installing NDOUtils
Starckoverflow – error “install_driver(mysql) failed: Can’t locate DBD/mysql.pm in @INC”
Forum Centos – Install MariaDB error
Comentarios Recientes