This is an old revision of the document!
Table of Contents
supervision
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, ou tester des serveices (HTTP, SMTP) via ses greffons.
Installation
Classique sous Debian/Ubuntu :
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'installation) :
htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin New password: Re-type new password: Adding password for user nagiosadmin
Configuration
Les fichiers principaux se trouvent dans /etc/nagios3/
: nagios.cfg
et cgi.cfg
.
Contacts et groupes de contacts
On renseigne les personnes de contact (qui seront notifiées lors d'un problème) dans le fichier /etc/nagios3/conf.d/contacts_nagios2.cfg
. Exemple de déclaration :
define contact{ contact_name root alias Root service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email root@localhost }
On voit, dans l'ordre, le nom d'utilisateur, le nom complet, les périodes de notifications pour les “service” et les “host”, les options de notification, et les moyens de notification. Chaque valeur est un objet défini dans la configuration de Nagios (on retrouve par exemple les périodes de temps), alors que les options de notifications définissent le degré d'alerte.
Pour les services (service_notification_options) :
- w (Warning) : avertissement
- u (Unknown) : inconnu
- c (Critical) : critique
- r (Recovery) : retour à l'état normal (up)
Pour les machines (host_notification_options) :
- d (Down) : machine éteinte
- u (Unreachable) : machine injoignable
- r (Recovery) : retour à l'état normal (up)
On définit dans ce même fichier les groupes de contact :
define contactgroup{ contactgroup_name admins alias Nagios Administrators members root }
Droits des contacts
Pour attribuer des droits à un utilisateur, il faut éditer le fichier /etc/nagios3/cgi.cfg
et ajouter les noms d'utilisateurs après les directives idoines, séparés par des virgules ; par exemple :
authorized_for_system_information=nagiosadmin,toto
Périodes de temps
On peut consulter ou définir des périodes de temps dans le fichier /etc/nagios3/conf.d/timeperiods_nagios2.cfg
. Voici un exemple de déclaration :
define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 }
Déclaration d'un host
Ça se passe dans le fichier /etc/nagios3/conf.d/localhost_nagios2.cfg :
define host{ use generic-host host_name routeur1 alias Routeur passerelle R1 address 192.168.0.254 check_command check-host-alive }
Cet host utilise le template generic-host qui définit tous les paramètres nécessaires par défaut. On peut surcharger l'objet càd redéfinir les paramètres du template en modifiant leurs valeurs.
Création de hostgroup
On doit mettre chaque host dans un hostgroup, défini dans le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg :
define hostgroup { hostgroup_name routeurs alias Debian GNU/Linux Servers members routeur1 contact_groups admins-routeur }
Création d'un service
Ils sont déclarés dans le fichier /etc/nagios3/conf.d/service_nagios2.cfg
define service { hostgroup_name ping-servers service_description PING check_command check_ping!100.0,20%!500.0,60% use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
Ce service utilise le greffon check_ping ; en fonction du retour de ce dernier, on passe à différents niveau d'alerte :
- un temps de réponse > 100 ms ou 20% de perte et on passe à l'état WARNING
- un temps de réponse > 500 ms ou 60% de perte et on passe à l'état CRITICAL
L'intervalle de notification (notification_interval) indique si l'alerte doit être répétée si le problème perdure.
D'autres arguments sont intéressants à utiliser :
normal_check_interval 5
définit l'intervalle de check du service, en minutesmax_check_attempts 3
définit le seuil au delà duquel le service passe en HARD stateretry_check_interval 1
si le statut du service est nOK, on passe en SOFT state et on reteste le service toutes les X minutes
Vérifications
Pour vérifier la validité de la configuration de Nagios sans relancer le démon :
nagios3 -v /etc/nagios3/nagios.cfg
(très utile quand on travaille sur de la prod !)