Supervision avec Nagios

Stéphane RAULT -

Version 0.2 - Dernière mise à jour le 10 Février 2004

Version originale disponible http://www.espace-groupware.com/supervision/nagios/index.html

Chaque technologies, languages de développement et concepts apporte son lot de termes spécifiques qu'ils vous faut apprendre avant d'entrevoir la lumière.

NE VOUS DECOURAGEZ PAS, faites-vous violence et appréciez ce moment de grâce où tout devient clair.


Table des matières

Introduction :

Nagios est un logiciel qui fournit un ensemble de moyens et services pour assurer une supervision particulièrement simple, fiable, évolutive et non-propriétaire d'un parc informatique.

A quoi vous servira Nagios ? :

J'avoue que depuis qu'il surveille mon parc, je dors mieux. C'est sûrement ce que vous direz dans quelques semaines.

Vous arrivez le lundi matin au bureau, et au lieu de passer la matinée à vérifier si tous vos serveurs sont en fonctions, si le serveur de courrier n'est pas tombé, si les sauvegardes se sont bien passées, vous ouvrez votre navigateur pour accèder à l'interface Web de Super Nagios et en un coup d'oeil, vous voilà rassuré.

Ce qui vous laisse la matinée pour draguer, jouer au dernier doom, organiser des réunions ou boire un café.

En vérité, avec Nagios, vous n'auriez pas attendu le lundi matin pour prendre connaissance d'un problème, vous auriez sûrement reçu un SMS.

Quelques-unes des fonctionnalités de Nagios :

MRTG et RRDTOOL :

Un rappel : Nagios n'est pas MRTG ni RRDTOOL, il n'a pas vocation à fournir un suivi statistique et les rapports qu'il génére sont destinés à déterminer la disponibilité d'équipements et de services. Ces produits sont complémentaires même si chacun empiète un peu sur le domaine de l'autre.

Méthodologie d'apprentissage :

Chacun applique bien sûr la méthodologie qu'il lui est la mieux adaptée et je ne prétend pas fournir une méthode miracle, mais dans le domaine de l'apprentissage des technologies OpenSource, beaucoup trop de personnes se découragent et font un blocage, qui pour certains est définitif.

Quelques conseils :

Quelque soit l'étendu du parc à surveiller :

Conseil : Ne vous lancez pas dans l'inventaire du parc, il s'agit d'une phase d'apprentissage.

Erreur à ne pas faire :

Nous aurions pût nous lancer dès le départ, dans la surveillance des process, des services TCP/IP, des applicatifs comme Oracle mais il vaut mieux consolider notre architecture de base en fournissant un contrôle homogène des principaux points comme la disponibilité d'une machine, sa place disque, la saturation mémoire ou processeur.

Concepts de base

Nagios organise les machines, les contacts et les services comme des objets. Chaque objet à un nom unique et la plupart peuvent être réunis au sein de groupes logiques, permettant ainsi d'appliquer une politique pour chaque groupes.


Les Hôtes :

Un hôte (host) peut être n'importe quel équipement qui en général est joignable par une adresse IP. Ce qui inclus donc :


Les Contacts :

La finalité d'un contact est que Nagios puisse le joindre en cas d'alerte pour n'importe quel dysfonctionnement.

Conseil : Pour chaque contact, vous devrez founir une adresse email. Preférez une adresse de groupe plutôt qu'une adresse individuelle, même si le groupe ne contient qu'une seule personne.

La notion de contact a également une incidence sur la surveillance de Nagios à partir d'une interface Web. Les droits dans cette interface tiennent compte des liens entres un groupe de contacts et un équipement.

Un exemple, vous voulez que le responsable d'un site distant puisse accèder aux rapports statistiques des équipements qui ne concernent que son site et rien d'autres. Vous devrez donc rattacher ce contact au groupe(s) qu'il surveille.


Les Périodes :

Pour éviter de redéfinir à chaque besoin, des plages horaires détaillés pour chaque jour et chaque équipement ou services, Nagios fournit la notion de profil pour regrouper un ensemble de règles concernant les plages horaires.

Un premier exemple : Un contact peut recevoir des alertes par mail de 9h à 18h du lundi au vendredi. Mais de 18h01 à 08h59 la semaine et 24/24 le week-end, il faut lui envoyer un SMS

Un second exemple : Une machine ou un service est arrêté pour des raisons de maintenance le mardi entre 21h et 23h. Inutile donc de lancer des alertes, c'était prévu...


Les Commandes :

Chaque commande correspond au lancement d'un programme externe comme un PING, une requette SNMP, SQL ou LDAP, la vérification de services, etc...

Comme une commande peut être lancé avec des paramètres différents en fonction de certains équipement, il n'est pas rare de trouver la même commande plusieurs fois mais avec une syntaxe d'utilisation différente.

Remarque : Chaque commande comme tout objet dans Nagios à un nom unique. Ce nom n'est par forcément en rapport avec le nom du programme qui sera exécuté. Pour exécuter le programme PING, je peux définir une commande qui se nomme TOTO.


Les Services :

Les services sont en quelques sortes, l'aggrégation des HOTES, CONTACT, PERIODES et COMMANDES.

C'est la finalité de tous ce travail de définition et référencement avant de pouvoir utiliser Nagios.

Pour résumer, à chaque création de service, vous définissez :


Les Groupes d'hôtes :

Pour des raisons d'organisation et d'optimisation, les équipements peuvent être réunis dans des groupes

Dans mon cas, j'ai définis les groupes suivants :

J'ai ensuite placé chaque équipement dans un ou plusieurs groupes

Conseil : Evitez des noms à espaces et/ou caractères accentués, cela vous gènera lors de l'utilisation de la couche Web.


Les Groupes de contacts :

Même chose que pour les groupes d'hotes, vous organisez les contacts selon vos préférences :

Ne perdez pas de vue, qu'il s'agit le plus souvent de cibler les destinataires en fonction de chaque alertes.


L'héritage :

Il existe une notion de "Parent" très utile pour l'organisation de la surveillance du parc.

Pour comprendre et mettre en place cet héritage, il faut partir de la machine sur laquelle nagios est installé et noter le chemin parcouru pour atteindre un équipement.

Exemple :

L'interêt de cet héritage est très important. Sans l'héritage, si votre firewall tombe en panne, nagios va générer des alertes pour tous les équipements se trouvant entre lui et le serveur sur le site distant.

Chaque serveur pouvant être rattaché à plusieurs alertes (ping, smtp, snmp, etc..) en quelques minutes vous pourriez recevoir plusieurs centaines des mails ou SMS.

Nagios va donc utiliser cette notion d'héritage pour déterminer que si le firewall tombe en panne, il est inutile de générer des alertes pour tous les équipements qui se trouves derrière.

Une autre conséquence directe de l'héritage est l'organisation du schéma graphique dans l'interface Web de Nagios car vos équipements seront reliés les uns aux autres en fonction de leur emplacement physique.

Description et version des produits

Pour chaque produit, je définis :


Nagios :

Editeur Ethan Galstad
Version stable 1.2 Version installé 1.1-6

Nagios est répartit en 3 packages :

  • Nagios qui contient tous les binaires et fichiers nécessaires au fonctionnement autonome de Nagios

  • Les plugins : Contient les commandes externes utilisées pour la plupart de contrôles

  • Les extras : Contient d'autres commandes et applications externes ainsi que des packs d'images et logos pour la personnalisation de l'interface Web.

Les plugins et extras ont leur propres numéro de version qui ne suit pas forcément celui de nagios.

Nagios Plugins :

Editeur ?
Version stable 1.3.1 Version installé 1.3.1-1.9
 

Nagios Plugins Extras :

Editeur ?
Version stable 1.3.1-1.9 Version installé 1.3.1-1.9
 

Apache :

Editeur Le groupe Apache
Version stable 2.0.48 Version installé 2.0.46-25

Le célebre serveur Web qu'il est inutile de présenter va être utilisé pour accèder à Nagios en passant par un navigateur.

Préparation

Accès à l'extérieur pour le téléchargement

Normalement pendant l'installation, les seuls besoins d'accès à l'extérieur du réseau, se font sur "http" et "ftp".

Vérifiez les paramètres "proxy" de la machine et si elle n'est pas configurée ajoutez les variables http_proxy et ftp_proxy car elles sont utilisés par l'utilitaire "wget" et c'est tout ce dont nous aurons besoins.

# Pour vérifiez vos paramètres :
[root@linux /]$ echo $http_proxy
[root@linux /]$ echo $ftp_proxy

# Pour modifier vos paramètres :
[root@linux /]$ export http_proxy=http://10.10.1.10:8080
[root@linux /]$ export ftp_proxy=http://10.10.1.10:8080

# Pour tester l'accès au proxy :
[root@linux /]$ wget http://www.yahoo.fr/index.html

Fichiers que vous devez avoir sous la main :

Remarque : Vous gagnerez du temps en suivant cette procédure.

Liste des fichiers :

# CD Redhat ES v9 N°2 :
/mnt/cdrom/RedHat/RPMS/gd-1.8.4-12.i386.rpm
/mnt/cdrom/RedHat/RPMS/freetype-2.1.4-4.0.i386.rpm
/mnt/cdrom/RedHat/RPMS/libjpeg-6b-30.i386.rpm
/mnt/cdrom/RedHat/RPMS/libpng-1.2.2-16.i386.rpm
/mnt/cdrom/RedHat/RPMS/zlib-1.1.4-8.1.i386.rpm

# CD Redhat ES v9 N°3 :
/mnt/cdrom/RedHat/RPMS/httpd-2.0.46-25.ent.i386.rpm

# Téléchargement : 
wget http://dag.wieers.com/packages/nagios/nagios-1.1-6.rh90.dag.i386.rpm
wget http://dag.wieers.com/packages/perl-Crypt-DES/perl-Crypt-DES-2.03-2.dag.rh90.i386.rpm
wget http://dag.wieers.com/packages/perl-Net-SNMP/perl-Net-SNMP-4.1.0-0.dag.rh90.noarch.rpm
wget http://dag.wieers.com/packages/fping/fping-2.4-0.b2.dag.rh90.i386.rpm
wget http://dag.wieers.com/packages/nagios-plugins/nagios-plugins-1.3.1-5.dag.rh90.i386.rpm
wget http://heanet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-extras-1.3.1-1.9.i386.rpm

Installation

Introduction :

Remarque : Pour plus de confort, placez-vous dans le répertoire où vous avez copié tous les fichiers.


GD et ses dépendances :


[root@linux /]$ rpm -Uvh zlib-1.1.4-8.1.i386.rpm

[root@linux /]$ rpm -Uvh libpng-1.2.2-16.i386.rpm

[root@linux /]$ rpm -Uvh libjpeg-6b-30.i386.rpm

[root@linux /]$ rpm -Uvh freetype-2.1.4-4.0.i386.rpm

[root@linux /]$ rpm -Uvh gd-1.8.4-12.i386.rpm


Apache :


[root@linux /]$ rpm -Uvh httpd-2.0.46-25.ent.i386.rpm


Nagios :


[root@linux /]$ rpm -Uvh nagios-1.1-6.rh90.dag.i386.rpm


Plugins Nagios et ses dépendances :


[root@linux /]$ rpm -Uvh perl-Crypt-DES-2.03-2.dag.rh90.i386.rpm

[root@linux /]$ rpm -Uvh perl-Net-SNMP-4.1.0-0.dag.rh90.noarch.rpm

[root@linux /]$ rpm -Uvh fping-2.4-0.b2.dag.rh90.i386.rpm

[root@linux /]$ rpm -Uvh nagios-plugins-1.3.1-5.dag.rh90.i386.rpm

Plugins Nagios Extras :

Utilisez l'option --nodeps pour l'installation le package des extras


[root@linux /]$ rpm -Uvh --nodeps nagios-plugins-extras-1.3.1-1.9.i386.rpm

Configuration

Introduction :

Conseils :


Les fichiers de nagios :


/etc/nagios ........................ : Répertoire principal des fichiers de configuration

/etc/nagios/nagios.cfg ............. : Fichier de configuration principal de Nagios

/etc/nagios/contacts.cfg ........... : Configuration des contacts
/etc/nagios/contactgroups.cfg ...... : Configuration des groupes de contacts
/etc/nagios/hosts.cfg .............. : Configuration des hôtes (équipements)
/etc/nagios/hostgroups.cfg ......... : Configuration des groupes d'hôtes (équipements)

/etc/nagios/timeperiods.cfg ........ : Configuration des périodes de temps
/etc/nagios/dependencies.cfg ....... : Configuration des dépendances
/etc/nagios/escalations.cfg ........ : 

/etc/nagios/services.cfg ........... : Configuration des services

/etc/nagios/checkcommands.cfg ...... : Configuration des commandes de vérifications (check...)
/etc/nagios/misccommands.cfg ....... : Configuration des commandes spéciales (pager, sms, etc...)
/etc/nagios/private/resource.cfg ... : Configuration des ressources (emplacements plugins, accès SGBDR, etc...)

/etc/nagios/cgi.cfg ................ : Configuration de l'interface Web et des CGI
/etc/nagios/minimal.cfg ............ : Version minimal de la configuration principal de Nagios

/etc/rc.d/init.d/nagios ............ : Script de démarrage/arrêt de Nagios
/usr/bin/nagios .................... : Programme Nagios
/usr/lib/nagios/cgi ................ : Interface Web - CGI
/usr/lib/nagios/plugins ............ : Répertoire des plugins (Commandes, Gestionnaires d'évènements, etc...)
/usr/share/nagios .................. : Interface Web - Fichier HTML, CSS, images, etc...
/var/log/nagios .................... : Répertoire des logs de Nagios et stockage des commandes en cours

/etc/httpd/conf.d/nagios.conf ...... : Fichier d'intégration de Nagios à Apache


La configuration des contacts :

Remarques :


define contact{
	contact_name                    nagios
	alias                           Nagios Admin
	service_notification_period     24x7
	host_notification_period        24x7
	service_notification_options    w,u,c,r
	host_notification_options       d,u,r
	service_notification_commands   notify-by-email
	host_notification_commands      host-notify-by-email
	email                           admin.nagios@domaine.com
}

define contact{
	contact_name                    srault
	alias                           STEPHANE RAULT
	service_notification_period     24x7
	host_notification_period        24x7
	service_notification_options    w,u,c,r
	host_notification_options       d,u,r
	service_notification_commands   notify-by-email
	host_notification_commands      host-notify-by-email
	email                           admin.nagios@domaine.com
}


contact_name Nom logique donné à ce contact.
alias Description ou nom en clair du contact
service_notification_period

Période pendant laquelle ce contact sera notifié en cas de problème sur un SERVICE.

24x7 correspond à une entrée du fichier timeperiods.cfg

host_notification_period

Période pendant laquelle ce contact sera notifié en cas de problème sur un HOTE (équipement).

24x7 correspond à une entrée du fichier timeperiods.cfg

service_notification_options

Options de notifications pour les SERVICES.

  • w : Envoi de la notification pour un état WARNING
  • u : Envoi de la notification pour un état UNKNOWN
  • c : Envoi de la notification pour un état CRITIQUE
  • r : Envoi de la notification pour le retour à la normale (état OK)
  • n : Aucune notification ne sera envoyée (none)
host_notification_options

Options de notifications pour les HOTES (équipements).

  • d : Envoi de la notification pour un état DOWN
  • u : Envoi de la notification pour un état UNREACHABLE
  • r : Envoi de la notification pour le retour à la normale (état OK)
  • n : Aucune notification ne sera envoyée (none)
service_notification_commands

Commande de notification pour les SERVICES.

notify-by-email correspond à une entrée du fichier misccommands.cfg

host_notification_commands

Commande de notification pour les HOTES (équipements).

host-notify-by-email correspond à une entrée du fichier misccommands.cfg

email Adresse email valide d'un destinataire local ou distant. Utilisez plutôt une adresse générique ou de groupe.

La configuration des groupes de contacts :

Les groupes de contacts seront rattachés aux hôtes et aux services pour déterminer qui sera notifiés en cas de problème.

Remarques : Les contacts ajoutés dans un groupe sont séparés par des virgules. Un contact peut appartenir à plusieurs groupes.


define contactgroup{
      contactgroup_name    ADMINS
      alias                Administrateurs
      members              nagios,srault
}

define contactgroup{
      contactgroup_name    URGENT
      alias                Groupe a contacter en urgence
      members              srault
}

contactgroup_name Nom logique donné à ce groupe de contacts.
alias Description ou nom en clair du groupe
members Membres du groupe

La configuration des hôtes :

Remarque : Les hôtes et services peuvent utilisé un modèle grace auquel il hérite de certains paramètres. Cela vous permets d'éviter d'avoir à retaper plusieurs fois la même chose pour chaque définition d'hôtes. Nous reviendrons sur ce concept dans la partie avancée de la configuration


define host{
        name                            generic-host
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        register                        0
}

define host{
        use                             generic-host
        host_name                       srv_linux
        alias                           Serveur Linux
        address                         192.168.1.3
        check_command                   check-host-alive
        max_check_attempts              10
        notification_interval           120
        notification_period             24x7
        notification_options            d,u,r
}

define host{
        use                             generic-host
        host_name                       srv_nt
        alias                           Serveur NT
        address                         192.168.1.2
        check_command                   check-host-alive
        max_check_attempts              10
        notification_interval           120
        notification_period             24x7
        notification_options            d,u,r
}

define host{
        use                             generic-host
        host_name                       routeur
        alias                           Routeur Internet
        address                         192.168.1.250
        check_command                   check-host-alive
        max_check_attempts              10
        notification_interval           120
        notification_period             24x7
        notification_options            d,u,r
}

Remarque : Je ne détaillerais pas ici, les paramètres utilisés dans le modèle. Leurs études compliquerait la compréhension de cette première configuration.

use Nom du modèle auquel se référer pour hériter de paramètres pré-définis.
host_name Nom court de l'hôte (équipement). Il n'est pas obligé de correspondre au vrai nom de la machine.
alias Description ou nom en clair de l'équipement
address Adresse IP.
check_command

Commande pour vérifier que l'équipement est bien disponible.

check-host-alive correspond à une entrée du fichier checkcommands.cfg

max_check_attempts Nombre de fois que Nagios relancera la commande de contrôle de l'équipement (check_command) si ce dernier n'est pas joignable.
notification_interval Nombre d'unité de temps avant lequel Nagios renverra une notification au groupe de contacts si l'équipement n'est pas disponible. Le paramètre "interval_length" du fichier nagios.cfg, définit ce qu'est l'unité de temps en cours (par défaut chaque unité vaut 60 secondes).
notification_period

Période pendant laquelle les contacts peuvent être notifiés en cas de problème

24x7 correspond à une entrée du fichier timeperiods.cfg

notification_options

Options de notifications.

  • d : Envoi de la notification pour un état DOWN
  • u : Envoi de la notification pour un état UNREACHABLE
  • r : Envoi de la notification pour le retour à la normale (état OK)
  • n : Aucune notification ne sera envoyée (none)

La configuration des groupes d'hôtes :


define hostgroup{
	hostgroup_name    linux-servers
	alias             Serveurs Linux
	contact_groups    URGENT,ADMINS
	members           srv_linux
}

define hostgroup{
	hostgroup_name    nt-servers
	alias             NT Servers
	contact_groups    ADMINS
	members           srv_nt
}

define hostgroup{
	hostgroup_name    tous
	alias             Tous les equipements
	contact_groups    ADMINS
	members           srv_linux,srv_nt,router
}

hostgroup_name Nom logique donné à ce groupe d'hôtes (équipement).
alias Description ou nom en clair du groupe
contact_groups Groupes de contacts rattachés à ce groupe d'hôtes
members Hôtes membres du groupe

La configuration des services :


define service{
        name                            generic-service
        active_checks_enabled           1
        passive_checks_enabled          1
        parallelize_check               1
        obsess_over_service             1
        check_freshness                 0
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        register                        0
}

define service{
        use                             generic-service
        host_name                       srv_linux
        service_description             SMTP
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           3
        retry_check_interval            1
        contact_groups                  URGENT
        notification_interval           120
        notification_period             24x7
        notification_options            w,u,c,r
        check_command                   check_smtp
}

Remarque : Je ne détaillerais pas ici, les paramètres utilisés dans le modèle. Leurs études compliquerait la compréhension de cette première configuration.

use Nom du modèle auquel se référer pour hériter de paramètres pré-définis.
host_name Nom court de l'hôte sur lequel se trouve le service à surveiller.
service_description Description du service
is_volatile
check_period

Période pendant laquelle la vérication du service sera effectuée

24x7 correspond à une entrée du fichier timeperiods.cfg

max_check_attempts Nombre de fois que Nagios relancera la commande de contrôle du service(check_command) si ce dernier répond pas OK.
normal_check_interval Nombre d'unité de temps pendant lequel Nagios attendra avant de déclencher à nouveau un contrôle du service. Le paramètre "interval_length" du fichier nagios.cfg, définit ce qu'est l'unité de temps en cours (par défaut chaque unité vaut 60 secondes).
retry_check_interval
contact_groups Groupes de contacts qui seront notifiés en cas de changement d'état pour ce service
notification_interval Nombre d'unité de temps avant lequel Nagios renverra une notification au groupe de contacts si le service n'est pas disponible. Le paramètre "interval_length" du fichier nagios.cfg, définit ce qu'est l'unité de temps en cours (par défaut chaque unité vaut 60 secondes).
notification_period

Période pendant laquelle des notifications seront envoyés

24x7 correspond à une entrée du fichier timeperiods.cfg

notification_options

Options de notifications.

  • w : Envoi de la notification pour un état WARNING
  • u : Envoi de la notification pour un état UNKNOWN
  • c : Envoi de la notification pour un état CRITIQUE
  • r : Envoi de la notification pour le retour à la normale (état OK)
  • n : Aucune notification ne sera envoyée (none)
check_command

Commande pour vérifier que l'équipement est bien disponible.

check_smtp correspond à une entrée qu'il faut ajouter au fichier checkcommands.cfg

check_smtp fait partie des nombreux plugins de Nagios


La configuration du fichier principal :


# Fichier nagios.cfg après l'installation du RPM (sans les commentaires) :

log_file=/var/log/nagios/nagios.log

cfg_file=/etc/nagios/checkcommands.cfg
cfg_file=/etc/nagios/misccommands.cfg
cfg_file=/etc/nagios/contactgroups.cfg
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/dependencies.cfg
cfg_file=/etc/nagios/escalations.cfg
cfg_file=/etc/nagios/hostgroups.cfg
cfg_file=/etc/nagios/hosts.cfg
cfg_file=/etc/nagios/services.cfg
cfg_file=/etc/nagios/timeperiods.cfg

resource_file=/etc/nagios/private/resource.cfg
status_file=/var/log/nagios/status.log

nagios_user=nagios
nagios_group=nagios

check_external_commands=1
command_check_interval=-1
command_file=/var/log/nagios/rw/nagios.cmd

comment_file=/var/log/nagios/comment.log
downtime_file=/var/log/nagios/downtime.log

lock_file=/var/run/nagios.pid
temp_file=/var/log/nagios/nagios.tmp

log_rotation_method=d

log_archive_path=/var/log/nagios/archives

use_syslog=1
log_notifications=1
log_service_retries=1
log_host_retries=1
log_event_handlers=1
log_initial_states=0
log_external_commands=1
log_passive_service_checks=1

inter_check_delay_method=s
service_interleave_factor=s
max_concurrent_checks=0
service_reaper_frequency=10
sleep_time=1
service_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
ocsp_timeout=5

perfdata_timeout=5
retain_state_information=1
state_retention_file=/var/log/nagios/status.sav
retention_update_interval=60
use_retained_program_state=0

interval_length=60
use_agressive_host_checking=0
execute_service_checks=1
accept_passive_service_checks=1
enable_notifications=1
enable_event_handlers=1

process_performance_data=0
obsess_over_services=0

check_for_orphaned_services=0
check_service_freshness=1

freshness_check_interval=60
aggregate_status_updates=1
status_update_interval=15
enable_flap_detection=0

low_service_flap_threshold=5.0
high_service_flap_threshold=20.0
low_host_flap_threshold=5.0
high_host_flap_threshold=20.0
date_format=us

illegal_object_name_chars=`~!$%^&*|'"<>?,()=
illegal_macro_output_chars=`~$&|'"<>

admin_email=nagios
admin_pager=pagenagios

Paramètres du fichier nagios.cfg classés par ordre alphabétique :

accept_passive_service_checks Accepte/Refuse les contrôles passifs au redémarrage de Nagios.
admin_email C'est l'adresse mail de l'administrateur local de la machine (i.e. celle sur laquelle Nagios tourne). Cette valeur peut être utilisée dans les commandes de notification grâce à la macro $ADMINEMAIL$.
admin_pager C'est le numéro du pager (ou la passerelle pager-email) de l'administrateur de la machine locale (i.e. celle sur laquelle Nagios tourne). Le numéro ou l'adresse de pager peut être utilisé dans les commandes de notification grâce à la macro $ADMINPAGER$.
aggregate_status_updates Aggrégation des données d'état. Cette fonction est désactivé par défaut à cause de la charge CPU qu'elle entraîne.
cfg_file Chemin d'un fichier de configuration des objets Nagios. Il est possible d'ajouter plusieurs fois ce paramètre pour charger tous les fichiers nécessaires.
cfg_dir

Chemin d'un répertoire de configuration des objets Nagios. Il est possible d'ajouter plusieurs fois ce paramètre pour charger tous les fichiers nécessaires.

Exemple : il peut être préférable de créer un fichier par équipement à surveiller. Dans ce fichier seront réunis la définition d'hôte et les définitions de services associés à cet hôte.

check_external_commands Active/désactive la vérification des commandes externes. Il faut l'activer pour passer des commandes à travers l'interface Web ou à l'aide de scripts externes.
check_for_orphaned_services Cette option vous permet d'activer ou désactiver la vérification des contrôles de service orphelins. Les contrôles de service orphelins sont des contrôles ayant été exécutés et supprimés de la file des évènements, mais dont les résultats n'ont pas été remontés depuis longtemps.
check_service_freshness Cette option détemine si Nagios va controler ou non périodiquement la validité des données d'un service. L'activation de cette option aide à controler que les controles de services passifs sont reçus en temps et heure.
command_check_interval

Interval de temps avant que Nagios re-vérifie les commandes externes en attentes.

  • Nombre positif : L'interval sera en unité de temps. Voir "interval_length"
  • Nombre positif suivi d'un "s" : L'interval sera en secondes
  • "-1" : Avec cette valeur, Nagios vérifiera les commandes en attentes aussi souvent que possible
command_file Fichier de stockage des commandes en attentes. Il faut voir ce fichier comme un spooler d'impression, chaque commande envoyé par des programmes externes ou la couche web, est ajouté et attend d'être exécutée.
comment_file Chemin du fichier de stockage, des commentaires entrés dans la couche Web pour des hôtes et services.
date_format

Cette option spécifie le format de date que Nagios utilisera dans l'interface web

  • us : MM/DD/YYYY HH:MM:SS
  • euro : DD/MM/YYYY HH:MM:SS
  • iso8601 : YYYY-MM-DD HH:MM:SS
  • strict-iso8601 : YYYY-MM-DDTHH:MM:SS
downtime_file Chemin du fichier de stockage du planning d'indisponibilité des hôtes et services.
enable_event_handlers Active/désactive les gestionnaires d'évènements au redémarrage de Nagios.
enable_flap_detection Fonction expérimental de detection des hôtes et services ayant des réactions aléatoires lors des contrôles.
enable_notifications Active/désactive l'envoi d'une notification au redémarrage de Nagios.
event_handler_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner un gestionnaire d'événement. Si un gestionnaire d'événement dépasse cette limite il sera tué et une alerte sera journalisée.
execute_service_checks Active/désactive la vérification de service au redémarrage de Nagios.
freshness_check_interval Cette option détermine l'intervalle de temps entre deux controles de validité des données d'un service. Si vous avez désactivé ce service, avec l'option (de controle de validité des données d'un service), cette option n'a pas d'effet.
global_host_event_handler Nom court d'une commande (gestionnaire d'évènement) qui sera exécuté à chaque changement d'état pour les hôtes.
global_service_event_handler Nom court d'une commande (gestionnaire d'évènement) qui sera exécuté à chaque changement d'état pour les services.
high_host_flap_threshold Seuil supérieur pour la détection de l'oscillation d'un hôte
high_service_flap_threshold Seuil supérieur pour la détection de l'oscillation d'un service.
host_check_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner un contrôle d'hôte. Si le contrôle dépasse cette limite, il est tué et un état CRITICAL est retourné, et l'hôte sera supposé être dans l'état DOWN. Une erreur de dépassement de délai est également journalisée
illegal_macro_output_chars Cette option vous permet de spécifier les caractères illégaux qui seront filtrés dans les macros, avant qu'elles soient utilisées dans les notifications, les gestionnaires d'évènements et autres commandes. Ceci n'affecte pas les macros utilisées dans les controles des services ou des hotes. Vous pouvez choisir de ne pas filtrer les caractères donnés en exemple ci-dessus, mais je ne vous recommande pas de le faire. Quelques uns d'entre eux sont interprètés par le shell ( par exemple, le ` ) et peuvent poser des problèmes de sécurité.
illegal_object_name_chars Cette option vous permet de spécifier quels sont les caractères illégaux dans les noms d'objets, tels que hotes, services et autres. Nagios vous autorisera la plupart des caractères dans les définitions d'objets, mais je recommande de ne pas utiliser les caractères ci-dessus. Le faire est s'exposer à des problèmes dans l'interface web, les notifications de commandes, etc.
inter_check_delay_method

Selection d'une méthode de planification pour l'exécution du contrôle des services.

  • n = Ne pas utiliser de délai [no delay] - ordonnancer le lancement de toutes les contrôles maintenant (i.e. en même temps !)
  • d = Utiliser un délai "irréfléchi" [dumb] d'1 seconde entre les contrôles de service
  • s = Utiliser un calcul de délai "débrouillard" [smart] pour répartir également les contrôles de service (par défaut)
  • x.xx = Utiliser le délai fourni de x.xx secondes

Attention, le paramètre "no delay" va déclencher des pics d'utilisation du processeur

interval_length Définition en secondes, de ce que sera une unité de temps. Les unités de temps sont souvent utilisées dans les paramètres de définitions des hôtes et services.
lock_file Fichier contenant le numéro de processus en cours quand Nagios est lancé en tant que Daemon (-d)
log_archive_path Chemin d'un répertoire qui sera utilisé pour stocker les logs après rotation.
log_event_handlers Active/désactive la journalisation pour lors de l'exécution des gestionnaires d'évènements.
log_external_commands Active/désactive la journalisation des commandes externes.
log_file Chemin du journal de logs, principal de Nagios. Attention : ce paramètre doit être le premier dans le fichier nagios.cfg afin de journaliser les erreurs rencontrées.
log_host_retries Active/désactive la journalisation des tentatives de re-vérification des hôtes.
log_initial_states Active/désactive la journalisation de l'état initial des hôtes et services.
log_notifications Active/désactive la journalisation des notifications.
log_passive_service_checks Active/désactive la journalisation des vérifications passives de services.
log_rotation_method

Paramètre pour définir la fréquence de rotation des logs.

  • n = Aucune [None]
  • h = Toutes les heures [Hourly]
  • d = Tous les jours [Daily]
  • w = Toutes les semaines [Weekly]
  • m = Tous les mois [Monthly]
log_service_retries Active/désactive la journalisation des tentatives de re-vérification des services.
low_host_flap_threshold Seuil inférieur pour la détection de l'oscillation d'un hôte
low_service_flap_threshold Seuil inférieur pour la détection de l'oscillation d'un service.
max_concurrent_checks Nombre de contrôles maximum qui peuvent s'exécuter simultanément. Mettre "1" pour désactiver la parallèlisation des contrôles et "0" pour n'imposer aucune limite. A ajuster en fonction de la capacité de la machine sur laquelle est installé Nagios.
nagios_group Compte de groupe Unix sous lequel tournera le processus Nagios.
nagios_user Compte d'utilisateur Unix sous lequel tournera le processus Nagios.
notification_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner une commande de notification. Si une commande de notification dépasse cette limite elle sera tuée et une alerte sera journalisée
obsess_over_services Cette variable détermine si Nagios remontera les résultats de contrôles de service et lancera la commande de remontée de contrôle de service que vous avez défini. Si vous ne faites pas de supervision répartie, n'activez pas cette option
ocsp_command Cette option définit la commande à lancer après chaque contrôle de service,ce aui peut etre utile dans une supervision répartie. Elles est exécutée après les éventuelles commandes de gestion d'événement ou de notification. L'argument commande est le nom court d'une définition de commande que vous avez définie dans le fichier de configuration des hôtes. Cette option sert dans le cadre de la supervision répartie. Le temps d'exécution maximal de cette commande est déterminé par la variable ocsp_timeout.
ocsp_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner une commande de remontée de contrôle de service. Si une commande dépasse cette limite, elle sera tuée et une alerte sera journalisée.
perfdata_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner une commande de traitement des données liées aux performance d'un hôte ou de traitement des données liées aux performances d'un service. Si une commande dépasse cette limite, elle sera tuée et une alerte sera journalisée.
process_performance_data Cette valeur détermine si Nagios traitera les données liées aux performances des contrôles d'hôtes et de services.
resource_file Chemin d'un fichier de ressource contenant entre autre le chemin des plugins et des macros utilisées dans les commandes.
retain_state_information Active/désactive la conservation de l'état des hôtes et services entre deux démarrage de Nagios.
retention_update_interval Fréquence en minutes à laquelle Nagios sauvegardera les données de mémorisation en situation normale.
service_check_timeout C'est le nombre maximal de secondes pendant lequel Nagios laissera tourner un contrôle de service.Si le contrôle dépasse cette limite, il est tué et un état CRITICAL est retourné. Une erreur de dépassement de délai est également journalisée.
service_interleave_factor Facteur permettant de modérer l'exécution des contrôles de services.
service_reaper_frequency Fréquence en secondes des événements de "consolidation" des services.
sleep_time Temps en secondes pendant lequel Nagios va rester en sommeil avant de relancer les séquences de vérifications des services, hôtes et l'exécution de commandes en attentes.
soft_state_dependencies Active/désactive l'utilisation des états "soft" lors du contrôle des dépendances de services.
state_retention_file Chemin du fichier de stockage des données d'états. Utilisé quand le paramètre "retain_state_information" est activé.
status_file Chemin du fichier utilisé par Nagios pour stocker l'état actuel des hôtes et services.
status_update_interval Fréquence en secondes à laquelle Nagios mettra à jour les données d'états. Ce paramètre est sans effet quand aggregate_status_updates est désactivé.
temp_file Chemin d'un fichier temporaire généré et utilisé par Nagios pour stocker certaines valeurs.
use_agressive_host_checking Paramètre qui était surtout valable pour les anciennes versions de nagios. Laissez "0" = désactivé
use_retained_program_state Active/désactive le chargement de variables à partir du fichier de mémorisation.
use_syslog Active/désactive l'utilisation de syslog. Il ne s'agit que des logs standards de Nagios, les autres journaux comme celui des états ne sont pas concernés par cette option.

La configuration de l'interface Web :

La partie Web de Nagios est en quelque sorte, un programme dans le programme. Elle dispose donc d'un fichier de configuration spécifique qui n'est lù que par elle.


# Fichier cgi.cfg après l'installation du RPM (sans les commentaires) :

main_config_file=/etc/nagios/nagios.cfg

physical_html_path=/usr/share/nagios

url_html_path=/nagios

show_context_help=0

#nagios_check_command=/usr/lib/nagios/plugins/check_nagios /var/log/nagios/status.log 5 '/usr/bin/nagios'

use_authentication=1

#default_user_name=guest
#authorized_for_system_information=nagiosadmin,theboss,jdoe
#authorized_for_configuration_information=nagiosadmin,jdoe
#authorized_for_system_commands=nagiosadmin
#authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin,guest
#authorized_for_all_service_commands=nagiosadmin
#authorized_for_all_host_commands=nagiosadmin

#hostextinfo[es-eds]=/serverinfo/es-eds.html;novell40.gif;novell40.jpg;novell40.gd2;IntranetWare 4.11;100,50;3.5,0.0,-1.5;
#hostextinfo[rosie]=/serverinfo/rosie.html;win40.gif;win40.jpg;win40.gd2;NT Server 4.0;;;

#serviceextinfo[es-eds;PING]=http://www.somewhere.com?tracerouteto=$HOSTADDRESS$;;PING rate
#serviceextinfo[rosie;Security Alerts]=;security.gif;Security alerts
#statusmap_background_image=smbackground.gd2

default_statusmap_layout=5

default_statuswrl_layout=4
#statuswrl_include=myworld.wrl

ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$

refresh_rate=90

#host_unreachable_sound=hostdown.wav
#host_down_sound=hostdown.wav
#service_critical_sound=critical.wav
#service_warning_sound=warning.wav
#service_unknown_sound=warning.wav
#normal_sound=noproblem.wav
#xeddb_host=somehost
#xeddb_port=someport
#xeddb_database=somedatabase
#xeddb_username=someuser
#xeddb_password=somepassword
#xsddb_host=somehost
#xsddb_port=someport
#xsddb_database=somedatabase
#xsddb_username=someuser
#xsddb_password=somepassword
#xcddb_host=somehost
#xcddb_port=someport
#xcddb_database=somedatabase
#xcddb_username=someuser
#xcddb_password=somepassword
#xdddb_host=somehost
#xdddb_port=someport
#xdddb_database=somedatabase
#xdddb_username=someuser
#xdddb_password=somepassword

Paramètres du fichier cgi.cfg classés par ordre alphabétique :

authorized_for_all_host_commands
authorized_for_all_hosts
authorized_for_all_service_commands
authorized_for_all_services
authorized_for_configuration_information
authorized_for_system_commands
authorized_for_system_information
default_statusmap_layout
default_statuswrl_layout
default_user_name
host_down_sound
hostextinfo
host_unreachable_sound
main_config_file
nagios_check_command
normal_sound
physical_html_path
ping_syntax
refresh_rate
service_critical_sound
serviceextinfo
service_unknown_sound
service_warning_sound
show_context_help
statusmap_background_image
statuswrl_include
url_html_path
use_authentication
xcddb_database
xcddb_host
xcddb_port
xcddb_username
xcddb_password

La configuration du serveur Apache :


Remerciements

Merci à Olivier ALLARD-JACQUIN pour la charte graphique dont je me suis totalement inspiré.

Merci aux traducteurs de la documentation Française de Nagios :

Liens