Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Nagios - Installation d'un outil de supervision ====== <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/08/02 14:15// La tâche principale d'un administrateur étant le MCO (Maintient en Condition Opérationnelle), la supervision des systèmes est incontournable. Nagios offre cette possibilité. <callout type="warning" title="Versions" icon="true">Nagios existe en deux versions : * Nagios Core : la gratuite. * Nagios XI : la payante. Ici, on utilisera Nagios Core.</callout> * Référence : [[https://www.nagios.org/|Nagios]] ===== Installation ===== <callout type="info" title="Mise à jour du 15/04/2020" icon="true">La procédure a été complété pour une installation sous Debian 10.3. Deux balises permettent de différencier les commandes pour Debian 9 de celle pour Debian 10 : * <label type="success">Pour Debian 9</label> * <label type="success">Pour Debian 10</label> </callout> <callout type="primary" title="Environnement" icon="true">Cette procédure a été testée sur une Debian 9 pour les parties serveur et client Linux, et sur un Windows 10 Pro et un Windows Server 2016 Standard pour la partie client Windows.</callout> <callout type="danger" title="Droits" icon="true">Cette procédure nécessite des droits d'administrateur (root). Attention donc à ce que vous faîtes.</callout> Comme souvent sur Linux, il nous faut d'abord mettre à jour notre machine : <sxh bash>apt-get update apt-get upgrade</sxh> Une fois le système à jour, on commence par installer les prérequis : <label type="success">Pour Debian 9</label> <sxh bash>apt-get install build-essential make apache2 apache2-utils php php-gd perl libgd2-xpm-dev libapache2-mod-php libperl-dev libssl-dev daemon wget unzip openssl</sxh> <label type="success">Pour Debian 10</label> <sxh bash>apt-get install build-essential make apache2 apache2-utils php php-gd perl libgd-dev libapache2-mod-php libperl-dev libssl-dev daemon wget unzip openssl</sxh> On crée un utilisateur nagios et un groupe nagcmd auquel on ajoutera l'utilisateur nagios et www-data : <sxh bash>useradd nagios groupadd nagcmd usermod -a -G nagcmd nagios usermod -a -G nagcmd www-data</sxh> Il nous faut maintenant récupérer les sources de Nagios Core sur le site de [[https://www.nagios.org/downloads/nagios-core/thanks/?skip=1|Nagios]]. A l'heure où j'écris ces lignes, la version la plus récentes est la 4.4.5 : <sxh bash>cd /tmp/ wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz tar -zxvf nagios-4.4.5.tar.gz cd nagios-4.4.5/</sxh> On configure les sources en vue de l'installation : <sxh bash>./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/</sxh> Il nous reste plus qu'à compiler et installer Nagios : <sxh bash>make all make install make install-init make install-config make install-commandmode make install-webconf</sxh> A ce stade Nagios est installé. Cependant il n'est pas encore utilisable. Il faut d'abord configurer certains points. ===== Installation des plugins de base ===== Pour monitorer les services de bases d'un système, Nagios à besoin de différents plugins. On peut obtenir ces plugins sur [[https://nagios-plugins.org/|nagios-plugin.org]]. Actuellement, la dernière version est la 2.3.3 : <sxh bash>cd /tmp/ wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz tar -zxvf /tmp/nagios-plugins-2.3.3.tar.gz cd nagios-plugins-2.3.3/</sxh> Une fois de plus, on configure les sources : <sxh bash>./configure --with-nagios-user=nagios --with-nagios-group=nagios</sxh> Ensuite, on compile et installe : <sxh bash>make make install</sxh> ===== Configuration de l'interface Web ===== Les données de la supervision étant sensible, il nous faut en contrôler l'accès. Généralement, cela est fait par une demande d'authentification sur l'interface Web. On va donc créer un utilisateur à cet effet : <sxh bash>htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin</sxh> Nagios utilisant le module CGI, il nous faut l'activer au niveau d'apache : <sxh bash>a2enmod cgi</sxh> Ensuite, il faut redémarrer apache pour prendre en compte les modifications : <sxh bash>systemctl restart apache2</sxh> Pour permettre l'accès à Nagios depuis d'autres machines, il faut penser à paramétrer vos pare-feux. A titre d'exemple, en local avec iptables, il faudra rajouter la règle suivante : <sxh bash>iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT</sxh> <callout type="tip" title="Astuce" icon="true">Cette règle est basique et donnée à titre d'exemple. Je vous recommande de vous reporter aux manuels d'utilisation de vos solutions de sécurité afin de limiter l'accès à l'interface web aux seuls utilisateurs et adresses IP autorisés.</callout> ===== Démarrage et manipulation du service ===== A ce stade, Nagios doit pouvoir être accessible à l'adresse http://adresse_ip_de_votre_serveur/nagios. Pour cela, il faut d'abord le démarrer : <sxh bash>systemctl start nagios</sxh> Pour l'arrêter : <sxh bash>systemctl stop nagios</sxh> Pour connaître son état : <sxh bash>systemctl status nagios</sxh> Pour activer son démarrage automatique lors du démarrage du système : <sxh bash>systemctl enable nagios</sxh> ===== Paramétrages ===== Avoir un outil de supervision, c'est bien, qu'il sache ce qu'il doit monitorer, c'est mieux. Pour cela, Nagios récupère le contenu des fichiers ''.cfg'' situés dan ''/usr/local/nagios/etc/objects/'' (chemin par défaut) et y recherche les définitions des hôtes, services, contacts... Par défaut, le dossier contient déjà des définitions regroupées par type : <sxh bash>[11:06:39] nekan@srv-nagios-1:/usr/local/nagios/etc/objects# ls -l total 52 -rw-rw-r-- 1 nagios nagios 6755 août 2 10:12 commands.cfg -rw-rw-r-- 1 nagios nagios 1797 août 2 10:12 contacts.cfg -rw-rw-r-- 1 nagios nagios 4777 août 2 10:12 localhost.cfg -rw-rw-r-- 1 nagios nagios 3001 août 2 10:12 printer.cfg -rw-rw-r-- 1 nagios nagios 3484 août 2 10:12 switch.cfg -rw-rw-r-- 1 nagios nagios 12533 août 2 10:12 templates.cfg -rw-rw-r-- 1 nagios nagios 3512 août 2 10:12 timeperiods.cfg -rw-rw-r-- 1 nagios nagios 4074 août 2 10:12 windows.cfg</sxh> Chaque fichier contient les définitions de base que l'on peut prendre pour exemple afin de déclarer les différents définitions dont on aura besoins (nos machines, nos services...). Concernant l'organisation, il n'y a pas d'obligations. On peut tout déclarer dans un seul fichier, les séparer dans un fichier par type, regrouper les informations d'une machine dans un seul fichier ou encore un gros mix de tout ça. Le plus important dans tout ça, c'est de bien vérifier les définitions que nous avons déclarées avant de relancer le service Nagios et ce, afin d'éviter les plantages. Pour cela, Nagios est livré avec une routine de vérification : <sxh bash>/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg</sxh> Ce qui nous renvoie quelque chose de ce style : <sxh bash>Nagios Core 4.4.4 Copyright (c) 2009-present Nagios Core Development Team and Community Contributors Copyright (c) 1999-2009 Ethan Galstad Last Modified: 2019-07-29 License: GPL Website: https://www.nagios.org Reading configuration data... Read main config file okay... Read object config files okay... Running pre-flight check on configuration data... Checking objects... Checked 8 services. Checked 1 hosts. Checked 1 host groups. Checked 0 service groups. Checked 1 contacts. Checked 1 contact groups. Checked 24 commands. Checked 5 time periods. Checked 0 host escalations. Checked 0 service escalations. Checking for circular paths... Checked 1 hosts Checked 0 service dependencies Checked 0 host dependencies Checked 5 timeperiods Checking global event handlers... Checking obsessive compulsive processor commands... Checking misc settings... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check</sxh> On notera sur le retour de la console le nombre total d'avertissement et d'erreur. Si les avertissements ne sont pas bloquant, les erreurs entraîneront l'impossibilité de démarrer le service. Pour connaître toutes les options possibles pour les définitions d'objets : [[https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html|Nagios]] A ce stade, Nagios peut se monitorer. Mais le but de la manœuvre est plus souvent de monitorer un ensemble de machines. Pour cela, Nagios communiquera avec des agents pour récupérer les informations en provenance des autres hôtes : * NRPE pour les hôtes Linux. * NSClient++ pour les hôtes Windows. ===== NRPE (Nagios Remote Plugin Executor) ===== ==== Installation sur le client ==== On commence d'abord par mettre à jour la machine : <sxh bash>apt-get update apt-get upgrade</sxh> On peut maintenant installer les paquets nécessaires : <sxh bash>apt-get install nagios-nrpe-server nagios-plugins</sxh> Une fois les paquets installés, il faut autoriser NRPE à dialoguer avec le serveur Nagios. On commence par éditer le fichier ''/etc/nagios/nrpe.cfg'', dans lequel on modifiera la ligne ''allowed_hosts=127.0.0.1'' en y ajoutant l'adresse du ou des serveurs Nagios. Par exemple ''allowed_hosts=127.0.0.1,192.168.1.200,10.10.10.250''. On oublie pas bien sûr de redémarrer le service pour prendre en compte les modifications <sxh bash>systemctl restart nagios-nrpe-server.service</sxh> Il faut aussi penser à autoriser les flux à travers le pare-feu. Nagios et NRPE communique sur le port 5666, il faut donc ouvrir ce port sur votre solution de sécurité. Par exemple, pour iptables, on utilisera la règle suivante : <sxh bash>iptables -A INPUT -p tcp -s adresse_ip_du_serveur_nagios --dport 5666 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT</sxh> On peut personnaliser les vérifications que pourra exécuter NRPE en ajoutant une commande dans ''/etc/nagios/nrpe.cfg'' dans dans un fichier ''.cfg'' situé dans le dossier ''/etc/nagios/nrpe.d/''. Cette commande devra avoir pour syntaxe : command[<color #ed1c24>nom</color>]=<color #22b14c>chemin</color> <color #ffc90e>argument</color> * <color #ed1c24>nom</color> : le nom de la commande telle qu'elle sera appelée par le serveur Nagios. * <color #22b14c>chemin</color> : le chemin absolu de la commande qui sera exécuté localement par NRPE. * <color #ffc90e>argument</color> : les arguments pour la commande locale. Ce qui nous donnera par exemple : command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 * Nagios va appeler la commande ''check_users''. * NRPE va exécuter localement la commande ''/usr/lib/nagios/plugins/check_users'' avec les arguments ''-w 5'' et ''-c 10''. * A la fin de l'exécution de cette commande, NRPE renverra à Nagios le résultat, soit dans notre cas, un OK si il y a moins de 5 utilisateurs connectés, un avertissement de 5 à 9 utilisateurs et un critique au delà. Une fois les commandes ajoutées, modifiées et/ou supprimées, il faut bien penser à relancer le service NRPE pour prendre en compte la nouvelle configuration. ==== Installation sur le serveur Nagios ==== De retour sur le serveur Nagios, il faut d'abord installer le plugin : <sxh bash>apt install nagios-nrpe-plugin</sxh> Puis, ajouter la commande générale dans votre fichier de définitions des commandes (''/usr/local/nagios/etc/objects/commands.cfg'' par défaut) : <sxh bash>nano /usr/local/nagios/etc/objects/commands.cfg</sxh> Code à rajouter : <sxh bash># Définition de commande pour l'utilisation de NRPE define command { command_name check_nrpe command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ }</sxh> Ainsi pour que Nagios appelle la commande ''check_users'' vu précédemment, il faudra définir un service pour un l'hôte en question du style : <sxh bash>define service { use generic-service host_name client-linux.shyrka.sys service_description Current Users check_command check_nrpe!check_users }</sxh> ===== Installation de NSClient++ pour un hôte Windows ===== ==== Installation sur le client ==== On commence par aller chercher le programme sur [[https://sourceforge.net/projects/nscplus/files/nscplus/|SourceForge]]. Actuellement la dernière version est la 0.4.1.73. Une fois téléchargé, on lance l'installation et on clique sur ''Next'': <image shape="thumbnail">{{ :linux:nagios:nagios_001.png |}}</image> On accepte les termes de la licence et on clique sur ''Next'' : <image shape="thumbnail">{{ :linux:nagios:nagios_002.png |}}</image> On choisira le mode d'installation ''Typical'' : <image shape="thumbnail">{{ :linux:nagios:nagios_003.png |}}</image> On passe à la suite en cliquant sur ''Next''. Pour des raisons de sécurité, on évitera de cocher la case ''Allow all users to write config file'' : <image shape="thumbnail">{{ :linux:nagios:nagios_004.png |}}</image> Dans la fenêtre suivante : - On indique la ou les adresses des serveurs Nagios. - On cochera tous les modules - On cliquera sur ''Next'' <image shape="thumbnail">{{ :linux:nagios:nagios_005.png |}}</image> <callout type="info" title="Sécurité" icon="true">On a aussi la possibilité d'indiquer un mot de passe pour permettre l'accès au service. Je n'utilise pas cette option car cela implique que le mot de passe sera indiqué en clair dans les commandes qui seront déclarées sur le serveur Nagios. Je préfère placer ma sécurité dans les droits de modifications des fichiers de configurations et dans les règles de pare-feu n'authorisant l'accès au port qu'en provenance de machines spécifiques.</callout> Finalement, on peut lancer l'installation en cliquant sur ''Install'' : <image shape="thumbnail">{{ :linux:nagios:nagios_006.png |}}</image> On laisse le processus aller à son terme : <image shape="thumbnail">{{ :linux:nagios:nagios_007.png |}}</image> On finit l'installation en cliquant sur ''Finish'' : <image shape="thumbnail">{{ :linux:nagios:nagios_008.png |}}</image> Pour permettre une meilleure efficacité du service et notamment permettre certaines vérification, on va ouvrir les propriétés du service ''NSClient++ (x64)'' dans ''services.msc'' puis dans l'onglet ''Connexion'', on va cocher ''Autoriser le service à interagir avec le Bureau'' : <image shape="thumbnail">{{ :linux:nagios:nagios_009.png |}}</image> Tout comme le NRPE sous linux, NSClient++ est livrée avec des commandes locales préconfigurées. Les paramètres et les commandes de NSClient++ sont dans le fichier ''C:\Program Files\NSClient++\nsclient.ini''. Le manuel de référence est aussi disponible dans le même dossier (''C:\Program Files\NSClient++\NSClient++ Reference Manual.pdf''). Pour permettre l'ajout de scripts externes, enregistrés dans le dossier ''C:\Program Files\NSClient++\scripts'', nous allons éditer le fichier ''nsclient.ini'', ajouter (si elle n'existe pas encore) la section ''[/settings/external scripts/scripts]'' et indiquer les nouvelles commandes sous la forme : <color #ed1c24>nom</color>=<color #22b14c>chemin</color> <color #ffc90e>argument</color> * <color #ed1c24>nom</color> : le nom de la commande telle qu'elle sera appelée par le serveur Nagios. * <color #22b14c>chemin</color> : le chemin relatif (par rapport à nscp.exe, soit ''scripts\nom_du_script.extension'') de la commande qui sera exécuté localement par NSClient++. * <color #ffc90e>argument</color> : les arguments pour la commande locale. Par exemple : check_users=scripts\check-users.bat -w 5 -c 10. Pour activer toutes les commandes préconfigurées et tous les modules : <sxh powershell>"C:\Program Files\NSClient++\nscp.exe" settings --generate --add-defaults --load-all</sxh> Une fois le fichier ''nsclient.ini'' modifié, il ne faut pas oublier de redémarrer le service pour prendre en compte les modifications. ==== Paramétrage sur le serveur Nagios ==== Pour bénéficier de la commande ''check_nt'', il nous faut installer le paquet qui le contient : <sxh bash>apt-get install nagios-nrpe-server</sxh> On a plus qu'à définir les services de la même manière que pour ''check_nrpe'', par exemple : <sxh bash>define service { use generic-service host_name client-windows.shyrka.sys service_description Current Users check_command check_nt!check_users }</sxh> Bien sûr, on oublie pas de vérifier la configuration de Nagios et de redémarrer le service. ~~DISCUSSION~~ linux_nagios.txt Dernière modification : 2021/03/05 18:54de nekan