El add-on NDOUtils permite almacenar la configuración, tests y resultados en una base de datos MySQL. Por ahora MySQL no es el backend de Nagios, siendo archivos planos. Pero este proyecto permite mantener una estructura de datos sobre la que se pueden alimentar otros proyectos como NagVis. Se estima que en el futuro la plataforma estará sobre MySQL/Postgres con lo que todos estos addons no sólo serán compatibles sino que además irán sobre la base de datos backend real.

Este módulo se ha instalado de la siguiente forma:

  • Compilamos la aplicación y copiamos los binarios:

root@singer:/opt/software/Nagios3.0.1# cd ndoutils-1.4b7
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# ./configure –prefix=/opt/nagios
checking for a BSD-compatible install… /usr/bin/install -c
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
(…)
*** Configuration summary for ndoutils 1.4b7 10-31-2007 ***:

General Options:
————————-
NDO2DB user: nagios
NDO2DB group: nagios

Review the options above for accuracy. If they look okay,
type ‘make’ to compile the NDO utilities.

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# make
(…)
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cp src/ndomod-3x.o /opt/nagios/bin/ndomod.o
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cp config/ndomod.cfg /opt/nagios/etc/ndomod.cfg
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cp src/ndo2db-3x /opt/nagios/bin/ndo2db

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cp config/ndo2db.cfg /opt/nagios/etc/ndo2db.cfg

  • Creamos la base de datos nagios y la inicializamos con el script installdb:

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cd db
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 23
Server version: 5.0.38-Ubuntu_0ubuntu1.2 Ubuntu 7.04 distribution

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

mysql> create database nagios;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER ‘nagvis’@’localhost’ IDENTIFIED BY ‘password’;

mysql> GRANT USAGE ON * . * TO ‘nagvis’@’localhost’ IDENTIFIED BY ‘password’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

mysql> GRANT ALL PRIVILEGES ON `nagios` . * TO ‘nagvis’@’localhost’ WITH GRANT OPTION ;

mysql> quit
Bye

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# ./installdb
installdb -u user -p password -h hostname -d database
Must specify a database
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# ./installdb -u root -p ” -h localhost -d nagios
DBD::mysql::db do failed: Table ‘nagios.nagios_dbversion’ doesn’t exist at ./installdb line 51.
** Creating tables for version 1.4b7
Using mysql.sql for installation…
** Updating table nagios_dbversion
Done!
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db#

  • Editaremos los archivos de configuración ndo2db.cfg y ndomod.cfg:

root@singer:/opt/nagios/etc# vi ndomod.cfg

instance_name=default
output_type=unixsocket
output=/opt/nagios/var/ndo.sock
tcp_port=5668
output_buffer_items=5000
buffer_file=/opt/nagios/var/ndomod.tmp
file_rotation_interval=14400
file_rotation_timeout=60
reconnect_interval=15
reconnect_warning_interval=15
data_processing_options=-1
config_output_options=2

root@singer:/opt/nagios/etc# vi ndo2db.cfg

ndo2db_user=nagios
ndo2db_group=nagios
socket_type=unix
socket_name=/opt/nagios/var/ndo.sock
tcp_port=5668
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=nagios
db_prefix=nagios_
db_user=nagvis
db_pass=password
max_timedevents_age=1440
max_systemcommands_age=10080
max_servicechecks_age=10080
max_hostchecks_age=10080
max_eventhandlers_age=44640
debug_level=0
debug_verbosity=1
debug_file=@localstatedir@/ndo2db.debug
max_debug_file_size=1000000

  • Añadiremos la configuración de broker en Nagios para que haga uso del módulo ndomod:

root@singer:/opt/nagios/etc# vi nagios.cfg

(…)
event_broker_options=-1

(…)
broker_module=/opt/nagios/bin/ndomod.o config_file=/opt/nagios/etc/ndomod.cfg

  • A continuación arrancamos el demonio NDO2DB que montará el socket /opt/nagios/var/ndo.sock. Si aparece un error es porque puede haber quedado el socket creado anteriormente y no se haya borrado. Borraremos el archivo y arrancaremos de nuevo.

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# /opt/nagios/bin/ndo2db -c /opt/nagios/etc/ndo2db.cfg
Could not bind socket: Address already in use
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# ls -la /opt/nagios/var/ndo.sock
srwxr-xr-x 1 nagios nagios 0 2008-03-12 17:30 /opt/nagios/var/ndo.sock
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# rm /opt/nagios/var/ndo.sock
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# /opt/nagios/bin/ndo2db -c /opt/nagios/etc/ndo2db.cfg

  • Creamos la base de datos nagios y la inicializamos con el script installdb:

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7# cd db
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 23
Server version: 5.0.38-Ubuntu_0ubuntu1.2 Ubuntu 7.04 distribution

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

mysql> create database nagios;
Query OK, 1 row affected (0.00 sec)

mysql> quit
Bye

root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# ./installdb
installdb -u user -p password -h hostname -d database
Must specify a database
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db# ./installdb -u root -p ” -h localhost -d nagios
DBD::mysql::db do failed: Table ‘nagios.nagios_dbversion’ doesn’t exist at ./installdb line 51.
** Creating tables for version 1.4b7
Using mysql.sql for installation…
** Updating table nagios_dbversion
Done!
root@singer:/opt/software/Nagios3.0.1/ndoutils-1.4b7/db#

  • Cuando reiniciemos Nagios aparecerán nuevos logs en /opt/nagios/var/nagios.log. Veremos si NDOMOD ve el “sumidero” de datos (el ndo.sock).
    Nota: si el proceso ndo2db estubiera parado y el broker arrancado, este acumula items que debe traspasar a la base de datos…

[1208969593] Nagios 3.0.1 starting… (PID=5397)
[1208969593] Local time is Wed Apr 23 18:53:13 CEST 2008
[1208969593] LOG VERSION: 2.0
[1208969593] ndomod: NDOMOD 1.4b7 (10-31-2007) Copyright (c) 2005-2007 Ethan Galstad (
nagios@nagios.org)
[1208969593] ndomod: Successfully connected to data sink. 0 queued items to flush.
[1208969593] Event broker module ‘/opt/nagios/bin/ndomod.o’ initialized successfully.

  • Si hubiera problemas con la componente NDO2DB podemos configurar en el ndo2db.cfg las opciones de debug debug_level, debug_verbosity y debug_file.

NagVis se ha instalado de la siguiente forma:

  • Descargamos el software en /opt/software, descomprimimos y lo pasaremos al subdirectorio share:

root@singer:/opt/software/Nagios3.0.1# tar xvf nagvis-1.3rc1.tar
root@singer:/opt/software/Nagios3.0.1# mv nagvis-1.3rc1 /opt/nagios/share/nagvis
root@singer:/opt/software/Nagios3.0.1# ls -la /opt/nagios/share/nagvis
total 68
drwxr-xr-x 6 www-data www-data 4096 2008-04-23 20:49 .
drwxr-xr-x 16 root root 4096 2008-04-23 20:41 ..
-rw-r–r– 1 www-data www-data 1313 2008-03-29 02:01 config.php
-rw-r–r– 1 www-data www-data 427 2008-04-23 20:49 config.php.old
drwxr-xr-x 3 www-data www-data 4096 2008-04-23 21:02 etc
-rw-r–r– 1 www-data www-data 1322 2008-03-29 02:01 index.php
-rw-r–r– 1 www-data www-data 5316 2008-03-25 22:54 INSTALL
-rw-r–r– 1 www-data www-data 18182 2007-12-06 21:44 LICENCE
drwxr-xr-x 5 www-data www-data 4096 2008-02-26 21:56 nagvis
-rw-r–r– 1 www-data www-data 1334 2008-03-29 02:01 README
drwxrwxr-x 2 www-data www-data 4096 2008-02-28 21:30 var
drwxr-xr-x 4 www-data www-data 4096 2008-02-16 17:07 wui

  • Cambiaremos los permisos:

root@singer:/opt/software/Nagios3.0.1/nagvis-1.3rc1# cd /opt/nagios/share/nagvis
root@singer:/opt/nagios/share/nagvis# chown -R www-data:www-data *
root@singer:/opt/nagios/share/nagvis# chmod -R 775 etc/maps var

  • Configuraremos el addon editando el nagvis.ini.php:

root@singer:/opt/nagios/share/nagvis# cd etc/
root@singer:/opt/nagios/share/nagvis/etc# mv nagvis.ini.php-sample nagvis.ini.php
root@singer:/opt/nagios/share/nagvis/etc# vi nagvis.ini.php

[global]
displayheader=1
refreshtime=30

[defaults]

[wui]

[automap]
defaultroot=”firewall_1″

[paths]
base=”/opt/nagios/share/nagvis/”
htmlbase=”/nagios/nagvis”
htmlcgi=”/nagios/cgi-bin”

[backend_ndomy_1]
backendtype=”ndomy”
dbuser=”nagvis”
dbpass=”password”
htmlcgi=”/nagios/cgi-bin”

[rotation_systems]
rotationid=”systems”
maps=”Systems_Status,Application”
interval=30