informatique:logiciels:nagios
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
informatique:logiciels:nagios [2010/01/26 09:40] – pteu | informatique:logiciels:nagios [2015/09/14 10:15] – [Exemple 1 : trafic in/out] pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag> | + | ======Nagios====== |
- | ====== | + | Nagios |
- | Nagios est un programme de supervision basé sur un scheduler, des greffons et une interface web de management. Il est couramment utilisé pour faire des PING sur des équipements, | ||
- | ===== Installation | + | ======Généralités====== |
- | Classique sous Debian/ | + | Le principe de base est simple : on configure différents plugins pour qu'ils interrogent certains équipements ; et ces plugins sont ordonnancés par le moteur Nagios. Comme tous les processus, les plugins retournent |
- | <code> | + | * un code d' |
+ | * une ligne de résultat affichée sur la sortie standard (qu'on appelle données de performance, | ||
- | Puis il faut créer un utilisateur et lui attribuer un mot de passe (si ce n'est pas déjà fait lors de l' | + | Les codes d' |
- | < | + | |
+ | |||
+ | ======Installation====== | ||
+ | |||
+ | =====sous Ubuntu (avec apt)===== | ||
+ | |||
+ | Installation classique sous Ubuntu avec résolution automatique des dépendances : | ||
+ | <code bash> | ||
+ | aptitude install nagios3 | ||
+ | </ | ||
+ | |||
+ | Puis il faut créer un utilisateur et lui attribuer un mot de passe (si ce n'est pas déjà fait lors de l' | ||
+ | < | ||
+ | htpasswd -c / | ||
New password: | New password: | ||
| | ||
| | ||
+ | </ | ||
+ | |||
+ | Tout est automatique c'est bien pour voir ce que ça donne. Mais si on veut : | ||
+ | * maitriser le logiciel | ||
+ | * profiter de la dernière version | ||
+ | * utiliser l' | ||
+ | ... alors il faut le compiler à partir des sources. | ||
+ | |||
+ | =====sous Ubuntu 9.10 (OLD)===== | ||
+ | |||
+ | Sous Ubuntu (9.10) il y a(vait) 2 problèmes avec l' | ||
+ | * problème avec le plugin **check_ssh** : en fait il n'y a pas de serveur SSH installé sous Ubuntu par défaut. Pour l' | ||
+ | * problème de droit d' | ||
+ | |||
+ | Pour ignorer le fichier qui pose ce problème de droit d' | ||
+ | <code bash> | ||
+ | sudo vi / | ||
+ | # ' | ||
+ | define command{ | ||
+ | | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Puis il faut recharger la conf dans Nagios : | ||
+ | <code bash> | ||
+ | sudo service nagios3 stop | ||
+ | * Stopping nagios3 monitoring daemon nagios3 | ||
+ | |||
+ | sudo service nagios3 start [ OK ] | ||
+ | * Starting nagios3 monitoring daemon nagios3 | ||
+ | kill: 1: No such process | ||
+ | </ | ||
+ | |||
+ | //source : https:// | ||
+ | |||
+ | |||
+ | =====Installation via les sources===== | ||
+ | |||
+ | //sous Redhat 5.4 EL// | ||
+ | |||
+ | ====Prérequis==== | ||
+ | |||
+ | * Il faut disposer d'un serveur web (Apache2 par exemple) avec PHP (5 par exemple), la librairie GD et des outils de compilation (gcc & co) : | ||
+ | <code bash> | ||
+ | yum install httpd | ||
+ | yum install gd gd-devel | ||
+ | yum install gcc glibc glibc-common | ||
+ | </ | ||
+ | |||
+ | Vérifier que le serveur web se lance bien au démarrage classique : | ||
+ | <code bash> | ||
+ | chkconfig --list | grep httpd | ||
+ | </ | ||
+ | |||
+ | Si le service n'est pas listé, l' | ||
+ | <code bash> | ||
+ | chkconfig --add httpd | ||
+ | chkconfig --list | grep httpd | ||
+ | | ||
+ | </ | ||
+ | |||
+ | S'il n'est pas chargé au démarrage, l'y ajouter (runlevels de 2 à 5 par défaut) : | ||
+ | <code bash> | ||
+ | chkconfig httpd on | ||
+ | chkconfig --list | grep httpd | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * création des utilisateurs et groupes qui seront utilisés par Nagios | ||
+ | <code bash> | ||
+ | groupadd nagios | ||
+ | groupadd nagcmd | ||
+ | useradd -g nagios -G nagcmd -c " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====Nagios core==== | ||
+ | |||
+ | La dernière version de nagios " | ||
+ | |||
+ | * téléchargement + décompression | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar -zxf nagios-3.2.1.tar.gz | ||
+ | cd nagios-3.2.1 | ||
+ | </ | ||
+ | |||
+ | * configurer les options de compilation : | ||
+ | <code bash> | ||
+ | ./configure --enable-event-broker --enable-embedded-perl --with-command-group=nagcmd | ||
+ | </ | ||
+ | * L' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | * lancer la compilation | ||
+ | <code bash> | ||
+ | make all | ||
+ | </ | ||
+ | |||
+ | * installation : ceci se fait en root | ||
+ | Ceci va copier les fichiers aux bons endroits : | ||
+ | * make install : installe les binaires, CGI et fichiers HTML | ||
+ | * make install-init : installe le script de démarrage dans / | ||
+ | * make install-commandmode : configuration du répertoire et du pipe pour les commandes externes (/ | ||
+ | * make install-config : installe les modèles de configuration par défaut dans / | ||
+ | * make install-webconf : installation du fichier de configuration d' | ||
+ | |||
+ | <code bash> | ||
+ | make install | ||
+ | make install-init | ||
+ | make install-commandmode | ||
+ | make install-config | ||
+ | make install-webconf | ||
+ | </ | ||
+ | |||
+ | * limitation de l' | ||
+ | On utilise un // | ||
+ | |||
+ | < | ||
+ | Attention, pour l' | ||
+ | </ | ||
+ | |||
+ | On ajoute l' | ||
+ | <code bash> | ||
+ | htpasswd / | ||
+ | chown nagios: | ||
+ | usermod -a -G nagios, | ||
+ | </ | ||
+ | |||
+ | * lancement de Nagios au démarrage du système | ||
+ | Configuration pour que Nagios se lance automatiquement au démarrage du système : | ||
+ | <code bash> | ||
+ | chkconfig --add nagios | ||
+ | chkconfig nagios on | ||
+ | </ | ||
+ | |||
+ | * redémarrage du serveur web pour qu'il prenne en compte sa nouvelle configuration | ||
+ | <code bash> | ||
+ | service httpd restart | ||
+ | </ | ||
+ | |||
+ | Avant d' | ||
+ | * installer les plugins "de base" (nagios-plugins) | ||
+ | * lancer le service nagios | ||
+ | |||
+ | |||
+ | ====Nagios-plugins==== | ||
+ | |||
+ | Ce pack contient tous les plugins de base de Nagios (d' | ||
+ | |||
+ | < | ||
+ | Les plugins dont le support n'est pas installé ne seront pas compilés ; par exemple il faut installer net-snmp et net-snmp-utils pour que le plugin check_snmp soit compilé | ||
+ | </ | ||
+ | |||
+ | Pour compilation du module check_snmp : | ||
+ | <code bash> | ||
+ | yum install net-snmp net-snmp-utils | ||
+ | </ | ||
+ | //il me semble que seul ces paquets sont nécessaires ; sinon, installer aussi net-snmp-devel net-snmp-libs net-snmp-perl// | ||
+ | |||
+ | * téléchargement et décompression | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar zxf nagios-plugins-1.4.14.tar.gz | ||
+ | cd nagios-plugins-1.4.14 | ||
+ | </ | ||
+ | |||
+ | * configuration des options de compilation | ||
+ | <code bash> | ||
+ | ./configure --with-command-group=nagcmd --enable-perl-modules | ||
+ | </ | ||
+ | Les options suivent la logique de compilation de Nagios. | ||
+ | |||
+ | * compilation | ||
+ | <code bash> | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | * installation | ||
+ | <code bash> | ||
+ | make install | ||
+ | </ | ||
+ | |||
+ | * vérification de la configuration de Nagios | ||
+ | <code bash> | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | * enfin, on lance Nagios | ||
+ | <code bash> | ||
+ | service nagios start | ||
</ | </ | ||
- | ===== Configuration ===== | + | ======Configuration====== |
- | Les fichiers principaux se trouvent dans ''/ | + | Les fichiers principaux se trouvent dans ''/ |
- | ==== Contacts et groupes de contacts ==== | + | =====Contacts et groupes de contacts===== |
On renseigne les personnes de contact (qui seront notifiées lors d'un problème) dans le fichier ''/ | On renseigne les personnes de contact (qui seront notifiées lors d'un problème) dans le fichier ''/ | ||
- | < | + | < |
define contact{ | define contact{ | ||
contact_name | contact_name | ||
Line 53: | Line 262: | ||
On définit dans ce même fichier les groupes de contact : | On définit dans ce même fichier les groupes de contact : | ||
- | < | + | < |
define contactgroup{ | define contactgroup{ | ||
contactgroup_name | contactgroup_name | ||
Line 61: | Line 270: | ||
</ | </ | ||
- | ==== Droits des contacts ==== | + | =====Droits des contacts===== |
Pour attribuer des droits à un utilisateur, | Pour attribuer des droits à un utilisateur, | ||
- | < | + | < |
+ | authorized_for_system_information=nagiosadmin, | ||
+ | </ | ||
- | ==== Périodes de temps ==== | + | =====Périodes de temps===== |
On peut consulter ou définir des périodes de temps dans le fichier ''/ | On peut consulter ou définir des périodes de temps dans le fichier ''/ | ||
- | < | + | < |
define timeperiod{ | define timeperiod{ | ||
timeperiod_name 24x7 | timeperiod_name 24x7 | ||
Line 83: | Line 294: | ||
</ | </ | ||
- | ==== Déclaration d'un host ==== | + | =====Déclaration d'un host===== |
Ça se passe dans le fichier **/ | Ça se passe dans le fichier **/ | ||
- | < | + | < |
+ | define host{ | ||
use | use | ||
host_name | host_name | ||
Line 96: | Line 308: | ||
Cet host utilise le template generic-host qui définit tous les paramètres nécessaires par défaut. On peut surcharger l' | Cet host utilise le template generic-host qui définit tous les paramètres nécessaires par défaut. On peut surcharger l' | ||
- | ==== Création de hostgroup ==== | + | =====Création de hostgroup===== |
On doit mettre chaque host dans un hostgroup, défini dans le fichier **/ | On doit mettre chaque host dans un hostgroup, défini dans le fichier **/ | ||
- | < | + | < |
+ | define hostgroup { | ||
hostgroup_name | hostgroup_name | ||
alias | alias | ||
Line 107: | Line 320: | ||
</ | </ | ||
- | ==== Création d'un service ==== | + | =====Création d'un service===== |
Ils sont déclarés dans le fichier **/ | Ils sont déclarés dans le fichier **/ | ||
- | < | + | < |
+ | define service { | ||
hostgroup_name | hostgroup_name | ||
service_description | service_description | ||
Line 128: | Line 342: | ||
* '' | * '' | ||
- | ===== Vérifications ===== | + | =====Vérifications===== |
Pour vérifier la validité de la configuration de Nagios sans relancer le démon : | Pour vérifier la validité de la configuration de Nagios sans relancer le démon : | ||
- | < | + | < |
+ | nagios3 -v / | ||
+ | </ | ||
//(très utile quand on travaille sur de la prod !)// | //(très utile quand on travaille sur de la prod !)// | ||
- | =====Problèmes et solutions===== | + | ======Installation de Nagvis====== |
- | ====Installation Ubuntu par défaut==== | + | Nagvis est un addon pour Nagios qui permet d' |
+ | Il nécessite [[http:// | ||
- | Sous Ubuntu il y a 2 problèmes avec l' | ||
- | * problème avec le plugin **check_ssh** : en fait il n'y a pas de serveur SSH installé sous Ubuntu par défaut. Pour l' | ||
- | * * problème de droit d' | ||
- | Pour ignorer | + | =====MySQL===== |
- | < | + | |
- | sudo vi /etc/ | + | MySQL est un prérequis de notre installation de NDOUtils. |
- | # 'check_all_disks' command | + | |
+ | <code bash> | ||
+ | # Installation du serveur, du client des librairies de développement. | ||
+ | yum install mysql-server mysql-devel | ||
+ | |||
+ | # Lancement du service | ||
+ | service mysqld start | ||
+ | |||
+ | # Assistant de configuration (mot de passe root, etc) | ||
+ | / | ||
+ | |||
+ | # Lancement automatique du serveur MySQL au démarrage | ||
+ | chkconfig mysqld on | ||
+ | chkconfig --list | grep sql | ||
+ | | ||
+ | </ | ||
+ | |||
+ | =====NDOUtils===== | ||
+ | // | ||
+ | |||
+ | NDOUtils est un addon qui récupère les états, la configuration, | ||
+ | |||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar zxf ndoutils-1.4b9.tar.gz | ||
+ | cd ndoutils-1.4b9 | ||
+ | ./configure --disable-pgsql | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Configuration de la base de donnée : | ||
+ | Se connecter avec | ||
+ | <code bash> | ||
+ | mysql -u root -p | ||
+ | |||
+ | # créer l' | ||
+ | mysqladmin -u root -p create ndoutils | ||
+ | mysql -u root -p mysql | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Création de la structure de la base avec le script fourni : | ||
+ | <code bash> | ||
+ | cd db/ | ||
+ | ./installdb -u ndouser -p ndopassword -h localhost -d ndoutils | ||
+ | DBD:: | ||
+ | ** Creating tables for version 1.4b9 | ||
+ | Using mysql.sql for installation... | ||
+ | ** Updating table nagios_dbversion | ||
+ | Done! | ||
+ | </ | ||
+ | J' | ||
+ | |||
+ | Installation du module : | ||
+ | <code bash> | ||
+ | # binaires | ||
+ | cp src/ | ||
+ | cp src/ | ||
+ | chown nagios: | ||
+ | chmod 774 / | ||
+ | |||
+ | # fichiers de config | ||
+ | cp config/ | ||
+ | cp config/ | ||
+ | chown nagios: | ||
+ | chmod 660 / | ||
+ | |||
+ | # paramétrage du fichier de config | ||
+ | vi / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # ajout du broker dans le fichier de conf de nagios : | ||
+ | vi / | ||
+ | | ||
+ | | ||
+ | |||
+ | # création du script de démarrage | ||
+ | cp vi /etc/rc.d/ | ||
+ | cp daemon-init / | ||
+ | chmod 755 / | ||
+ | chkconfig --add ndo2db | ||
+ | # attention le démon ndo2db doit être démarré avant nagios (modifier sa priorité le cas échéant) | ||
+ | # exemple pour le runlevel 3 : j'ai du passer la priorité de ndo2db à 98 | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # lancer le service NDOUtils et redémarrer nagios | ||
+ | service ndo2db start | ||
+ | service nagios restart | ||
+ | |||
+ | # vérification de bon fonctionnement : les logs de Nagios | ||
+ | tail -f / | ||
+ | </ | ||
+ | |||
+ | =====Graphviz===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | # ajout du repository yum | ||
+ | wget http:// | ||
+ | mv graphviz-rhel.repo / | ||
+ | |||
+ | # vérification de bonne pirse en compte par yum | ||
+ | yum list available ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # Installation des paquets idoines | ||
+ | yum install graphviz.i386 graphviz-gd.i386 graphviz-perl.i386 graphviz-doc.i386 graphviz-graphs.i386 | ||
+ | |||
+ | # oui, il y a pas mal de dépendances : | ||
+ | ==================================================================================================== | ||
+ | | ||
+ | ==================================================================================================== | ||
+ | Installing: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Installing for dependencies: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Transaction Summary | ||
+ | ==================================================================================================== | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Nagvis===== | ||
+ | |||
+ | Nagvis est un scripts PHP qui récupère les états Nagios pour générer une carte interactive. | ||
+ | |||
+ | Paquets à installer : | ||
+ | <code bash> | ||
+ | yum install php-gd php-mbstring php-xml php-mysql | ||
+ | </ | ||
+ | |||
+ | Redémarrage du serveur HTTP pour prise en compte des paquets PHP | ||
+ | <code bash> | ||
+ | service httpd restart | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar zxf nagvis-1.4.7.tar.gz | ||
+ | cd nagvis-1.4.7 | ||
+ | |||
+ | # lancer l' | ||
+ | ./ | ||
+ | [..] | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | Summary | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | NagVis home will be: / | ||
+ | | Owner of NagVis files will be: apache | ||
+ | | Group of NagVis files will be: apache | ||
+ | | Path to Apache config dir is: / | ||
+ | | | | ||
+ | | Installation mode: | ||
+ | | | | ||
+ | | Do you really want to continue? [y]: | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | Starting installation | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | Creating directory / | ||
+ | | Copying files to / | ||
+ | | Creating main configuration file... | ||
+ | | | | ||
+ | | | | ||
+ | | | | ||
+ | +--- Setting permissions... ---------------------------------------------------+ | ||
+ | | / | ||
+ | | / | ||
+ | | / | ||
+ | | | | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | Installation complete | ||
+ | | | | ||
+ | | You can safely remove this source directory. | ||
+ | | | | ||
+ | | What to do next? | | ||
+ | | - Read the documentation | ||
+ | | - Maybe you want to edit the main configuration file? | | ||
+ | | Its location is: / | ||
+ | | - Configure NagVis via browser | ||
+ | | < | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | |||
+ | # Prise en compte de la base SQL | ||
+ | vi / | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Les images dans ''/ | ||
+ | |||
+ | |||
+ | ====Exemple de configuration==== | ||
+ | |||
+ | ===Map=== | ||
+ | FIXME : template, service, line, etc... | ||
+ | |||
+ | < | ||
+ | Prendre garde de bien laisser un espace entre le '' | ||
+ | </ | ||
+ | |||
+ | Pour désactiver l' | ||
+ | <code bash> | ||
+ | < | ||
+ | # desactiver l' | ||
+ | | ||
+ | Allow from all | ||
+ | |||
+ | # forcer un nom d' | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Pour simplifier l'URL l' | ||
+ | <code bash> | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ======Installation | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Son fonctionnement est simple : le serveur distant fait tourner le démon NRPE qui écoute sur le port tcp/5666 (par défaut). Le serveur nagios émet une requête vers ce serveur distant grâce au plugin **check_nrpe** ; il lui demande d'exécuter un plugin (que le serveur distant a d'installer en local, d'où la nécessité d' | ||
+ | |||
+ | =====Sur le serveur Nagios===== | ||
+ | |||
+ | ====Prérequis==== | ||
+ | NRPE utilise par défaut SSL pour échanger les données ; pour le compiler on doit installer le support SSL : | ||
+ | <code bash> | ||
+ | yum install openssl openssl-devel | ||
+ | </ | ||
+ | |||
+ | ====Compilation et installation==== | ||
+ | L'installation est classique : téléchargement des sources, décompression, | ||
+ | < | ||
+ | wget http:// | ||
+ | tar zxf nrpe-2.12.tar.gz | ||
+ | cd nrpe-2.12 | ||
+ | ./ | ||
+ | make all | ||
+ | make install | ||
+ | </ | ||
+ | |||
+ | Normalement on obtient le nouveau plugin : **check_nrpe** | ||
+ | <code bash> | ||
+ | ll / | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====Vérification==== | ||
+ | Le protocole NRPE utilise par défaut le port tcp/5666 qu'il faudra donc ouvrir sur les serveurs et les éventuels pare-feux intermédiaires. | ||
+ | <code bash> | ||
+ | serveur nagios, port tcp>1023 -----> serveur distant, port tcp/5666 | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====Sur le serveur distant===== | ||
+ | |||
+ | (Pour les prérequis, voir partie précédente : //sur le serveur nagios//) | ||
+ | |||
+ | Si l' | ||
+ | <code bash> | ||
+ | groupadd nagios | ||
+ | useradd -g nagios nagios | ||
+ | </ | ||
+ | |||
+ | ====Installation des nagios-plugins==== | ||
+ | |||
+ | Installer les nagios-plugins qui seront lancés sur le serveur distant (cf partie plus haut). | ||
+ | |||
+ | ====Compilation et installation==== | ||
+ | Même chose que sur le serveur nagios : | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar zxf nrpe-2.12.tar.gz | ||
+ | cd nrpe-2.12 | ||
+ | ./ | ||
+ | make all | ||
+ | make install | ||
+ | </ | ||
+ | |||
+ | ====Configuration==== | ||
+ | Comme pour le serveur nagios, on s' | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | cp sample-config/nrpe.cfg / | ||
+ | </ | ||
+ | |||
+ | Configuration du contrôle d' | ||
+ | <code bash> | ||
+ | vi nrpe.cfg | ||
+ | | ||
+ | </ | ||
+ | |||
+ | On remarque au passage que le fichier contient certains services pré-configurés : | ||
+ | <code bash> | ||
+ | # The following examples use hardcoded command arguments... | ||
+ | |||
+ | command[check_users]=/ | ||
+ | command[check_load]=/ | ||
+ | command[check_hda1]=/ | ||
+ | command[check_zombie_procs]=/ | ||
+ | command[check_total_procs]=/ | ||
+ | </ | ||
+ | |||
+ | Ajout au démarrage de la machine : | ||
+ | <code bash> | ||
+ | cp init-script / | ||
+ | chmod 755 / | ||
+ | chkconfig --add nrpe | ||
+ | </ | ||
+ | |||
+ | Pour désactiver le SSL, modifier la ligne suivante en rajoutant l'option | ||
+ | <code bash> | ||
+ | echo -n " | ||
+ | daemon $NrpeBin -c $NrpeCfg -d -n | ||
+ | </ | ||
+ | |||
+ | Lancement du démon : | ||
+ | <code bash> | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Pour information, | ||
+ | Explication des paramètres : | ||
+ | * -c < | ||
+ | * -d : lancer en temps que démon autonome (n' | ||
+ | * -n : ne pas utiliser la couche SSL | ||
+ | |||
+ | |||
+ | =====Configuration===== | ||
+ | |||
+ | Pour vérifier la connectivité NRPE entre les 2 serveurs, lancer sur le serveur nagios : | ||
+ | <code bash> | ||
+ | / | ||
+ | NRPE v2.12 | ||
+ | </ | ||
+ | |||
+ | La syntaxe pour appeler un plugin est la même, en ajoutant **-c < | ||
+ | |||
+ | Bien ; maintenant il faut créer le service associé ! Je vous laisse placer les lignes suivantes dans les fichiers de conf correspondants à votre installation (command.cfg, services.cfg et hosts.cfg par exemple) | ||
+ | <code bash> | ||
+ | # -n = pas de SSL (le demon doit etre lance avec la meme option | ||
+ | # -H <IP> = adresse IP du serveur distant | ||
+ | # -c < | ||
define command{ | define command{ | ||
- | command_name | + | |
- | #ancienne ligne | + | command_line |
- | #command_line | + | } |
- | | + | |
- | command_line | + | # check_users sera passe en argument a l' |
- | | + | # (check_nrpe_no_ssl declare ci-dessus), en tant que $ARG1$ |
+ | define service{ | ||
+ | use | ||
+ | service_description | ||
+ | host_name | ||
+ | check_command | ||
+ | } | ||
+ | |||
+ | # on declare ce service sur l'objet serveur distant | ||
+ | # son adresse sera envoyee automatiquement via la variable | ||
+ | define host{ | ||
+ | use linux-server | ||
+ | host_name | ||
+ | alias | ||
+ | address | ||
+ | } | ||
</ | </ | ||
- | Puis il faut recharger la conf dans Nagios : | ||
- | < | ||
- | sudo service nagios3 stop | ||
- | * Stopping nagios3 monitoring daemon nagios3 | ||
- | sudo service nagios3 | + | ======Ajout de plugins====== |
- | * Starting nagios3 monitoring daemon nagios3 | + | |
- | kill: 1: No such process | + | Les plugins sont des programmes/ |
+ | |||
+ | =====Check_multi===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Par exemple, si on veut tester l' | ||
+ | |||
+ | |||
+ | ====Compilation==== | ||
+ | <note important> | ||
+ | Il est conseillé (par la doc officielle) de changer les buffers MAX_PLUGIN_OUTPUT_LENGTH et MAX_INPUT_BUFFER ; ceci dit je n'en ai pas vu l' | ||
+ | </ | ||
+ | |||
+ | Dans le modop suivant j' | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | tar zxf check_multi-0.20.current.tgz | ||
+ | cd check_multi-0.20 | ||
+ | ./ | ||
+ | | ||
+ | --- check_multi configure summary (SVN : 272 $) | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | --- Directories | ||
+ | | ||
+ | | ||
+ | Exec ${exec_prefix} | ||
+ | | ||
+ | CGI directory (sbin) | ||
+ | HTML directory (dataroot) ${prefix}/ | ||
+ | | ||
+ | | ||
+ | Temp dir permissions | ||
+ | |||
+ | --- System options | ||
+ | | ||
+ | | ||
+ | Child timeout (small t) 10 | ||
+ | | ||
+ | | ||
+ | RC if no checks defined | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | --- Output options | ||
+ | | ||
+ | Name / Label '' | ||
+ | | ||
+ | HTML target frame | ||
+ | Child checks indented? | ||
+ | Ascii indentation char ' ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | PNP chart with mouseover | ||
+ | |||
+ | --- Links | ||
+ | | ||
+ | | ||
+ | notes URL '' | ||
+ | | ||
+ | |||
+ | --- Advanced Options | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | *** Next step: type 'make all'. *** | ||
+ | |||
+ | |||
+ | make all | ||
+ | make test | ||
+ | [..] | ||
+ | not ok 2 - output correct | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # [ 1] procs PROCS OK: 107 processes|check_multi:: | ||
+ | # | ||
+ | | ||
+ | # Looks like you failed 11 tests of 22. | ||
+ | | ||
+ | | ||
+ | make: *** [test] Error 2 | ||
</ | </ | ||
- | //source | + | Le '' |
+ | |||
+ | Comme j' | ||
+ | <code bash> | ||
+ | make test-statusdat | ||
+ | cd ./plugins/t && make -e test-statusdat | ||
+ | / | ||
+ | | ||
+ | ok 1 - check_multi skips unknown service in status.dat - RC3 - passed | ||
+ | ok 2 - output correct - passed | ||
+ | ok 3 - check_multi finds numerous services in status.dat - RC3 - passed | ||
+ | ok 4 - services output correct - passed | ||
+ | ok 5 - check_multi finds numerous hosts in status.dat - RC1 - passed | ||
+ | ok 6 - hosts output correct - passed | ||
+ | </ | ||
+ | |||
+ | Le plugin fonctionne tout de même, alors on poursuit. | ||
+ | |||
+ | ====Installation==== | ||
+ | |||
+ | <code bash> | ||
+ | make install | ||
+ | make install-config | ||
+ | </ | ||
+ | Le plugin s' | ||
+ | |||
+ | ====Configuration==== | ||
+ | |||
+ | Le concept est le suivant | ||
+ | * les état nagios à récupérer (directive **statusdat**) ou les commandes à lancer (directive **command**) | ||
+ | * l' | ||
+ | Ce fichier sera appelé par un service déclaré dans Nagios, sous la forme : '' | ||
+ | |||
+ | ===Création de http.cmd=== | ||
+ | Les états de Nagios sont récupérés via le fichier ''< | ||
+ | |||
+ | Pour coder le tableau de décision de l' | ||
+ | * tant qu'un des 2 serveurs est OK, le service est OK | ||
+ | * si les 2 serveurs sont CRITICAL le service est CRITICAL | ||
+ | * si les 2 serveurs sont WARNING ou pire (un WARNING et un CRITICAL) le service est WARNING | ||
+ | |||
+ | | | ||
+ | | | ||
+ | ^ serveur 2 ^ OK | OK | OK | OK | | ||
+ | ^ ::: ^ warning | ||
+ | ^ ::: ^ critical | OK | warning | critical | | ||
+ | |||
+ | Les états peuvent être écris en toute lettre ou avec leur code retour Nagios (OK=0 ; WARNING=1 ; CRITICAL=2 ; UNKNOWN=3 et plus). | ||
+ | |||
+ | <code bash> | ||
+ | # format : statusdat [ <tag> ] = < | ||
+ | # ou <tag> est un identifiant local | ||
+ | # < | ||
+ | statusdat [ serveur1 ] = www-princi: | ||
+ | statusdat [ serveur2 ] = www-secour: | ||
+ | |||
+ | # format : state [ < | ||
+ | # 2 possibilités pour coder le retour en fonction de ces états : | ||
+ | # - en testant chaque retour de statusdat/ | ||
+ | # - en utilisant la directive COUNT pour compter le nombre d' | ||
+ | state [ OK ] = ( serveur1_www-princi_check-http == OK || serveur2_www-secour_check-http == OK ) | ||
+ | state [ WARNING | ||
+ | state [ CRITICAL ] = COUNT(CRITICAL) == 2 | ||
+ | </ | ||
+ | |||
+ | On peut utiliser des commandes : par exemple on peut re-checker l' | ||
+ | <code bash> | ||
+ | # format : command [ <tag> ] = <plugin command line> | ||
+ | command [ serveur1 ] = check_http -H www-princi | ||
+ | command [ serveur2 ] = check_http -H www-secour | ||
+ | |||
+ | # on récupère l'etat des commandes avec $< | ||
+ | state [ OK ] = ( $serveur1$ == OK || $serveur2$ == OK ) | ||
+ | state [ WARNING | ||
+ | state [ CRITICAL ] = COUNT(CRITICAL) == 2 | ||
+ | </ | ||
+ | |||
+ | * Une commande n'est pas nécessairement un plugin Nagios ; on peut utiliser n' | ||
+ | * on peut utiliser les macros Nagios avec les commandes ($HOSTNAME$, | ||
+ | |||
+ | ===Création du service Nagios=== | ||
+ | |||
+ | Dans la conf de Nagios : | ||
+ | <code bash> | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | |||
+ | define service{ | ||
+ | use | ||
+ | host_name | ||
+ | service_description | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | Il faut ensuite re démarrer Nagios pour prendre en compte ces 2 nouveau objets. | ||
+ | |||
+ | Pour aller plus loin je vous recommande fortement le wiki officiel : http:// | ||
+ | |||
+ | ====Passage de paramètres==== | ||
+ | * on ne peut passer de paramètres qu' | ||
+ | |||
+ | Exemple : déclaration dans nagios | ||
+ | <code bash> | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | define service{ | ||
+ | use | ||
+ | host_name | ||
+ | service_description | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | http.cmd | ||
+ | <code bash> | ||
+ | # $ARG1$ = www | ||
+ | command [ serveur1 ] = check_http -H $ARG1$-princi | ||
+ | command [ serveur2 ] = check_http -H $ARG1$-secour | ||
+ | |||
+ | # on récupère l'etat des commandes avec $< | ||
+ | state [ OK ] = ( $serveur1$ == OK || $serveur2$ == OK ) | ||
+ | state [ WARNING | ||
+ | state [ CRITICAL ] = COUNT(CRITICAL) == 2 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ======Installation de PNP4Nagios====== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Les perfdata sont les données qui suivent le retour d'une commande de check ; par exemple un check_host_alive retourne : | ||
+ | <code bash> | ||
+ | PING OK - Paquets perdus = 0%, RTA = 22.87 ms | ||
+ | rta=22.872999ms; | ||
+ | </code> | ||
+ | |||
+ | Je vais décrire ici l' | ||
+ | |||
+ | * Installation du paquet | ||
+ | <code bash> | ||
+ | aptitude install pnp4nagios | ||
+ | |||
+ | # avec, au passage : | ||
+ | 0 paquets mis à jour, 100 nouvellement installés, 0 à enlever et 0 non mis à jour. | ||
+ | Il est nécessaire de télécharger 32,2 Mo d' | ||
+ | Les paquets suivants ont des dépendances non satisfaites : | ||
+ | | ||
+ | Est en conflit avec: libgd2-noxpm mais 2.0.36~rc1~dfsg-6.1 est installé. | ||
+ | | ||
+ | Est en conflit avec: libgd2-xpm mais 2.0.36~rc1~dfsg-6.1 doit être installé. | ||
+ | Les actions suivantes permettront de résoudre ces dépendances : | ||
+ | |||
+ | | ||
+ | 1) | ||
+ | |||
+ | Accepter cette solution ? [Y/n/q/?] y | ||
+ | </ | ||
+ | |||
+ | * Choisir le mode de fonctionnement de pnp4nagios (cf http:// | ||
+ | |||
+ | * Configurer Nagios pour qu'il fasse appel à PNP4Nagios : | ||
+ | <code bash> | ||
+ | vi / | ||
+ | |||
+ | # activer le traitement des perfdata | ||
+ | process_performance_data=1 | ||
+ | |||
+ | # décommenter les lignes suivantes | ||
+ | host_perfdata_command=process-host-perfdata | ||
+ | service_perfdata_command=process-service-perfdata | ||
+ | </ | ||
+ | |||
+ | Préciser les commandes de perfdata (adaptez les chemins à vos environnements !) : pour notre installation il faut remplacer les '' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | |||
+ | define command { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | define command { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Relancer Nagios, patienter 5 min, et jeter un œil ici : http:// | ||
+ | |||
+ | * Pour avoir des liens cliquables directement dans l' | ||
+ | * Donner accès à Nagios au fichier .ssi en créant un lien symbolique : | ||
+ | <code bash> | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | * Créer les templates suivants (dans, par exemple, / | ||
+ | <code bash> | ||
+ | define host { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | define service { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Si comme moi vous le voulez pour tous (hosts et services), vous pouvez surcharger directement les templates //generic// de vos hosts / services en ajoutant : | ||
+ | <code bash> | ||
+ | vi conf.d/ | ||
+ | use host-pnp | ||
+ | |||
+ | vi conf.d/ | ||
+ | use srv-pnp | ||
+ | </ | ||
+ | |||
+ | * Pour que les graphes s' | ||
+ | <code bash> | ||
+ | vi cgi.cfg | ||
+ | action_url_target=main | ||
+ | </ | ||
+ | |||
+ | Enfin, relancer nagios : | ||
+ | <code bash> | ||
+ | service nagios3 restart | ||
+ | </ | ||
+ | |||
+ | * Si on obtient des erreurs de fonctionnement ou si les graphiques ne sont pas générés, il existe un script de diagnostique qu'on peut télécharger et lancer (en root et avec les bons chemins d' | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | perl verify_pnp_config --mode=sync --config=/ | ||
+ | </ | ||
+ | |||
+ | =====Certains plugins ne marchent pas !===== | ||
+ | |||
+ | Effectivement certains plugins ne fonctionnent pas avec PNP4Nagios car ils ne génèrent pas de perfdata. Pour rappel, les perfdatas sont affichés par le plugin juste après le status, séparé par un '' | ||
+ | <code bash> | ||
+ | check_ping -H 127.0.0.1 -w30,50% -c 50,60% | ||
+ | PING OK - Paquets perdus = 0%, RTA = 0.07 ms|rta=0.074000ms; | ||
+ | </ | ||
+ | |||
+ | * Status = '' | ||
+ | * Perfdata = '' | ||
+ | |||
+ | C'est notamment le cas du service "Total processes", | ||
+ | <code bash> | ||
+ | / | ||
+ | PROCS OK: 3 processus avec args ' | ||
+ | </ | ||
+ | |||
+ | C'est dommage parce qu'il fait le taff mais sa sortie est juste mal formattée, il ne lui manque que : '' | ||
+ | |||
+ | Pour corriger cela, on va utiliser le [[http:// | ||
+ | <code bash> | ||
+ | # | ||
+ | # ersatz de cmde pour checker le nb de processes et afficher les perfdata | ||
+ | |||
+ | LINE=`/ | ||
+ | RC=$? | ||
+ | COUNT=`echo $LINE | awk ' | ||
+ | PROCS=`expr $COUNT - 1` | ||
+ | LINE=`echo $LINE | sed "s/: $COUNT /: $PROCS /"` | ||
+ | echo $LINE \| procs=$PROCS | ||
+ | exit $RC | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | on notera que j'ai adapté le chemin du script check_procs puisque sous Debian ils sont dans ''/ | ||
+ | </ | ||
+ | |||
+ | On dépose donc ces lignes dans un nouveau fichier, par exemple ''/ | ||
+ | <code bash> | ||
+ | chmod 755 / | ||
+ | </ | ||
+ | |||
+ | Puis, on définit une nouvelle commande dans '' | ||
+ | <code bash> | ||
+ | # contournement de check_procs pour avoir des perfdatas | ||
+ | # cf http:// | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Enfin, on remplace le service dans '' | ||
+ | <code bash> | ||
+ | define service{ | ||
+ | use | ||
+ | host_name | ||
+ | service_description | ||
+ | # | ||
+ | check_command | ||
+ | </ | ||
+ | |||
+ | (Et on relance Nagios après avoir vérifier les éventuelles erreurs avec '' | ||
+ | |||
+ | =====Créer ses templates PNP===== | ||
+ | |||
+ | Un template (au sens PNP4nagios du terme) est un modèle de graphique adapté aux valeurs des données de performance. Il est intéressant d' | ||
+ | |||
+ | On peut choisir les couleurs, le type de graphique (courbe, aire, ligne), sa hauteur, la plage de données utilisée (1h, 12h, 1 semaine), etc... ça peut devenir des trucs très sympa : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Pour chaque service disposant de perfdata et sur lequel PNP4nagios est activé, le plugin va rechercher son template éponyme avec l' | ||
+ | <code bash> | ||
+ | # avec le paquet pnp4nagios sous debian 7 : | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # avec une installation à partir des sources, ils seront plutôt ici : | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Par exemple pour un service " | ||
+ | |||
+ | ====Exemple 1 : trafic in/ | ||
+ | |||
+ | Voici un exemple de " | ||
+ | * création des objets dans Nagios : | ||
+ | <code bash> | ||
+ | vi / | ||
+ | |||
+ | # déclaration du NAS, on utilise bien le template nagios " | ||
+ | define host{ | ||
+ | use | ||
+ | host_name | ||
+ | address | ||
+ | hostgroups | ||
+ | } | ||
+ | |||
+ | # dans le service on ne précise que le nom de communauté, | ||
+ | # le service est appliqué au host grâce au groupe " | ||
+ | define service{ | ||
+ | use | ||
+ | hostgroup_name | ||
+ | service_description traffic eth0 | ||
+ | check_command | ||
+ | } | ||
+ | |||
+ | # trafic reseau | ||
+ | # -o est suivi par les 2 OIDs correspondant au trafic in et out de l' | ||
+ | # -l permet d' | ||
+ | # -u permet de préciser l' | ||
+ | # -P précise la version de SNMP | ||
+ | # -C spécifie la communauté SNMP | ||
+ | # --rate induqe qu'il s'agit d'un compteur qui nécessite donc un calcul \ | ||
+ | # par rapport à la précédente valeur (voir plus bas pour l' | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | -u bytes,bytes --rate -o .1.3.6.1.2.1.31.1.1.1.6.3, | ||
+ | } | ||
+ | </ | ||
+ | NB : le plugin **check_snmp** avec l' | ||
+ | * sous Debian j'ai eu ''/ | ||
+ | * sous centOS c'est ''/ | ||
+ | * ça peut aussi être ''/ | ||
+ | Pour ne pas avoir d' | ||
+ | <code bash> | ||
+ | chmod 755 /usr/var && mkdir / | ||
+ | </ | ||
+ | |||
+ | * On créer ensuite le template, qui permet d' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | <?php | ||
+ | # | ||
+ | # Copyright (c) 2006-2010 Joerg Linge (http:// | ||
+ | # Plugin: check_iftraffic.pl (COUNTER) | ||
+ | # adaptation pour traffic syno | ||
+ | |||
+ | $opt[1] | ||
+ | # | ||
+ | $def[1] | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | |||
+ | # pour afficher le dernier check sur le graphe | ||
+ | if($this-> | ||
+ | $def[1] .= " | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====Exemple 2 : courbe CPU==== | ||
+ | |||
+ | Autre exemple pour grapher l' | ||
+ | |||
+ | Conf nagios, en vrac : | ||
+ | <code bash> | ||
+ | # paramètres de check_snmp : | ||
+ | # -P2c pour préciser le version de SNMP (2c) | ||
+ | # -t5 pour préciser le timeout (en secondes) de la commande | ||
+ | # -l < | ||
+ | # et les classiques mandataires : -C < | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | |||
+ | # le service est rattaché au groupe fortigate_v4 | ||
+ | define service { | ||
+ | name check-snmp-forti-cpu-v4 | ||
+ | hostgroup_name | ||
+ | use | ||
+ | service_description | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | On réutilise le template par défaut : | ||
+ | <code bash> | ||
+ | <?php | ||
+ | # template CPU derive du default template : | ||
+ | # Copyright (c) 2006-2010 Joerg Linge (http:// | ||
+ | # | ||
+ | # Define some colors .. | ||
+ | # | ||
+ | $_WARNRULE = '# | ||
+ | $_CRITRULE = '# | ||
+ | $_AREA | ||
+ | |||
+ | # couleurs de la courbe | ||
+ | $_LINE | ||
+ | $GRAD_INF | ||
+ | $GRAD_SUP | ||
+ | |||
+ | # | ||
+ | # Initial Logic ... | ||
+ | # | ||
+ | |||
+ | foreach ($this-> | ||
+ | |||
+ | $maximum | ||
+ | $minimum | ||
+ | $critical = ""; | ||
+ | $crit_min = ""; | ||
+ | $crit_max = ""; | ||
+ | $warning | ||
+ | $warn_max = ""; | ||
+ | $warn_min = ""; | ||
+ | $vlabel | ||
+ | $lower | ||
+ | $upper | ||
+ | |||
+ | if ($VAL[' | ||
+ | $warning = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $warn_max = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $warn_min = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $critical = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $crit_max = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $crit_min = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $lower = " --lower=" | ||
+ | $minimum = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $maximum = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $vlabel = " | ||
+ | $upper = " --upper=101 "; | ||
+ | $lower = " --lower=0 "; | ||
+ | } | ||
+ | else { | ||
+ | $vlabel = $VAL[' | ||
+ | } | ||
+ | |||
+ | $opt[$KEY] = ' | ||
+ | $ds_name[$KEY] = $VAL[' | ||
+ | $def[$KEY] | ||
+ | $def[$KEY] .= rrd:: | ||
+ | $def[$KEY] .= rrd:: | ||
+ | $def[$KEY] .= rrd:: | ||
+ | if ($warning != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($warn_min != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($warn_max != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($critical != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($crit_min != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($crit_max != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Résultat : | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | ======Tips====== | ||
+ | |||
+ | =====Activer les commandes externes===== | ||
+ | |||
+ | Pour utiliser certaines fonctionnalités, | ||
+ | |||
+ | Pour cela : | ||
+ | <code bash> | ||
+ | # arrêter Apache et Nagios : | ||
+ | service apache2 stop | ||
+ | service nagios3 stop | ||
+ | |||
+ | # activer les commandes externes dans la configuration de Nagios : | ||
+ | vi nagios.cfg | ||
+ | |||
+ | check_external_commands=1 | ||
+ | command_check_interval=15s | ||
+ | |||
+ | # ajouter l' | ||
+ | vi / | ||
+ | |||
+ | nagios: | ||
+ | |||
+ | # le paquet Debian a des problemes de droits sur certains répertoire, | ||
+ | # - ajouter l' | ||
+ | dpkg-statoverride --update --add nagios nagios 751 / | ||
+ | # - ajouter le sticky bit au répertoire parent du pipe des commandes externes | ||
+ | dpkg-statoverride --update --add nagios www-data 2710 / | ||
+ | |||
+ | # relancer Apache et Nagios : | ||
+ | service apache2 start | ||
+ | service nagios3 start | ||
+ | </ | ||
+ | |||
+ | =====Crash de la machine===== | ||
+ | |||
+ | Lors d'un crash de la machine, malgré que le service nagios se soit relancé correctement, | ||
+ | <code bash> | ||
+ | / | ||
+ | Starting ndo2db: | ||
+ | | ||
+ | </ | ||
+ | .. solutionné en supprimant la socket : | ||
+ | <code bash> | ||
+ | rm -f / | ||
+ | |||
+ | / | ||
+ | Starting ndo2db: done. | ||
+ | </ | ||
+ | |||
+ | Le second problème venait de la base mySQL corrompue ; la solution a été de réparer la partie de la base qui remontait en erreur : | ||
+ | <code bash> | ||
+ | myisamchk --fast / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Data records: | ||
+ | | ||
+ | | ||
+ | - check file-size | ||
+ | - check record delete-chain | ||
+ | | ||
+ | | ||
+ | | ||
+ | Fix it using switch " | ||
+ | You have new mail in / | ||
+ | |||
+ | myisamchk --recover / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | - recovering (with sort) MyISAM-table '/ | ||
+ | Data records: 714030 | ||
+ | - Fixing index 1 | ||
+ | - Fixing index 2 | ||
+ | - Fixing index 3 | ||
+ | - Fixing index 4 | ||
+ | Data records: 714032 | ||
+ | |||
+ | myisamchk --fast / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | service nagios start | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | =====Upgrade de Wheezy vers Jessie===== | ||
+ | |||
+ | Depuis quelques jours (fin avril 2015) Debian 8 stable est release. Je me suis donc mis à la page et j'ai eu la stupeur de voir que mon nagios3 avait été à moitié dézingué, et que le pnp4nagios avait même disparu des paquets (à priori il n' | ||
+ | |||
+ | Voici le mode pompier pour restaurer nos courbes : | ||
+ | <code bash> | ||
+ | // prérequis | ||
+ | aptitude install rrdtool librrds-perl php5-gd | ||
+ | |||
+ | wget https:// | ||
+ | # dans mon cas c'est la version pnp4nagios-0.6.25.tar.gz | ||
+ | tar -zxvf pnp4nagios-0.6.25.tar.gz | ||
+ | cd pnp4nagios-0.6.25 | ||
+ | ./ | ||
+ | [..] | ||
+ | *** Configuration summary for pnp4nagios-0.6.25 03-01-2015 *** | ||
+ | |||
+ | General Options: | ||
+ | ------------------------- | ||
+ | Nagios user/ | ||
+ | Install directory: | ||
+ | HTML Dir: / | ||
+ | Config Dir: / | ||
+ | Location of rrdtool binary: | ||
+ | RRDs Perl Modules: | ||
+ | RRD Files stored in: / | ||
+ | process_perfdata.pl Logfile: | ||
+ | Perfdata files (NPCD) stored in: / | ||
+ | |||
+ | Web Interface Options: | ||
+ | ------------------------- | ||
+ | HTML URL: | ||
+ | Apache Config File: / | ||
+ | |||
+ | |||
+ | Review the options above for accuracy. | ||
+ | type 'make all' to compile. | ||
+ | |||
+ | make all | ||
+ | cd ./src && make | ||
+ | make[1]: Entering directory '/ | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE -o npcd npcd.c utils.o config.o logging.o -lpthread | ||
+ | gcc -fPIC -g -O2 -DHAVE_CONFIG_H -DNSCORE -o npcdmod.o npcdmod.c -shared | ||
+ | make[1]: Leaving directory '/ | ||
+ | cd ./share && make | ||
+ | make[1]: Entering directory '/ | ||
+ | make[1]: Nothing to be done for ' | ||
+ | make[1]: Leaving directory '/ | ||
+ | cd ./scripts && make | ||
+ | make[1]: Entering directory '/ | ||
+ | make[1]: Nothing to be done for ' | ||
+ | make[1]: Leaving directory '/ | ||
+ | chmod a+r ./ | ||
+ | |||
+ | *** Compile finished *** | ||
+ | |||
+ | make install | ||
+ | - This installs the main program and HTML files | ||
+ | |||
+ | make fullinstall | ||
+ | - This installs the main program, runlevel scripts, config and HTML files | ||
+ | |||
+ | Enjoy. | ||
+ | |||
+ | # on va faire simple : | ||
+ | make fullinstall | ||
+ | [..] | ||
+ | </ | ||
+ | |||
+ | Seulement voilà il faut le réintégrer au bousin, donc corriger quelques trucs : | ||
+ | * le fichier de conf d' | ||
+ | <code bash> | ||
+ | mv / | ||
+ | ln -s / | ||
+ | </ | ||
+ | NB : on aurait pu utiliser les commandes toutes faites d' | ||
+ | |||
+ | * dans ce même fichier, le chemin du fichier de mots de passe (htpasswd) n'est pas correct, il faut le corriger : | ||
+ | <code bash> | ||
+ | vi / | ||
+ | # | ||
+ | AuthUserFile / | ||
+ | </ | ||
+ | |||
+ | * dans le cadre de l' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | define command{ | ||
+ | command_name | ||
+ | # | ||
+ | command_line | ||
+ | } | ||
+ | |||
+ | define command{ | ||
+ | command_name | ||
+ | # | ||
+ | command_line | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * du au changement de path, le chemin des templates à été modifié et pnp ne retrouve plus ces petits ; il faut donc déplacer les templates persos de l' | ||
+ | <code bash> | ||
+ | mv / | ||
+ | </ | ||
+ | |||
+ | * pour une raison qui m'est inconnue, le plugin **check_snmp** (quand utilisé avec l' | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | chown nagios / | ||
+ | </ | ||
+ | |||
+ | * quand on passe la souris sur les icônes, les courbes ne s' | ||
+ | <code bash> | ||
+ | updatedb | ||
+ | locate status-header.ssi | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | // on copie donc status-header.ssi à la place du symlink " | ||
+ | rm / | ||
+ | cp / | ||
+ | chmod o+r / | ||
+ | </ | ||
+ | |||
+ | * TODO : la prochaine fois, ne pas oublier de restaurer les bases RRD pour ne pas perdre tout l' | ||
+ | |||
+ | |||
+ | =====Horodatage illisibles des logs===== | ||
+ | |||
+ | Les logs Nagios sont par défaut verbeux mais l' | ||
+ | <code bash> | ||
+ | # les logs bruts | ||
+ | tail -3 / | ||
+ | [1441261778] Auto-save of retention data completed successfully. | ||
+ | [1441265378] Auto-save of retention data completed successfully. | ||
+ | [1441268978] Auto-save of retention data completed successfully. | ||
+ | |||
+ | # après convertion | ||
+ | tail -3 / | ||
+ | [Thu Sep 3 08:29:38 2015] Auto-save of retention data completed successfully. | ||
+ | [Thu Sep 3 09:29:38 2015] Auto-save of retention data completed successfully. | ||
+ | [Thu Sep 3 10:29:38 2015] Auto-save of retention data completed successfully. | ||
+ | </code> | ||
- | ===== Liens ===== | + | ======Liens====== |
* http:// | * http:// |
informatique/logiciels/nagios.txt · Last modified: 2021/01/15 15:47 by pteu