Exemple de configuration de Nagios

Date: 3/04/2007 | Catégories: Open-source,Reseau | Tags: ,,,

Ce post fait suite à celui sur l'installation de Nagios sur une machine Linux. Nous allons y décrire les fichiers de configurations nécessaires pour surveiller ("to monitor") un réseau simple comporant: une machine client, une machine serveur avec un serveur Web et une serveur FTP et une liaison Internet.

Note: les fichiers de configurations données en exemple dans ce post se basent sur la version 2.8 de Nagios.

Sous Fedora Linux, les fichiers de configurations de Nagios se trouvent dans le répertoire /etc/nagios/ (/usr/local/etc/nagios sous BSD). Le fichier nagios.cfg définie l'ensemble des sous fichiers de configurations grâce aux variables cfg_file:

...
#cfg_file=/etc/nagios/localhost.cfg
cfg_file=/usr/local/etc/nagios/timeperiods.cfg
cfg_file=/usr/local/etc/nagios/contacts.cfg
cfg_file=/usr/local/etc/nagios/contactgroups.cfg
cfg_file=/usr/local/etc/nagios/hosts.cfg
cfg_file=/usr/local/etc/nagios/services.cfg
cfg_file=/usr/local/etc/nagios/hostgroups.cfg
...

Il faut également configurer le fichier cgi.cfg (en partant de cgi.cfg-sample):

authorized_for_system_information=admin
authorized_for_configuration_information=admin
authorized_for_system_commands=admin
authorized_for_all_services=admin
authorized_for_all_hosts=admin
authorized_for_all_service_commands=admin
authorized_for_all_host_commands=admin

Définition des plages horaires

La première étape consiste à définir les périodes de temps que nous allons pouvoir utiliser dans les autres fichiers de configurations. Pour simplifier, nous allons juste créer la période 24x7 (tout les jours, toutes les heures...). Pour cela, il faut éditer le fichier /usr/local/etc/nagios/timeperiods.cfg:

# Time periods definitions
##########################
# 7d/7 24h/24
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éfinition des contacts

Nous allons ensuite définir les contacts. C'est à dire les personnes devant être prevenu par un moyen ou un autre (mail, SMS...) quand une alerte est générée par Nagios (par exemple quand votre serveur Web ne répond plus).

Il faut pour cela modifier deux fichiers, /usr/local/etc/nagios/contacts.cfg pour la définition du/des contacts:

# Contacts defintions
#####################
define contact {
contact_name nico
alias Nicolas
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r
service_notification_options w,u,c,r
host_notification_commands host-notify-by-email
service_notification_commands notify-by-email
email nico@votreadressemail.com
}

Nous venons donc de créer un contact nommé "nico" qui sera joingnable 24 heures sur 24, 7 jours sur 7 par mail.

Le deuxième fichier (/usr/local/etc/nagios/contactgroups.cfg) permet d'intégrer le nouvel utilisateur dans un groupe:

# Contacts groups definition
############################
define contactgroup {
contactgroup_name admins
alias Administrators
members nico
}

Nous avons donc ajouté "nico" dans le groupe "admins".

Définition des machines à surveiller

Entrons dans le vif du sujet en déclarant les machines que l'on veut surveiller. Cette définition sefait dans le fichier /usr/local/etc/nagios/hosts.cfg:

On commence le fichier en définissant un template:

# Nagios server - Hosts definitions
###################################
# Templates
#----------
define host{
name template-host
check_command check-host-alive
max_check_attempts 2
check_interval 5
active_checks_enabled 1
passive_checks_enabled 0
check_period 24x7
notification_interval 60
notification_period 24x7
obsess_over_host 0
check_freshness 0
event_handler_enabled 0
flap_detection_enabled 0
process_perf_data 0
retain_status_information 1
retain_nonstatus_information 1
contact_groups admins
register 0
}

Puis on ajoute la définition pour notre routeur d'accès à Internet (Freebox, 9box, OrangeBox, Trucbox...):

# Ma box
#------------
define host{
use template-hosts
host_name monrouteuramoi
alias Mon routeur à moi c'est une Freebox
address 192.168.100.254
}

celle de mon PC client:

# Mon PC client
#------------
define host{
use template-hosts
host_name monpcamoi
alias Mon MacBook Pro à moi
address 192.168.100.2
}

et enfin celle de mon serveur:

# Mon serveur
#------------
define host{
use template-hosts
host_name monserveuramoi
alias Mon serveur Linux à moi
address 192.168.100.1
}

on termine en surveillant la liaison Internet (pour cela on va pinguer un serveur Web):

# Mon liaison Internet
#------------
define host{
use template-hosts
host_name maliaisonamoi
alias Ma liaison ADSL à moi
address www.free.fr
parents monrouteuramoi
}

Vous pouvez remarquer dans cette dernière définition que nous avons définie "monrouteuramoi" comme père de ma "maliaisonamoi". Ainsi, si le routeur n'est plus accéssible, Nagios n'essayera plus de surveiller la liaison Internet.

Définition des services à surveiller

Une fois les machines définies, nous devons décider ce que nous allons surveiller dessus. Cette configuration se fait grâce au fichier /usr/local/etc/nagios/services.cfg.

Nous allons commencer par un template:

# Templates
#----------
define service{
name template-services
active_checks_enabled 1
passive_checks_enabled 0
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 0
event_handler_enabled 0
flap_detection_enabled 0
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_interval 240
notification_period 24x7
notification_options c,r
register 0
}

Puis par la surveillance du routeur:

# monrouteuramoi
#---------
define service {
host_name monrouteuramoi
use template-services
service_description Ping
check_command check-host-alive
}

De mon PC client:

# monpcamoi
#---------
define service {
host_name monpcamoi
use template-services
service_description Ping
check_command check-host-alive
}

mon serveur (on surveille également le serveur HTTP et le serveur FTP):

# monserveuramoi
#---------
define service {
host_name monserveuramoi
use template-services
service_description Ping
check_command check-server-alive
}
define service {
host_name monserveuramoi
use template-services
service_description Web serveur
check_command check_http
}
define service {
host_name monserveuramoi
use template-services
service_description FTP serveur
check_command check_ftp
}

et enfin la liaison Internet:

# maliaisonamoi
#---------
define service {
host_name maliaisonamoi
use template-services
service_description Ping
check_command check-server-alive
}

Définition des groupes de machines

La dernière étape consiste à définir un groupe de machine dans le fichier /usr/local/etc/nagios/hostgroups.cfg:

# Mon réseau à moi
define hostgroup{
hostgroup_name monreseauamoi
alias Mon reseau
members monrouteuramoi, monpcamoi, monserveuramoi, maliaisonamoi
}

et voila la configuration touche à sa fin, il ne reste plus qu'a vérifier la syntaxe de vos fichiers de configuration avec la commande suivante:

# nagios -v <nagios.cfg>

Si tout est ok, vous pouvez relancer le serveur Nagios:

# service nagios reload

That's all folk !

Pour une description précise des options des fichiers de configuration de Nagios, c'est par ici.

Pour consulter l'ensemble des posts sur Nagios, c'est par là.

  • amel_ouertani

    j’ai une problème au niveau du trap aidez de savior comment peut-on recevoir des traps

  • amel_ouertani

    j’ai une problème au niveau de trap aidez de savior comment peur_on envoyer et recevoir des trap (j’utilise nagios comme un outil de supervision

  • amel_ouertani

    j’ai résolu le problème du traps et j’ai un problème au niveau d’affichage de map pourtant j’ai installéla librairie gd

  • amel_ouertani

    j’ai un problème au niveau d’affiche du map pourtant j’ai installé la librairie gd
    merci d’avance

  • jb

    C’est un très bon « how to » !
    Il serait possible d’ajouter un « host » Windows piloté par NSClient par exemple.
    Il y a pas mal de route à ouvrir et d’authorisations qui pourrait aussi compléter l’exemple très bien fait ci-dessus.

  • @jb: j’ai écrit un autre billet sur NsClient. Tu peux le consulter ici.

  • antares

    Bonjour ,

    j’ai nagios 2.6 sur debian , tout à l’air de bien fonctionner mais

    1 -en cliquant le bouton « http://xxxx/nagios2/status map », j’ai des points d’interrogations à la place des icones avec comme message d’erreur /var/log/apache2/access.log

    10.10.0.141 – nagiosadmin [11/Mar/2008:13:12:22 0100] « GET /cgi-bin/nagios2/statusmap.cgi?host=all&createimage&canvas_x=0&canvas_y=0&canvas_width=300&canvas_height=295&max_width=0&max_height=0&layout=5&layermode=exclude HTTP/1.1 » 200 21715 « http://tlon/cgi-bin/nagios2/statusmap.cgi?host=all » « Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.6) Gecko/20070802 Iceape/1.1.4 (Debian-1.1.4-1) »

    2- en cliquant sur le bouton « http://xxxx/nagios2/3D -status map » j’ai le message d’erreur /var/log/apache2/access.log

    10.10.0.141 – nagiosadmin [11/Mar/2008:13:09:37 0100] « GET /cgi-bin/nagios2/statuswrl.cgi?host=all HTTP/1.1 » 200 30137 « http://tlon/nagios2/side.html » « Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.6) Gecko/20070802 Iceape/1.1.4 (Debian-1.1.4-1) »

    avec une popup
    Le fichier est de type x-world/x-vrml(script CGI) et SeaMonkey ne sait pas comment traiter ce type de fichier.

    je crois que c’est un problème avec l’activation des cgi quel qu’un

    Antares

  • morgandu71

    Bonjour tout le monde .

    J’ai un probleme avec mon nagios .
    Toutes les configurations que j’effectue ne sont pas pris en compte et même les plus simples comme l’affichage de la date en « euro » au lieu de « us ».
    Comment puis-je faire pour que cela puisse se résoudre.

    Merci d’avance !!!!

  • Je viens de publier un nouveau billet sur la configuration de Nagios 3.

    A consulter ici:

    http://blog.nicolargo.com/2008/06/structure-des-fichiers-de-configuration-de-nagios-3.html

  • Slyers

    Bonjour,

    Je suis sous Nagios 3 (c’est pour ça que je poste ici), sur une Debian.
    J’essaie de rendre mon Nagios le plus propre possible au niveau de l’interface graphique.
    Aussi, j’aimerais remplacer les ? dans statusmap par des icones. Quelqu’un peut-il m’expliquer comment faire?
    J’ai essayé d’insérer un statusmap_icone dans la définition des hosts mais ça n’est pas pris en compte.
    En outre, je n’arrive pas à faire fonctionner l’outil pngtogd2…
    D’autres part, j’essaie de trouver un outil vrml pour pouvoir ouvrir ma map en 3D (au moins pour voir à quoi ça ressemble!), quelqu’un peut-il m’aider là aussi?

    Merci.

  • tatou

    slt je voudrais une configuration qui me permet de recevoir des sms avec mon nagios 3.0.3 sous ubuntu 8.04 sa fait un max de temps que je demande de l’aide sur ca mais toujours rien est ce il y’a quelqu’un pour m’aider ne serais qu’un peu merci

  • daminou

    Très bon blog, exemple très intéressant. Je garde l’adresse de côté. Bonne continuation

  • @tous: juste pour vous signaler l’ouverture du forum de Nicolargo ou vous pouvez poser vos questions !

    http://forum.nicolargo.com

    A bientôt !

    Nicolargo

  • ali

    s’il vous plait klk’1 peut m’aider !!!!!
    quant je clic sur le boutton « 3-D Status Map » il me donne un fichier « statuswrl.cgi » a telecharger ,s’il vous plait comment remidier a ce problaeme.

    merci d’avance

  • bilel

    slt tous, g pa trouver services.cfg et hosts.cfg mm dns /usr/local/etc/nagios/.svp aider moi pour faire la configuration et merciii

  • holiso

    Bonjour,

    j’ai installe et configure nagios sous fedora maintenant mais le problème que j’ai lorsque je clique sur « Status Map » tous les hotes sont autour du noeud « Nagios » et finalement ça devient pas claire
    J’aimerais savoir comment faire configuré afin que puisse avoir une interface
    comme celle ci:
    https://www.abclinuxu.cz/images/screenshots/0/2/100320-nagios-16619.jpg

    merci

    • Joz

      Hi guy,

      Tu as eu le même soucis que moi et je voulais savoir si tu as reçu ou trouvé la solution. Merci d’avance pour ton feedback.

      Joselito

  • yoyo972

    salut,
    je suis dans le meme cas que bilel:s
    les fichiers services.cfg ainsi que host.cfg sont inexistant.

  • bast-62

    salut salut ces toujours moi ….
    une petite question et il possible de mettre 2 couleur (le vert)+ bleu pour un autre réseau ???
    merci a tous

  • cisco123

    define hostdependency{

    host_name sme serveur

    dependent_host_name routeur cisco

    notification_failure_criteria d,u

    }

    define hostdependency{

    host_name routeur camtel

    dependent_host_name localhost

    notification_failure_criteria d,u

    }

  • adostum66

    je suis content de rencotrer ce site web mais le comble est que je veux un peu concevoir un truc du site et un logiciel et je veux que ce logiciel sois installer dans un mobile alors je n’ai pas plus d’information d’içi alors je voulais démander si je peux pas avoir de l’aide de votre part.bonne soiré et à tres bientot mon vieux

  • freakss

    Salut,
    une question svp : que peut-on surveiller dans un serveur web? à part tester s’il est bien lancé je ne vois pas ce que je peux rajouter d’autres…
    Merci

  • merci nicola

  • Dreams

    Bonsoir,
    j’ai une question SVP, je veux superviser un réseau simuler par GNS3 par l’ouil nagios … j’ai installé un serveur nagios sur une vmware ubuntu et je vais simuler le réseau d’une entreprise sur une autre vmware … est ce que je peux faire ce ci est it possible de superviser cette maquette en gns3 par mon serveur nagios déja mis en place ??? Merci d’avance ..

  • patrick

    bonjour, tout d’abord merci pour ton tuto, cependant a la fin j’ai une erreur, en faisant la commance :
    nagios -v
    le message que je recois est:
    bash: Erreur de syntaxe près de symbole inattendu
    mais je ne trouve pas d’erreur .
    merci pour vos réponse