Monitoring avec Nagios 4.X

Maintenant que notre serveur roule, on va installer un logiciel qui va nous permettre de le surveiller, Nagios. C’est un logiciel de monitoring qui surveille le système et le réseau de votre serveur. Il va surveiller tout un tas de service (ssh, smtp, http, etc) ainsi que l’espace disque ou encore la charge système et vous envoyer un mail à chaque alerte.
Attaquons l’installation. On va compiler les sources manuellement car les dépôts Debian sont encore à la version 3 de Nagios alors que la version 4 est sortie depuis un bon moment.

Prérequis

Comme Nagios utilise une interface web, il vous faut forcément un serveur LAMP (acronyme Linux, Apache, Mysql et PHP de. Si vous avez suivi mon tuto sur ISPConfig, vous avez déjà tout ce qu’il vous faut. Sinon il y a quelques milliers de tuto sur le net qui expliquent comme installer un serveur LAMP 😉
Avant de se lancer dans l’installation proprement dite, on va installer les dépendance de Nagios avec la commande

sudo aptitude install build-essential libgd2-xpm-dev apache2-utils git m4 gettext automake autoconf


Puis on va activer des modules d’Apache avec les commandes :

a2enmod rewrite
a2enmod cgi
a2enmod auth_digest

Si vous voulez que Nagios vous envoi des alertes par mail, il vous faudra également un serveur mail.

On va ensuite créer les utilisateurs/groupe nécessaire à Nagios. Passez en root avec la commande su.
Tout d’abord l’utilisateur qui lancera Nagios : useradd -m nagios et on lui attribue un mot de passe avec la commande passwd nagios

Ensuite le groupe nagcmd qui va lancer les commandes externes via l’interface web : groupadd nagcmd

Pour finir, on va rajouter les utilisateurs nagios et apache (www-data) à ce groupe avec les commandes :

  • usermod -a -G nagcmd nagios
  • usermod -a -G nagcmd www-data

 

Installation Nagios

On va télécharger la version Git de Nagios (la plus récente). Lancer la commande cd /tmp pour aller dans le répertoire /tmp. Lancez le téléchargement avec la commande git clone https://github.com/NagiosEnterprises/nagioscore.git

Une fois le téléchargement terminé, allez dans le répertoire avec la commande cd nagioscore.

On va maintenant passer à la compilation. Lancez la commande ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --with-openssl
Vous ne devriez avoir aucune erreur normalement. Maintenant que le fichier de configuration est créé, on peut lancer la compilation avec la commande make all (si votre CPU à plusieurs coeurs vous pouvez les mettre à contribution en rajoutant -jn où n est le nombre de coeurs utilisés pendant la compilation).

Maintenant que Nagios est compilé, on va pouvoir l’installer. L’installation de Nagios se fait en plusieurs parties, il va donc falloir lancer plusieurs commandes d’installation. Lancez donc les commandes suivantes :

make install
make install-init
make install-config
make install-commandmode

Nagios a été installé dans le répertoire /usr/local/nagios/.

Il nous manque une dernière commande pour installer l’interface web. La commande normalement utilisée  (make install-webconf) essaye de copier le fichier de configuration de Nagios dans /etc/httpd/conf.d/ au lieu de /etc/apache2/sitesenabled/. Pour remédier à ça, lancez la commande /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf qui va créer le fichier de conf au bon endroit et lui attribuer les bons droits.

Passons à la configuration.

Configuration Nagios

Pour commencer, éditer le fichier  /usr/local/nagios/etc/objects/contacts.cfg avec la commande nano /usr/local/nagios/etc/objects/contacts.cfg. Sur la ligne  email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** remplacez l’adresse nagios@localhost par l’adresse sur laquelle vous voulez que Nagios envoi les alertes. Appuyez sur CTRL+O et Entrée puis CTRL+X pour sauvegarder et quitter.

On va créer un mot de passe pour l’utilisateur de l’interface web, qui sera nagiosadmin. Tapez la commande htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadminet tapez deux fois le mot de passe souhaité.

Redémarrez apache avec la commande systemctl restart apache2 pour que les modifications soient prises en compte.

Nagios-Plugins

On va maintenant installer des plugins de Nagios. Retournez dans le répertoire tmp avec la commande cd /tmp.
On va télécharger la version git avec la commande git clone https://github.com/nagios-plugins/nagios-plugins.git puis se rendre dans le répertoire nagios-plugins avec la commande cd nagios-plugins.

On va commencer par créer le fichier de configuration avec les commandes

./tools/setup
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd

Maintenant que le fichier de configuration est créé, il ne nous reste plus qu’à compiler et installer Nagios-Plugins avec les commandes

make
make install

Lancement

On va vérifier que le fichier de config de Nagios soit correct avec la commande /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg. A la fin vous devez avoir zéro erreur et zéro warning.

Le fichier d’init ne fonctionne pas chez moi, j’ai donc du le remplacer. Supprimez le fichier /etc/init.d/nagios avec la commande rm /etc/init.d/nagios . Copier le fichier d’exemple, skeleton avec la commande cp /etc/init.d/skeleton /etc/init.d/nagios puis éditez le avec la commande nano /etc/init.d/nagios.
Supprimer les deux dernières lignes et coller ce paragraphe à la fin :

DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock 

Puis quitter en faisant CTRL+O puis CTRL +X. Enfin, rendez le fichier exécutable avec la commande chmod +x /etc/init.d/nagios.

On va configurer le système pour que Nagios se lance au démarrage du serveur. Pour se faire, lancez la commande suivante : ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Il ne vous reste plus qu’à lancer Nagios avec la commande /etc/init.d/nagios start. Pour accéder à l’interface web, il faut vous rendre à l’adresse http://ipduserveur/nagios. Le login est nagiosadmin et le mot de passe celui que vous avez rentré précédemment.

Problèmes

Si vous avez modifié le port ssh, il vous faudra modifier le fichier  /usr/local/nagios/etc/objects/localhost.cfg et remplacer check_ssh! par check_ssh!-p numéro_port

Si vous avez un problème avec la commande ping (et donc l’état du serveur), lancez la commande chmod u+s /bin/ping pour permettre à l’utilisateur de pinger.

Astuces

Si vous souhaitez utiliser Nagios pour surveiller un programme et avoir une alarme dés que le programme se ferme, voici comment faire.

Editez le fichier /usr/local/nagios/etc/objects/commands.cfg. Cherchez la ligne # 'check_local_procs' command definition, et copiez tout le paragraphe (le define command, command_name et  command_line avec les { et }). Sur la copie, modifier la ligne commentée (avec le # au début) et mettre processus à la place de proc. Sur la ligne command_name, mettre check_local_processus à la place de check_local_procs. Enfin, sur la ligne command_line, remplacer command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ par command_line /usr/bin/sudo $USER1$/check_procs -c $ARG1$ -C $ARG2$.
Vous devriez donc avoir ça :

# 'check_local_process' command definition
define command{
        command_name    check_local_processus
        command_line    /usr/bin/sudo $USER1$/check_procs -c $ARG1$ -C $ARG2$
        }

Editez le f ichier /usr/local/nagios/etc/objects/localhost.cfg et ajoutez les lignes

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             nomduservice
        check_command                   check_local_processus!1:1!nomduprogramme
        notifications_enabled           0
        }

Pensez bien à remplacer nomduservice par un nom plus évocateur -le nom du programme que vous surveillez par exemple) et surtout remplacez nomduprogramme par le nom exact du processus qui est exécuté (vous pouvez utiliser la commande ps -e pour avoir la liste des processus et ainsi voir le nom exact du programme que vous voulez surveiller).

Il ne vous reste plus qu’à redémarrer Nagios.

Petite explication sur la commande.
La commande check_local_processus!1:1!nomduprogramme fait exécuter à nagios la commande check_local_processus avec deux arguments : « 1:1 » et le nom du programme.
Comme on l’a indiqué dans le fichier commands.cfg, la commande check_local_processus renvoi en fait vers la commande check_local_proc -c argument1 -C argument2, où argument1 correspond à 1:1 et argument2 au nom du programme. Cette commande permet de connaître le nombre de fois qu’un processus est exécuté (en temps réel) et d’émettre une alerte. L’option « -c » permet d’indiquer le seuil de l’alerte. Avec « -c 1:1 », si le processus est lancé moins d’une fois (donc s’il est arrêté) ou plus d’une fois, une alerte critique sera levé. Et « -C » permet d’indiquer le nom du processus à surveiller. Si vous surveiller un programme qui lance 3 processus en fonctionnement normal, il vous suffira de mettre « 1:3 » en argument au lieu de « 1:1 »

Il y a juste un petit problème, la commande est lancée par l’utilisateur ayant exécuté Nagios, soit l’utilisateur nagios. La commande ne cherchera donc que dans les processus lancés par l’utilisateur nagios, et il y a peu de chance que le programme que vous voulez surveiller soit lancé par nagios. Là vous avez deux solution, soit vous vous débrouillez pour que votre processus soit lancé par l’utilisateur nagios (grosse galère en perspective) soit vous faites un truc un peu plus « sale », à savoir permettre à nagios de lancer la commande en root sans mot de passe (de quoi faire pousser des envies de meurtre chez certains ^^).
C’est pour ça que dans le fichier commands je vous ai fait rajouter « /usr/bin/sudo » avant la commande. Il ne nous reste plus qu’à modifier le fichier /etc/sudoers et de rajouter à la fin du fichier

# Allows running a script as root without any arguments
nagios    ALL=(ALL)  NOPASSWD: /usr/local/nagios/libexec/check_procs

Cette ligne va donc permettre à l’utilisateur nagios de pouvoir lancer la commande check_procs, et uniquement cette commande là, avec les droits root sans rentrer de mot de passe. Encore une fois, c’est limiter uniquement à cette commande.

Maintenant tout devrait marcher comme sur des roulettes 😉

Une réponse pour “Monitoring avec Nagios 4.X”

  1. Ping : Monitoring avec Icinga 2 - Memo du Geek

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.