Structure des fichiers de configuration de Nagios 3
![]()
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.







Twitter:
Rss:
Commentaires (de mes chers lecteurs):
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.
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…
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
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 ?
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
slt g besoin déd dans mon fichier d conf il m mank dé fichier com host hostgroup service…………
slt je voudrais savoir comment on configure nagios pour avoir des notification d’alerte par sms
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
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…
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…
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
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
C’est bon, j’ai trouvé.
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.
@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
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,,
j ai tapé la commande $USER1$=/usr/local/nagios/libexe
résultat aucun fihier de ce type
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?
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
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
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…
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.
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 ??
Oui sans problème, tu peux t’inspirer de ce billet:
http://blog.nicolargo.com/2008/11/notifications-nagios-par-sms.html
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
comment creer network.cfg? merci
comment creer hostclients.cfg? j’ai ubuntu 9.10,j’ai utilisé le script d’installation. merci
comment creer hostclients.cfg? j’ai ubuntu 9.10 et j’ai utilisé le script d’installation.merci