NDO2Utils

NdoUtils, es una herramienta complementaria a Nagios, que nos permite almacenar en una base de datos la información Nagios.

root@localhost # tar xvfzp ndoutils-1.4b7.tar.gz
root@localhost ndoutils-1.4b7 # ./configure
*** 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@localhost ndoutils-1.4b7 # make
root@localhost ndoutils-1.4b7 # cd db
root@localhost db #./installdb -u nagios -p nagios -h localhost -d nagios

Hay 4 componentes principales que inician las utilidades NDO:

NDOMOD Event Broker Module (Modulo de evento corredor)

LOG2NDO Utility

FILE2SOCK Utility

NDO2DB Daemon

El NDOMOD Event Broker Module

Las utilidades NDO incluyen un Nagios Even Broker Module (NDOMOD.O) que exporta datos desde el demonio de nagios.

Asumiendo que nagios fue compilado con el Modulo Event Broker activado (esto es por default), usted puede configurar que nagios cargue el modulo NDOMOD en tiempo de ejecucion. Una vez que el modulo fue cargado por el daemon de nagios, este puede acceder a todos los datos y logicamente presente el el proceso de nagios que esta corriendo.

El modulo NDOMOD tiene designado exportar la configuracion, como informacion variada de eventos en tiempo de ejecucion que ocurre en el proceso de monitoreo, por el daemon de nagios. El modulo puede enviar esta informacion a un archivo estandar, a un Socket Unix de Dominio o un a socket TCP.

El NDOMOD escribe la info en un formato que el demonio NDO2DB puede entender.

Si el NDOMOD esta escrito para un archivo de salida, usted puede configurarlo para rotarlo periodicamente y/o procesarlo en otra maquina fisicamente (usando SSH, etc.) y envia este contenido al daemon NDO2DB usando la utilidad FILE2SOCK (que describiremos mas adelante).

La utilidad LOG2NDO

Esta es designada para permitir importar un historial de logs de nagios a una BD via el NDO2DB daemon (describiremos luego). La utilidad trabaja enviando archivos de logs históricos a un archivo estandar, un unix sock o un tcp sock en un formato que NDO2DB daemon entienda. El NDO2DB daemon puede luego usarlo para procesar la salida y almacenar en un archivo de log historico informandolo en una BD.

La utilidad FILE2SOCK

Esta utilidad es muy simple, solo lee de un archivo estandar (o STDIN) y escribe todo sobre un socket de dominio unix o un tcp socket. Estos datos son leidos y no son procesados por nada, antes de ser enviados al socket.

El demonio NDO2DB

La utilidad es diseñada para tomar los datos de salida de los componentes NDOMOD y LOG2NDO y almacenarlos en una BD MySQL o BD PostgreSQL.

Cuando este inicia, el daemon NDO2DB crea un socket y espera que los clientes se conecten. NDO2DB puede correr independientemente, bajo un demonio multiproceso o bajo inetd (si esta usando un socket TCP).

Multiples clientes pueden conectarse al daemon NDO2DB y transmitir simultáneamente.

Instalación

Una vez compilado el modulo NDO procederemos a instalarlo manualmente

cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o

Con esto copiaremos el modulo al directorio de ejecución de Nagios

cp config/ndomod.cfg /usr/local/nagios/etc

De esta manera instalaremos la configuración inicial del modulo

Igualmente lo haremos con el daemon NDO2DB

cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db

Con esto copiaremos el daemon al directorio de ejecución de Nagios

cp config/ndo2db.cfg /usr/local/nagios/etc

De esta manera instalaremos la configuración inicial del daemon

Configuración

CREATE INDEX start_time_idx ON nagios_hostchecks (start_time); CREATE INDEX start_time_idx ON nagios_servicechecks (start_time); CREATE INDEX scheduled_time_idx ON nagios_timedeventqueue (scheduled_time); CREATE INDEX start_time_idx ON nagios_hostchecks (start_time); CREATE INDEX start_time_idx ON nagios_servicechecks (start_time); CREATE INDEX scheduled_time_idx ON nagios_timedeventqueue (scheduled_time); ALTER TABLE `nagios_configfilevariables` DROP INDEX `instance_id` ; ADD INDEX `instance_id` ( `instance_id` , `configfile_id` );

NDO

Cuando la base de datos esta cargada con una gran cantidad de registros, el NDO comienza a tener un comportamiento erratico, y los datos reflejados no son los correctos, por lo tanto cada cierto tiempo hay que purgar algunas tablas, ese tiempo sera dependiendo de la cantidad de objetos a monitorear.

Podemos crear un script que realize dicha tarea

#!/bin/bash echo "TRUNCATE TABLE nagios_servicechecks" | /usr/bin/mysql -u root --batch --database=nagios echo "TRUNCATE TABLE nagios_logentries" | /usr/bin/mysql -u root --batch --database=nagios echo "TRUNCATE TABLE nagios_service_contactgroups" | /usr/bin/mysql -u root --batch --database=nagios echo "TRUNCATE TABLE nagios_hostchecks" | /usr/bin/mysql -u root --batch --database=nagios

Para luego incluirlo en el crontab, por ejemplo si tenemos alrededor de mas de 600 hosts y alrededor de 2000 servicios o mas, chequeando ambos en intervalos de ente 1 y 5 minutos, podemos establecer su ejecucion en 15 minutos.

0,15,30,45 * * * root /usr/local/nagios/sbin/truncar_db.sh

Igualmente en las opciones de configuracion del daemon ndo2db tenemos opciones referidas a esto, aunque igualmente dependeremos del script a realizar ya que el NDO en si mismo puede fallar. La configuracion se refiere a valores en minutos.

# Keep timed events for 24 hours
#max_timedevents_age=1440
max_timedevents_age=120
# Keep system commands for 1 week
#max_systemcommands_age=10080
max_systemcommands_age=1
# Keep service checks for 1 week
#max_servicechecks_age=10080
max_servicechecks_age=240
# Keep host checks for 1 week
#max_hostchecks_age=10080
max_hostchecks_age=240
# Keep event handlers for 31 days
#max_eventhandlers_age=44640
max_eventhandlers_age=60

Reparar tabla de NDO : En caso de que una tabla se corrompa, deberemos bajar el servicio NDO para que nagios no siga escribiendo registros y ejecutar la siguiente orden desde el shell.

mysqlcheck –-auto-repair nagios nagios_servicechecks;