Structure des fichiers de configuration de Nagios 3

Date: 4/06/2008 | Catégories: Open-source,Reseau | Tags: ,

smalllogo7.gif

Le passage en version 3.0 de Nagios (l'outil de monitoring système et réseau) a apporté son lot de nouveautés. L'une d'elle est la réorganisation des fichiers de configuration. Nous allons dans ce billet détailler cette structure et préparer notre configuration de Nagios pour qu'elle soit facile à administrer...

Arborescence des fichiers de configuration

Si vous avez suivi ce tutorial pour l'installation de Nagios 3 depuis les sources, vos fichiers de configuration (fichiers se terminant avec l'extension .cfg) se trouve sous le répertoire /usr/local/nagios/etc/.

Personnellement, j'utilise la structure suivante:

cgi.cfg
> Définition des paramètres des scripts CGI. Vous pouvez utiliser le fichier fourni par défaut par Nagios.
nagios.cfg
> Fichier de configuration de Nagios. A modifier par vos soins selon votre configuration et l'arborescence choisie. Vous pouvez partir du fichier fourni en standard par Nagios et le modifier selon votre configuration.
resource.cfg
> Définition des ressources externes. Vous pouvez utiliser le fichier fourni par défaut par Nagios.
objects/
> C'est dans ce sous-répertoire que sont centralisé les définitions des machines et services à surveiller part votre serveur Nagios.
objects/commands.cfg
> C'est là que nous allons définir les commandes utilisées par Nagios pour interroger vos machines. Vous pouvez partir du fichier fourni en standard par Nagios et le modifier selon votre configuration.
objects/contacts.cfg
> Dans ce fichier, il faut configurer les contacts pouvant être prévenu en cas d'alerte. Vous pouvez partir du fichier fourni en standard par Nagios.
objects/hostclients.cfg
> Ce fichier est à créer, il comportera la définition de toutes vos machines clients à surveiller (c'est à dire les postes utilisateurs). Ce fichier n'existe pas dans la structure de base de Nagios.
objects/hostservers.cfg
> Ce fichier est à créer, il comportera la définition de toutes vos machines serveurs à surveiller (c'est à dire les serveurs Web, DNS, DB...). Ce fichier n'existe pas dans la structure de base de Nagios.
objects/localhost.cfg

> Ce fichier est là pour que Nagios puisse surveiller le serveur sur lequel il est installé (localhost). Vous pouvez partir du fichier fourni en standard par Nagios.
objects/templates.cfg
> C'est le fichier ou se trouve la définition des "templates". Vous pouvez partir du fichier fourni en standard par Nagios.
objects/timeperiods.cfg
> Ce fichier défini les périodes de temps. Vous pouvez partir du fichier fourni en standard par Nagios.
objects/network.cfg
> Ce fichier est à créer, il comporte la définition de toutes les machines composant l'infrastructure de votre réseau (routeur, switch ou hub, borne Wifi ...)

C'est une bonne base de départ mais vous pouvez l'adapter en fonction de vos besoins (par exemple avec un découpage plus fin au niveau des hosts).

Attention aux droits sur ces fichiers. Il doivent être lisible par l'utilisateur système avec lequel le daemon Nagios est lancé (user nagios par défaut). Pour être sur de ne pas avoir de problème, je vous conseille de taper les commandes suivantes quand vous avez fini la configuration de vos fichiers:

# cd /usr/local/nagios/etc
# chown -R nagios *

Configuration des fichiers cgi.cfg, nagios.cfg et resource.cfg

Ces 3 fichiers définissent la configuration "maître" de Nagios. Ils sont donc à configurer de manière préalable à tous les autres fichiers .cfg.

Configuration de Nagios: nagios.cfg

Ce fichier défini comment Nagios doit fonctionner. Il dispose de nombreuses options. Je vous conseille donc de partir du fichier fourni en standard et de modifier les sections suivantes.

Modifier le fichier ou les logs du processus Nagios seront écrits (vou spouvez laisser la valeur par défaut).

log_file=/var/log/nagios.log

Attention, ce fichier doit être en lecture/écriture l'utilisateur avec lequel le daemon Nagios est lancé (user nagios par défaut).

La deuxième chose à faire est de définir l'arborescence des fichiers de configuration. Dans notre cas, cela donne:

cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/hostclients.cfg
cfg_file=/usr/local/nagios/etc/objects/hostservers.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/network.cfg

Les options suivantes permettent de configurer l'utilisateur et le groupe système utilisés pour lancer Nagios. Je vous conseille de laisser les valeurs par défaut (sinon il faut créer les utilisateurs).

nagios_user=nagios
nagios_group=nagios

Je vous laisse consulter les autres options de ce fichier.

Configuration des CGI: cgi.cfg

Comme vous le savez, Nagios se base sur une interface Web pour générer ses rapports. Cette interface Web est générée dynamiquement par des scripts CGI. Le fichier cgi.cfg à pour but de configurer ces CGI selon votre configuration. Là encore, je vous conseille de partir du fichier fourni par défaut.

On commence par définir l'emplacement du fichier nagios.cfg. En effet ce dernier doit être lisible par les CGI.

main_config_file=/usr/local/nagios/etc/nagios.cfg

On peut ensuite configurer l'URL avec laquelle on va accéder au serveur Web de Nagios. Si par exempel vous voulez y accéder par l'adresse http://monboserveurnagios.com/nagios, il faut éditer l'option:

url_html_path=/nagios

Enfin, il est fortement conseiller d'utiliser une authentification (même si c'est une basique authentification HTTP) pour accéder à Nagios:

use_authentication=1

authorized_for_system_information=admin
...

Configuration des ressources externes: resource.cfg

Nagios utilise un système de plugins. Le fichier resources est là pour définir ou sont ces plugins. Le fichier fourni en standard défini un moyen pour accèder aux plugins standards:

$USER1$=/usr/local/nagios/libexec

Libre à vous d'ajouter d'autres répertoires de plugins.

Configuration des objets

Entrons dans le vif du sujet avec la définition des fichiers de configuration des objets composants notre réseau à surveiller.

On commence par les fichiers génériques: commands.cfg, contacts.cfg, templates.cfg et timeperiods.cfg

Vous pouvez utiliser les fichiers fournis en standard avec Nagios. Pour l'adapter à notre besoin, j'ai juste modifié le fichier templates.cfg pour y ajouter les templates suivants:

Un premier template pour les machines de type Linux:

# Linux host definition template - This is NOT a real host, just a template!

define host{

name linux-host ; The name of this host template

use generic-host ; This template inherits other values from the generic-host template

check_period 24x7 ; By default, Linux hosts are checked round the clock

check_interval 5 ; Actively check the host every 5 minutes

retry_interval 1 ; Schedule host check retries at 1 minute intervals

max_check_attempts 10 ; Check each Linux host 10 times (max)

check_command check-host-alive ; Default command to check Linux hosts

notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day

; Note that the notification_period variable is being overridden from

; the value that is inherited from the generic-host template!

notification_interval 120 ; Resend notifications every 2 hours

notification_options d,u,r ; Only send notifications for specific host states

contact_groups admins ; Notifications get sent to the admins by default

register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!

action_url /nagios/pnp/index.php?host=$HOSTNAME ; PNP

}

Un autre pour les machines Apple et BSD:

# BSD host definition template - This is NOT a real host, just a template!

define host{

name bsd-host ; The name of this host template

use linux-host ; This template inherits other values from the generic-host template

}

# Apple host definition template - This is NOT a real host, just a template!

define host{

name apple-host ; The name of this host template

use bsd-host ; This template inherits other values from the generic-host template

}

Pour les machines sous Windows (on sait jamais, sur un malentendu...):

define host{

name windows-host ; The name of this host template

use generic-host ; Inherit default values from the generic-host template

check_period 24x7 ; By default, Windows servers are monitored round the clock

check_interval 5 ; Actively check the server every 5 minutes

retry_interval 1 ; Schedule host check retries at 1 minute intervals

max_check_attempts 10 ; Check each server 10 times (max)

check_command check-host-alive ; Default command to check if servers are "alive"

notification_period 24x7 ; Send notification out at any time - day or night

notification_interval 30 ; Resend notifications every 30 minutes

notification_options d,r ; Only send notifications for specific host states

contact_groups admins ; Notifications get sent to the admins by default

register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE

}

Et enfin pour les machines composant votre infrastructures réseaux:

define host{

name network-host ; The name of this host template

use generic-host ; Inherit default values from the generic-host template

check_period 24x7 ; By default, switches are monitored round the clock

check_interval 5 ; Switches are checked every 5 minutes

retry_interval 1 ; Schedule host check retries at 1 minute intervals

max_check_attempts 10 ; Check each switch 10 times (max)

check_command check-host-alive ; Default command to check if routers are "alive"

notification_period 24x7 ; Send notifications at any time

notification_interval 30 ; Resend notifications every 30 minutes

notification_options d,r ; Only send notifications for specific host states

contact_groups admins ; Notifications get sent to the admins by default

register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE

}

Définition des machines réseaux: network.cfg

On va utiliser le template network-host et définir chaque noeud de votre réseau (routeur, switch...). Il faut bien sur que ces machines est une adresse IP. Les services à surveiller dépendent de votre configuration (par exemple la MIB des routeurs Cisco est très verbeuse).

Par défaut Nagios "pingue" les machines et affiche leur status (UP/DOWN). Mais on peut allre bien plus loin, apr exemple en mettant des alertes si un interface réseau est saturé, si la charge CPU de votre Firewall devient trop grande...

On utilise l'option hostgroups pour insérer le serveur dans le groupe monreseau.

Un exemple de définition pour un routeur Cisco et un switch réseau:

define host{

use network-host

host_name monboswitch

alias Switch réseau 100 Mbps

address 192.168.0.254

hostgroups monreseau

}

define host {

use network-host

host_name monborouteur

alias Routeur acces Internet

address 192.168.0.1

parents monboswitch

hostgroups monreseau

}

Pour surveiller sa liaison Internet, le plus simple est de pinguer sur Internet un serveur digne de confiance (style www.google.fr):

define host{

use network-host

host_name internet

alias Liaison Internet (ping Google)

address www.google.fr

parents monborouteur

hostgroups monreseau

}

Définition des machines serveurs: hostservers.cfg

On va utiliser un des templates (linux|bsd|apple|windows)-host et définir tous les serveurs de votre réseau.

Pour chaque serveur, on va définir dans le même fichier (c'est une nouveauté par rapport à Nagios 2.x) les services à surveiller (par exemple on va vérifier que le serveur Web est bien lancé grâce au plugin check_http).

On utilise également l'option hostgroups pour insérer le serveur dans le groupe messerveurs.

define host{

use linux-host

host_name monboserveur

alias Serveur Web

address 192.168.0.100

parents monboswitch

hostgroups messerveurs

}

define service{

use generic-service

host_name monboserveur

service_description HTTP

check_command check_http!8080

}

Définition des machines clientes (utilisateurs): hostclients.cfg

On va utiliser un des templates (linux|bsd|apple|windows)-host et définir toutes les machines clients de votre réseau.

On utilise également l'option hostgroups pour insérer le serveur dans le groupe mesclients (il est possible de faire appartenir un même host à plusieurs groupes en listant dans les même options les différents groupes séparés par des virgules).

define host{

use apple-host

host_name monboportable

alias MacBookPro

address 192.168.0.200

parents monboswitch

hostgroups mesclients

}

define host{

use linux-host

host_name monbopc

alias Ubuntu

address 192.168.0.201

parents monboswitch

hostgroups mesclients

}

Et ensuite ?

Vous disposer donc d'un structure propre pour faire évoluer votre configuration de Nagios. Si vous voulez allez plus loin dans la configuration des services à surveiller, vous pouvez consulter cette page qui regroupe des articles et des liens sur le sujet.

  • clément

    Pour la définition des fichiers de configuration cela ne suffit-il pas ? :
    cfg_dir=/usr/loca/nagios/etc/objects/
    Sinon bravo pour ce billet.

  • gogogadjeto

    Déjà, merci pour tout nicolargo, tu fais du boulot merveilleux!

    Je voulais juste te demander, comment puis-je vérifier que cette configuration (modifier pour mes besoins) va-t-elle bel et bien fonctionner? Désolé, je suis novice avec nagios et c’est un véritable casse tête pour moi.
    Merci d’avance, bonne journée

  • @gogogadjeto: je ne comprends pas très bien ta question… Il faudr ajuste vérifier dans l’interface Web de Nagios si tu vois bien les machines que tu as déclaré dans ta configuration…

  • Nelmo

    Bonjour,

    Alors tout d’abord, un big Merci à toi pour avoir posé à plat les nouveauté en terme d’organisation de Nagios 3.

    Par conséquent, je souhaiterais te poser une question simple :

    Ayant à monitorer des téléphones IP, puis-je ajouter un fichier de conf de la même manière que pour networks … ?

    Cela me permettrai de bien « ranger » tout mon ptit monde.

    Cordialement,

    nelmo

  • @Nelmo – Oui et c’est même une très bonne idée 😉

  • Nelmo

    Petite question :

    Tu définis des services dans les templates ? Dans quel but ? ne pas les re-déclarer apres avoir déclarer un host ?

    Je suis un peu perdu, dois-je déclarer les services en dessous de l’host ou bien je crée des templates suivants les services que je souhaite monitorer ?

  • tatou

    slt merci pour ce exellent tuto j l ai suivit a lettre g installé nagios3.0.3 avec plugin1.4.13 sur ubuntu 8.04 mais sur une machine virtuel mais g un blém dan mon fichier nagios.conf il ya pas lé fichier host hostgroupe escalation service timeperiod…….
    sil vous plé g vréma besoin déd

  • tatou

    slt g besoin déd dans mon fichier d conf il m mank dé fichier com host hostgroup service…………

  • tatou

    slt je voudrais savoir comment on configure nagios pour avoir des notification d’alerte par sms

  • tatou

    slt aprés configuration de mon fichier hosts.cfg mais en compilant il mafiche lereur suivant
    invalide max_check_attempts value for host fat-desktop
    encor merci pour le tuto

  • @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

  • NikoLargué

    Bonjour,
    Pour les lignes :
    cfg_file=/usr/loca/nagios/etc/objects/commands.cfg
    cfg_file=/usr/loca/nagios/etc/objects/contacts.cfg
    cfg_file=/usr/loca/nagios/etc/objects/hostclients.cfg
    cfg_file=/usr/loca/nagios/etc/objects/hostservers.cfg
    cfg_file=/usr/loca/nagios/etc/objects/localhost.cfg
    cfg_file=/usr/loca/nagios/etc/objects/templates.cfg
    cfg_file=/usr/loca/nagios/etc/objects/timeperiods.cfg
    cfg_file=/usr/loca/nagios/etc/objects/network.cfg
    N’aurais-tu pas oublié un « L » à « /loca/ » ?

    Merci pour ton très bon tuto

  • @NikoLargué (pas mal comme pseudo): Heu oui…

  • Benjamin

    Petite question : A quoi te sert la ligne « PARENTS » dans tes fichiers de configurations pour tes équipements. en quoi cela va-t-il influencer Nagios ?

  • @Benjamin, le mot clés « parent » permet de définir une arborescence de ton réseau. Par exemple si toutes tes machines sont connectés a un switch il faut mettre ce switch comme « parent » des PC.
    Cela permet à Nagios d’arrêter de pooler les PC si le switch est en panne…

  • ulysse

    pour Configuration des objets, je ne trouve pas les fichiers
    /usr/local/nagios/etc/objects/hostclients.cfg
    cfg_file=/usr/local/nagios/etc/objects/network.cfg
    que je dois faire merci

  • Salut,

    Il s’agit du fichier resource.cfg et non resources.cfg.
    Très bons tutos sinon

  • bonjour Nicolas;
    j’ai installer nagios 3.1.2 et tous sembles fonctionner mais je parvient pas a ajouter les hostes . j’ai créer le fichiers network.cfg et lorsque je fnis de l’exécuter je faite /etc/init.d/nagios checkconfig j’ai des erreurs de configurations. quelqu’un poura til m’aider?

  • @romuald: je te conseille de poser ta question sur le forum

  • startrap

    Merci pour le tuto, cßest super. Par contre je bloque Ä ca stade, je n’arrive pas à savegarder les fichier *.cfg dans le dossier objet. Je ne peux donc rien faire. Pourtant je suis administrateur. Faut-il faire se mettre avec l’utilisateur Nagios? Car ça bloque quand je fais ça. Merci de m’aider

  • startrap

    C’est bon, j’ai trouvé.

  • doomer

    Salu, j’ai un gros problème avec Nagios. J’ai suivi à la lettre le tuto mais je n’arrive pas à voir apparaitre les nouveaux hotes dans Nagios, pourtant je les configure comme il faut dans hostclients.cfg. J’essais depuis deux semaines sans réponses. Je me demande si le fait que je sois sur une machine virtuelle change quelque chose?
    Merci d’avance.

    • chiboune

      @doomer c est la meme chose pour moi,j arrive pas a voir le pc a surveiller,,stp si tu peux me donne ton skype et ton msn j ai besoin de te porale urgent voila le mien amaterasu-9@hotmail.fr

  • chiboune

    slt a tous,moi ce qui m interesse est une video si c possible et pourquoi nagios3 est dans le repertoire etc/nagios3,,,,moi je veux supervise un pc windows svp comment faire pour que la machine s affiche sur le map nagios3 svp j ai un memoire a finir,,ou mettre la machien a surveiller,,

  • chekh

    j ai tapé la commande $USER1$=/usr/local/nagios/libexe
    résultat aucun fihier de ce type

  • maha

    bonjour

    j’ai installé nagios,centreon et cacti.
    dans l’interface de nagios, quand je clique sur le bouton qui va me diriger vers les graphes des hotes je reçoit ce message d’erreur: Error while connecting to the DB server

    qulequ’un peut m’aider?

  • abdouss

    salut Nicolargo pour ces information, pour moi c’est ma 1ère question dans ce forum bon je veux savoir si possible de supprimer l’authentification qui permet d’accedé vers la page web de nagios et si oui, comment ??.
    et je souhaite me répondre !!
    Merci d’avance
    Cordialement

    • C’est assez simple, il suffit de modifier le fichier de configuration d’Apache et de supprimer la section:

      AuthName « Nagios Access »
      AuthType Basic
      AuthUserFile /usr/local/nagios/etc/htpasswd.users
      Require valid-user

      Puis de relancer le serveur:

      # sudo apache2ctl restart

      • abdouss

        Salut NicoLargo merci pour ces informations.
        mais j’ai pas trouvé cette section dans le fichier /etc/apache2/apache2.conf
        Dans l’attente d’une réponse favorable.
        Merci d’avance.

        • Tu ne regardes pas au bon endroit. Le fichier de configuration de Nagios pour Apache est dans:

          /etc/apache2/conf.d/nagios.conf

        • abdouss

          Merci bcp Nicolargo mais j’ai un petit problème lorsque je veux accéder vers la page web de nagios j’ai rencontré un message voila : »It appears as though you do not have permission to view information for any of the hosts you requiested
          if you believe this is an error, check the HTTP server authentification requirement for accessing this CGI and check the authentification option in your CGI configuration file »
          je pense que c’est un problème des droits d’accées merci de me répondre.

          • Il suffit de mettre l’option use_authentication à 0 dans le fichier /usr/local/nagios/etc/cgi.cfg

            Tout est expliqué dans la documentation… (http://nagios.sourceforge.net/docs/3_0/configcgi.html). Je te conseille de faire des recherches par toi même pour résoudre ce genre de pb, c’est en cherchant que l’on apprend…

  • abdouss

    Merci beaucoup Monsieur Nicolargo pour toutes ces informations, très gentille de ta part.
    Oui effectivement! pour moi toujours j’ai fait des recherches sur Nagios
    merci beaucoup pour la conseille.

  • abdouss

    J’ai une question:
    J’ai réalisé une application JAVA d’envois des SMS via un Modeme 3G, bon je veux savoir si possible de relier cette application avec nagios pour envoyé des sms à l’administrateur en cas d’une alerte ??

  • ngamito

    salut Nico….beuh jai kelke souci avec mon nagios. aufaite c’est au nivo de l’interface graphique cad lorsque je clique sur le menu  » Map » se trouvant juste sur la partie de nagios, sa m’affiche ce message: « Not Found
    The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.
    Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 Server at 10.0.0.145 Port 80 ».
    help plizzzzzzz

  • marcellin

    comment creer network.cfg? merci

  • marcellin

    comment creer hostclients.cfg? j’ai ubuntu 9.10,j’ai utilisé le script d’installation. merci

  • marcellin

    comment creer hostclients.cfg? j’ai ubuntu 9.10 et j’ai utilisé le script d’installation.merci

  • Hassan ZARHOUN

    Bonjour,
    J’ai configuré NAGIOS pour superviser un serveur Windows, j’ai toutes les infos qu’il me faut sauf pour l’usage disk il me donne uniquement l’occupation du Disque local C: comment je fait pour avoir l’occupation des autres partitions (D:/ et E:/ )

  • angui

    salu nicolargo, j’ai installé fan et après ajout d’hotes, je proceder à l’ajoput de services pour chaque hotes.bizarement tous les services passent pour le serveur nagios. mais sur les deux pc windows declarer comme clients, les services affichent critical connection refused. cependant les services pig des deux machines marchent bien . merci d’avance

  • Rom

    Bonjour,

    J’ai installé Nagios sur un ubuntu 14.04 lts l’installation c’est bien passée et la remonté d’alerte fonctionne correctement par contre j’ai un petit souci lors de l’actualisation de l’interface web, a intervalle regulier lorsque j’actualise il ajoute des alerte en warning ou critical alors que le service tourne bien.

    Pouvez vous m’aider ?

    Je penses que cela viens des droits des dossiers

    Pouvez vous me donner la structure des droits des dossiers de Nagios ?

    D’avance merci

    Cordialement

    Romain

  • Hustler

    Bonjour , je suis novice sur le systeme linux et en ce qui concerne nagios . Je suis actuellement en stage dans une une entreprise et le responsable du service informatique nous a demander de nous documenter sur Nagios et c’est dans ce sens que j’ai decouvert ce blog qui d’ailleur m’a deja bcps aider car j’ai pu installer Nagios sur Ubuntu 12.. je suis actuellement bloque a la configuration de Nagios je suis dans un urgent besoin de tuto concernant la configuration de Nagios sachant que le reseau a superviser est compose de 100 postes( windows)4 switchs 3 routeurs un serveur physique (windows server) et 2 serveur virtuelle . Merci d’avance

    • Yacine Brahimi

      je te conseille fortement de voir ça https://cognatmaxime.files.wordpress.com/2015/…/pti_nagios-centreon.p…
      ça va beaucoup t’aider

      • Hustler

        merci Yacine de bien vouloir m’aider,
        mais il se trouve que ce lien ne fonctionne pas ..

      • Hustler

        Merci Yacine…

  • Pingback: Projet : Installation et configuration d’un outil de supervision : Nagios | Portfolio |()