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”
Comentarios Recientes