Les caractéristiques de ce serveur seront les suivantes:
* Système d’exploitation: GNU/Linux Ubuntu Server Edition 8.10
* Nagios 3.2.0
* Centreon 2.0
* Cacti 0.8.7b
Intro
Si on ne souhaite pas faire l'isntallation, on peut utiliser : la distribution FAN (Fully Automated Nagios), comportant Linux avec les outils Nagios, Centreon… déjà préinstallés.
Installation du système d’exploitation GNU/Linux
On par sur un distribe Ubuntu Server. La doc sera faite avec la version 9.10, mais on peut aussi ce placer dans un philosophie LTS avec la 8.04
On choisis une installation standard (pas d'interface graphique)
On commence par mettre à jour le système:
# sudo apt-get update
# sudo apt-get upgrade
On va avoir besoin de compiler des sources de logiciels, il faut donc dans un premier temps installer le package “build-essential” qui comporte les librairies de développement de bases:
# sudo apt-get install build-essential
Nagios, Centreon et Cacti utilise une interface Web pour interagir avec les utilisateurs. Il faut donc installer un serveur Web sur notre serveur de supervision. On ne va pas être très original… On va utiliser Apache 2.
# sudo apt-get install apache2 wget
Certaine librairie sont également nécessaires au bon fonctionnement de Nagios et de ces plugins :
# sudo apt-get install bind9-host dnsutils libbind9-0 libdns22 libisc11 libisccc0 libisccfg1 liblwres9 libradius1 qstat radiusclient1 snmp snmpd
puis de Centreon:
# sudo apt-get install rrdtool mailx librrds-perl libapache2-mod-php5 php5 php-pear php5-gd php5-ldap php5-snmp
Pour tester votre serveur Web, il faut commencer par le lancer…
# sudo apache2ctl start
Puis on teste en ligne de commande:
# wget http://<adresseIPserveur>/
–2009-01-15 17:36:17– http://<adresseIPserveur>/
Resolving al-serv8… 127.0.1.1
Connecting to al-serv8|127.0.1.1|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 45
Saving to: `index.html’
100%[========================================================================>] 45 –.-K/s in 0s
2009-01-15 17:36:17 (7,98 MB/s) – `index.html’ saved [45/45]
On installe les librairies qui serviront à Nagios pour afficher de beau diagrammes réseau:
# sudo apt-get install libgd2-noxpm-dev libpng12-dev libjpeg62 libjpeg62-dev
Centreon utilise une base de donnée MySQL, il faut donc installer MySQL server sur notre serveur:
# sudo apt-get install mysql-server
# sudo apt-get install php5-mysql
# sudo apt-get install libmysqlclient15-dev
Pour des raisons de sécurité, le processus Nagios ne sera pas lancé en root. Nous allons donc créer un utilisateur système nagios et un groupe nagiosgrp. (ce dernier comprendra les utilisateurs nagios et www-data).
# sudo /usr/sbin/useradd nagios
# sudo passwd nagios
# sudo /usr/sbin/groupadd nagiosgrp
# sudo /usr/sbin/usermod -G nagiosgrp nagios
# sudo /usr/sbin/usermod -G nagiosgrp www-data
#> aptitude show nagios3
Paquet : nagios3
État: non installé
Version : 3.0.6-5ubuntu3
Priorité : optionnel
Section : net
Responsable : Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
Taille décompressée : 4 674k
Dépend: libc6 (>= 2.8), libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>=
2.0.36~rc1~dfsg), libjpeg62, libperl5.10 (>= 5.10.0), libpng12-0 (>=
1.2.13-4), zlib1g (>= 1:1.1.4), nagios3-common (= 3.0.6-5ubuntu3), perl
Suggère: nagios-nrpe-plugin
Description : A host/service/network monitoring and management system
Nagios is a monitoring and management system for hosts, services and networks.
Il faut dans un premier temps se rendre à la page officielle des téléchargements, puis noter les derniers numéro de version de Nagios et des plugins Nagios (respectivement 3.2.0 et 1.4.13)
# wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
# wget http://kent.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
Decompression des sources
# tar xzf nagios-3.2.0.tar.gz
# cd nagios-3.2.0
Compilation
# ./configure --with-command-group=nagiosgrpGeneral Options:
————————-
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagiosgrp
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/apache2/conf.d
Mail program: /bin/mail
Host OS: linux-gnu
# make all
REMARQUE: Il risque d’y avoir des alertes (”warning”), ce n’est pas grave, par contre, il ne faut par d’erreurs… (”error”).
# make install
# make install-config
# make install-commandmode
On installe ensuite le script de démarrage (pour que Nagios se lance automatiquement avec notre serveur de supervision):
# make install-init
# ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
# make install-webconf
# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
REMARQUE: Il faut saisir le mot de passe pour le compte nagiosadmin de l’interface Web
# /etc/init.d/apache2 reload
Compilation des plugins Nagios
De base, Nagios est livré sans aucun plugin. Il faut donc installer les plugins standards permettant de surveiller son réseau.
# sudo apt-get install fping libnet-snmp-perl libldap-dev libmysqlclient-dev libgnutls-dev libradiusclient-ng-dev
# cd /usr/src
# tar xzf nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure --with-nagios-user=nagios --with-nagios-group=nagiosgrp
# make
# make install
Premier test de Nagios
Nagios est distribué avec une configuration initiale opérationnelle (elle permet notamment de surveiller… son serveur de supervision ;) .
Nous allons donc tester les fichiers de configuration grâce à la commande suivante:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Si tout ce passe bien vous devriez avoir le message suivant qui s”affiche:
Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check
Enfin on lance le serveur Nagios:
# /etc/init.d/nagios start
Si le message suivant s’affiche, ce n’est pas important…
Starting nagios:No directory, logging in with HOME=/
Il ne reste plus qu’à lancer un navigateur Web sur un PC de votre réseau et à saisir l’URL suivante:
http://<adresseIPserveur>/nagios/
REMARQUE: ne pas oublier le / à la fin…
Après une bannière d’authentification (login: nagiosadmin/ password: <votremotdepasse>), vous devriez voir s’afficher
En cliquant sur le lien “Hostgroup Overview”, vous devriez voir la supervision de votre serveur:
Puis le détail des services supervisés en cliquant sur “localhost”:
Installation de la base de donnée NDO
Afin de communiquer entre eux, Nagios et Centreon utilise une base de donnée commune (NDO). Nous allons commencer par créer cette base de donnée sur notre serveur MySQL (installé dans la première partie de cette série de billets).
# 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
De base, Nagios n’écrit pas les informations sur sa configuration dans la base de donnée NDO. Pour cela, il faut installer un plugin: NDOUtils. Ce dernier est composé de deux briques: NDOMOD et NDO2DB. Le premier va prendre les événements à partir du daemon Nagios et les envoyer via une socket (TCP ou UNIX) vers le second qui va les convertir dans un format compatible avec la base de donnée choisie (MySQL ou PgSQL).
Pour que le système fonctionne, il faut donc que NDOMOD soit chargé par Nagios au démmarrage et que le daemon NDO2DB soit lancé en tache de fond. Nous allons voir ça dans ce paragraphe, mais commençons par installer les NDOUtils.
Le plugin étant en développement (version 1.4b7 au moment de l’écriture de ce billet), il faut faire l’installation à la main…
# sudo -s
# cd /usr/src
# wget http://dfn.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz
# 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
# cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
# cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
# 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
# cp config/ndomod.cfg /usr/local/nagios/etc/
# 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
# cp config/ndo2db.cfg /usr/local/nagios/etc/
# 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
# chmod 774 /usr/local/nagios/bin/ndo*
# chown nagios:nagiosgrp /usr/local/nagios/bin/*
# chown nagios:nagiosgrp /usr/local/nagios/etc/ndo*
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…
Puis on initialise la base de données MySQL:
# cd db
# ./installdb -u ndouser -p ndopassword -h localhost -d ndo
… Table ‘nagios.nagis_dbversion’ doesn’t exist at ./installdb line 51…
PS: dans mon cas j’ai rencontré une erreur lors de l’installation de la base de donnée (./installdb) mais sans conséquence sur le bon fonctionnement du système.
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
On lance ensuite NDO:
# /etc/init.d/ndo2db start
Il ne reste plus qu’a lancer relancer Nagios:
# /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.
Passons maintenant aux choses sérieuses avec l’installation de Centreon version 2.0 sur notre serveur de supervision.
Nous allons commencer par récupérer la dernière version de Centreon sur le site officiel. Pensez à remplacer le lien de téléchargement de Centreon (http://download.centreon.com/index.php?id=100) ainsi que la version (centreon-2.0 au moment de la rédaction de ce billet) par la dernière version disponible.
# sudo -s
# cd /usr/src
# wget http://download.centreon.com/index.php?id=100
# tar zxvf centreon-2.0.tar.gz
# cd centreon-2.0
Il faut ensuite lancer l’assistant d’installation et répondre aux questions en suivant l’exemple suivant (j’ai juste copié les lignes ou il faut une intervention de votre part.):
# ./install.sh -i
Do you accept GPL license ?
[y/n], default to [n]:
> y
Do you want to install : Centreon Web Front
[y/n], default to [n]:
> y
Do you want to install : Centreon Nagios Plugins
[y/n], default to [n]:
> y
Do you want to install : Centreon Snmp Traps process
[y/n], default to [n]:
> y
Do you want me to create this directory ? [/usr/local/centreon]
[y/n], default to [n]:> y
Path /usr/local/centreon OK
Do you want me to create this directory ? [/usr/local/centreon/log]
[y/n], default to [n]:> y
Do you want me to create this directory ? [/etc/centreon]
[y/n], default to [n]:> y
/usr/local/nagios/bin/nagios OK
Where is your NDO ndomod binary ?
default to [/usr/sbin/ndomod.o]> /usr/local/nagios/bin/ndomod.o
/usr/local/nagios/bin/ndomod.o OK
Do you want me to configure your sudo ? (WARNING)
[y/n], default to [n]:> y
Configuring Sudo OK
Do you want to add Centreon Apache sub configuration file ?
[y/n], default to [n]:> y
Create ‘/etc/apache2/conf.d/centreon.conf’ OK
Configuring Apache OK
Do you want to reload your Apache ?
[y/n], default to [n]:> y
Reloading Apache service OK
Do you want me to create this directory ? [/var/run/centreon]
[y/n], default to [n]:> y
Path /var/run/centreon OK
Do you want me to create this directory ? [/var/lib/centreon]
[y/n], default to [n]:> y
Path /var/lib/centreon OK
Do you want me to install CentStorage init script ?
[y/n], default to [n]:> y
CentStorage init script installed OK
Do you want me to install CentStorage run level ?
[y/n], default to [n]:> y
Do you want me to install CentCore init script ?
[y/n], default to [n]:> y
CentCore init script installed OK
Do you want me to install CentCore run level ?
[y/n], default to [n]:> y
Do you want me to create this directory ? [/var/lib/centreon/centplugins]
[y/n], default to [n]:> y
Path /var/lib/centreon/centplugins OK
Un dernière étape (merci à WAtt pour l’information), consiste à modifier la base de donnée NDO pour qu’elle fonctionne de manière optimisée avec Centreon:
# 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
# cd /usr/src/centreon-2.0/
On peut maintenant ce rendre à l’URL suivante pour finaliser l’installation par l’interface Web:
http://<adresseIPserveur>/centreon/
REMARQUE: ne pas oublier le / à la fin…
Puis suivre les étapes suivantes:
L’installation est maintenant terminée. Vous devriez être redirigé vers la page de connexion de Centreon (http://<adresseIPserveur>/centreon/).
Le message d’erreur suivant devrait apparaître: “Connection Error to NDO DataBase !”
C’est normal, il faut maintenant configurer Centreon pour qu’il puisse se connecter avec la base de données NDO.
Pour cela, 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
En allant dans le menu Monitoring / Hosts Groups Summary vous devriez trouvez la supervision de votre serveur Nagios (défini par défaut lors de l’installation de Nagios):
Ainsi que les 8 services définis:
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 774 /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:
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:
Si vous avez déjà une configuration existantes avec des hosts, services, groupes ou autres défini dans votre serveur Nagios, il faut passer par une phase d’importation avant de les voir apparaître dans Centreon. En effet, si vous utilisez Nagios depuis un moment, il peut être utile d’importer la configuration existante dans Centreon. Pour cela il faut suivre une procédure simple mais assez longue. Pour ne pas faire de copier/coller du Wiki de Centreon, reportez vous à cette page pour consulter cette procédure.
La dernière version de Cacti (0.8.7b) est disponible dans les repos apt d’Unbuntu, donc pas la peine de s’embêter pour l’installation (choisir Apache2 comme serveur Web utilisé puis laissé l’installer créer la base de donnée pour vous):
# sudo apt-get install cacti-cactid
Les paramètres de la base de donnée dédiée à Cacti sont stockés dans le fichier /etc/cacti/debian.php.
$database_username=’cacti’;
$database_password=’monmotdepasse’;
$basepath=”;
$database_default=’cacti’;
$database_hostname=”;
$database_port=”;
$dbtype=’mysql’;
Il faut ensuite se rendre sur l’interface Web:
http://<adresseIPserveur>/cacti/
REMARQUE: ne pas oublier le / à la fin…
Puis suivre les étapes suivantes:
Une bannière d’authentification devrait apparaître. Le login/password par défaut est admin/admin.
Vous voilà sur l’interface d’administration de cacti.
Il faut maintenant configurer le logiciel pour savoir comment le polling va être fait (quand et comment cacti va chercher les informations pour faire ses graphes). On va dans le menu Configuration Setting/Poller puis on sélectionne Spine comme type de polling:
Et voilà, au bout de 15 minutes, vous devriez voir les premiers courbes dans l’onglet Graphs. Je vous laisse lire le manuel pour entrer de nouveaux graphes dans votre configuration.
Le but est d’ajouter automatiquement un lien vers Cacti depuis l’interface Web de Nagios. Il suffit donc juste de cliquer sur un bouton (
) pour être redirigé automatiquement vers la page correspondante au host en question
dans Cacti.
Nous allons pour cela utiliser un scipt PHP nommé CactiPlug (téléchargeable ici).
Installation de cactiPlug.php
L’installation donnée ci-dessous a été validé avec Nagios 3.06 et Cacti 0.8.7b.
Il faut suivre les étapes suivantes:
# tar zxvf cactiplug-0.2.tgz
# mv cactiplug /usr/local/nagios/share
# chown -R nagios:nagios /usr/local/nagios/share/cactiplug
Ensuite il faut configurer Nagios pour qu’il prenne en compte le plugin. Le plus simple est d’ajouter la ligne suivante dans le template generic_host du fichier template.cfg (voir ici vous êtes perdu dans les fichiers de conf de Nagios).
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_period 24×7
register 0
action_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
}
Si vous utilisez Centreon, cette action peut être faite via le menu Configuration / Hosts / Host Extended infos:
- Action URL: /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
Configuration du plugin
La dernière étape consiste à éditer le fichier /usr/local/nagios/share/cactiplug/cactiplug.php afin d’y saisir les informations relatives à votre base de données Cacti (host, nom de la base, login et password).
Ensuite, il ne reste plus qu’a relancer Nagios:
# sudo /etc/init.d/nagios restart