Pour en finir avec NDO
Vu le nombre de messages sur le forum concernant l'installation et la configuration de NDO (la petite boite qui fait le lien entre Nagios et Centreon), je me devais de rédiger ce billet sur le sujet. Nous allons donc voir étape par étape les choses à vérifier et à faire pour faire fonctionner ce bouzin (oui, oui c'est un bouzin).
Dans la suite de ce billet, je pars sur l'hypothése ou vous avez installé Nagios et Centreon en suivant cette série de billets.
NDO c'est quoi ?
NDO est un module additionnel permettant à Nagios d'écrire dans une base de données l'état des machines et services à superviser.
NDOMOD doit être lancé sur le serveur Nagios et permet de récupérer les informations remontées par Nagios pour les transmettre via TCP (ou un socket Unix) vers NDO2DB.
NDO2DB est un daemon qui écoute sur un port TCP (ou un socket Unix) et écrit les données recues dans une base de donnée (MySQL ou PgSQL).
Compilation de NDO
Le plugin est a récupérer à l'adresse suivante: http://www.nagios.org/download/addons/ ou en saisissant les commandes suivantes:
# sudo -s
# cd /usr/src
# wget http://dfn.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz
Remarque: la version disponible au moment de l'écriture de ce billet est la 1.4b7 (à modifier par vos soins).
On lance la compilation pour une utilisation d'une base de donnée MySQL:
# tar zxvf ndoutils-1.4b7.tar.gz
# cd ndoutils-1.4b7
# ./configure --disable-pgsql --with-mysql-lib=/usr/lib/mysql --with-ndo2db-user=nagios --with-ndo2db-group=nagiosgrp
# make
La compilation doit se faire sans erreur...
Installation de NDO
NDO ne dispose pas d'un "installateur" standard, il faut donc saisir les commandes suivantes (toujours en mode root):
# cd /usr/src/ndoutils-1.4b7
# cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
# cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
On écrase les droits par défaut de ces fichiers:
# chown nagios:nagiosgrp /usr/local/nagios/bin/ndo*# chmod 774 /usr/local/nagios/bin/ndo*
Configuration de la base de donnée MySQL
Avant que NDO2DB ne puisse écrire des informations dans la base de donnée, il faut créer et configurer cette dernière.
Création de la base de données MySQL NDO:
# mysqladmin -u root -p create ndo
# mysql -u root -p mysql
mysql> GRANT ALL ON ndo.* TO ndouser@localhost IDENTIFIED BY ndopassword;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Puis on la configure:
# cd /usr/src/ndoutils-1.4b7/db# ./installdb -u ndouser -p ndopassword -h localhost -d ndo
… Table ‘nagios.nagis_dbversion’ doesn’t exist at ./installdb line 51…
Remarque: vous pouvez ignorer l'erreur.
Configuration de NDO
La configuration de NDO se fait par deux fichiers:
- ndomod.cfg : configuration de NDOMOD
- ndo2db.cfg: configuration de NDO2DB
Leux fichiers doivent être initialisés:
# cp config/ndomod.cfg /usr/local/nagios/etc/# cp config/ndo2db.cfg /usr/local/nagios/etc/
On leurs donne les droits:
# chown nagios:nagiosgrp /usr/local/nagios/etc/ndo*
Puis on les édite de la manière suivante:
# vi /usr/local/nagios/etc/ndomod.cfg
instance_name=Central
output_type=unixsocket
output=/usr/local/nagios/var/ndo.sock
tcp_port=5668
output_buffer_items=5000
buffer_file=/usr/local/nagios/var/ndomod.tmp
et:
# vi /usr/local/nagios/etc/ndo2db.cfg
ndo2db_user=nagios
ndo2db_group=nagiosgrp
socket_type=unix
socket_name=/usr/local/nagios/var/ndo.sock
tcp_port=5668
db_servertype=mysql
db_host=localhost
db_name=ndo
db_port=3306
db_prefix=nagios_
db_user=ndouser
db_pass=ndopassword
Configuration de Nagios
Nous allons configurer Nagios pour qu'il passe les informations automatiquement à NDOMOD. Pour celà, il faut éditer le fichier /usr/local/nagios/etc/nagios.cfg et y ajouter les 2 lignes suivantes:
# vi /usr/local/nagios/etc/nagios.cfg
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
Attention, si vous faite un copier/coller pour ajouter les lignes de
configuration dans le nagios.cfg, il faut faire attention à la ligne:
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
qui est sur une seule ligne et pas en deux lignes…
Automatisation du lancement de NDO
NDO n'est pas fourni avec un script de démarrage automatique (au démarrage du serveur). Voici donc un procédure à suivre pour une installation sous GNU/Linux Ubuntu (script à adapter à votre distribution).
Pour automatiser le lancement de NDO au démarrage du serveur, il faut ajouter le script suivant dans le fichier /etc/init.d/ndo2db). Il faut le rendre exécutable:
# sudo chown root:root /etc/init.d/ndo2db
# sudo chmod 755 /etc/init.d/ndo2db
On automatise le lancement du processus ndo2db au démarrage du serveur:
# sudo update-rc.d ndo2db defaults
Test de NDO + Nagios
Pour que votre configuration soit prise en compte, il faut lancer NDO et relancer Nagios:
# /etc/init.d/ndo2db start
# /etc/init.d/nagios restart
Running configuration check…done.
Stopping nagios: No directory, logging in with HOME=/
done.
Starting nagios:No directory, logging in with HOME=/
No directory, logging in with HOME=/
done.
Remarque: vous pouvez ignorer les messages: "No directory, logging in with HOME=/"
Si tout se passe bien, Nagios devrait commencer à écrire les informations dans la base de donnée MySQL. Pour vous en assurer, allez voir du coté du fichier de log si vous avez les messages suivants:
tail -f /usr/local/nagios/var/nagios.log
...
[1234886298] Auto-save of retention data completed successfully.
...
Configuration de NDO pour Centreon
Passons maintenant aux choses sérieuses avec la configuration de NDO pour Centreon. Il faut commencer par modifier la base de donnée MySQL pour prendre en compte Centreon (quand je vous disais bouzin...):
# cd /usr/src/centreon-2.0/www/install
# mysql -u root -p ndo < ./createNDODB.sql
# mysql -u root -p
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON ndo . * TO ndouser@localhost IDENTIFIED BY ndopassword;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)
mysql> exit
Nous allons maintenant générer les fichiers de configuration NDO par Centreon. Pour celà, il faut aller dans le menu Configuration/Centreon, puis cliquer sur
le lien ndo2db.cfg dans le menu de gauche et cliquer sur le lien
Principal.
Saisir la configuration suivante dans l’onglet General (Socket type: Unix et fichier socket /usr/local/nagios/var/ndo.sock):
- Socket type: unux
- Socket name: /usr/local/nagios/var/ndo.sock
Modifier le login/password pour l’accès à la base de donnée NDO (ndouser/ndopassword):
il faut ensuite aller dans le menu Configuration/Centreon, puis
cliquer sur le lien ndomod.cfg dans le menu de gauche et cliquer sur le
lien Principal.
- Socket type: unixsocket
- Output: /usr/local/nagios/var/ndo.sock
- Buffer File: /usr/local/nagios/var/ndomod.tmp
Enfin nous allons exporter la configuration de Centreon vers Nagios (et donc normalement écraser les anciens fichiers de configuration de NDO).
La première chose à faire est de vérifier que les droits du
répertoire /usr/local/nagios/etc (et de tout ce qui a dessous) sont
compatible avec un écriture qui va être faite par Centreon (donc avec
l’utilisateur www-data):
# chmod -R 664 /usr/local/nagios/etc
Nagios reste le coeur de notre système de supervision. Ainsi quand
un host/service est créé dans l’interface de Centreon (menu
configuration / Hosts / Add), il faut ensuite exporter cette nouvelle
configuration pour qu’elle soit prise en compte par Nagios et donc
affiché dans l’interface de supervision de Centreon.
Il faut pour cela se rendre dans le menu Configuration / Nagios et saisir le formulaire suivant:
Le résultat de la commande doit être le suivant:
Il faut également penser à vérifier que l'exportation vers le répertoire de Nagios se passe sans problème (il ne faut PAS de message de type KO dans l'écran précédant).
Cette action est a répéter a chaque fois que vous souhaitez ajouter une configuration depuis Centreon vers Nagios.
Après quelques minutes, les informations
sur l’état de vos machines/services devraient remonter dans Centreon à
travers le module NDO. Pour vérifier que tout ce passe bien à ce
niveau, il faut se rendre dans le menu Monitoring / Event logs et
vérifier qu’il n’y a pas d’erreur au niveau ndomod:
Et voilà, vous devriez avoir un système opérationnel. En cas de problème pour suivre cette procédure, vous pouvez toujours poser une question sur le forum.