Ce
tutoriel développe la mise en place du logiciel de supervision
Nagios. Nous allons surveiller les hôtes
de la zone LOC et DMZ, toujours basé sur l'implantation du
Site.
Installation
des packages
|
|
apache2 |
apache2 |
Configuration de Nagios
Tout les fichiers de configuration se trouvent dans :
|
|
/etc/nagios/ |
/etc/nagios/ et /etc/nagios-plugins/config/ |
Editez le fichier de configuration principal de Nagios /etc/nagios/nagios.cfg
pour changer la variable suivante :
...
# DATE FORMAT OPTION
# This option determines how short dates are displayed. Valid options
# include:
# 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)
#
date_format=euro
...
Adaptez les paramètres suivants dans le fichier /etc/nagios/cgi.cfg :
...
#
Ajouter
la ligne suivante, elle sera expliquée plus
bas :
xedtemplate_config_file=/etc/nagios/hostextinfo.cfg
...
# AUTHENTICATION USAGE
# Demande à Nagios d'authentifier les visiteurs.
use_authentication=1
# DEFAULT USER
# Cette variable doit être commentée,
sinon tout le monde peut se connecter
# sans mot de passe.
#default_user_name=guest
# SYSTEM/PROCESS INFORMATION ACCESS
# Permet à l'utilisateur "nagiosadmin"
d'exécuter le fichier extinfo.cgi.
# Par défaut, personne ne peut visualiser ces informations sur le système.
# Pour ajouter un utilisateur, créez
son compte
et saisissez :
# authorized_for_system_information=nagiosadmin,arnofear
authorized_for_system_information=nagiosadmin
# CONFIGURATION INFORMATION ACCESS
# Permet de regarder les différentes informations
sur les machines,
# les services, les groupes, les commandes... Ces informations doivent être
# visibles par tous, il est possible de positionner ces variables comme ceci
# pour simplifier la gestion des droits d'accès :
# authorized_for_configuration_information=*
authorized_for_configuration_information=nagiosadmin
# SYSTEM/PROCESS COMMAND ACCESS
# Permet de lancer diverses commandes systèmes
et de processus pour Nagios.
# Cet accès est donc privilégié.
authorized_for_system_commands=nagiosadmin
# GLOBAL HOST/SERVICE VIEW ACCESS
# Donne accès aux informations sur les états,
les services et les machines
# supervisées. Cet accès doit être sans limite. Il est possible
de
# positionner ces variables comme ceci pour simplifier la gestion :
# authorized_for_all_services=*
# authorized_for_all_hosts=*
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
# GLOBAL HOST/SERVICE COMMAND ACCESS
# Donne accès à des envois de commandes
à tous les services, et à toutes
# les machines. Cet accès doit être restreint.
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
...
Configuration
d'Apache pour Nagios
Pour accéder à l'interface web de Nagios vous devez créer
(ou ajouter) un compte administrateur ou utilisateur pour éviter d'utiliser
le compte par défaut "guest".
|
|
[root@srv11
user]# htpasswd /etc/nagios/passwd nagiosadmin |
srv11:/home/user#
htpasswd /etc/nagios/htpasswd.users
visitor |
Définitions
des hôtes
Un hôte peut être un serveur, une station de travail, un périphérique,
ou un équipement présent sur votre réseau.
Editez le fichier /etc/nagios/hosts.cfg pour déclarer tout vos
hôtes :
#######################################
# HOST DEFINITIONS
# SYNTAX:
#######################################
#
Déclaration d'un modèle d'hôte générique qui
sera utilisé plusieurs fois.
# Vous pouvez en créer d'autres selon vos besoins.
define host{
; Nom de ce modèle d'hôte.
name generic-host
; Active les alertes.
notifications_enabled 1
; Active le gestionnaire d'évènements.
event_handler_enabled 1
; Active la détection de changement d'états.
flap_detection_enabled 1
; Process performance data
process_perf_data 1
; Retain status information across program restarts
retain_status_information 1
; Retain non-status information across program restarts
retain_nonstatus_information 1
; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
register 0
}
# Déclaration de l'hôte switch1
define host{
; On utilise les paramètres de l'hôte
générique.
use generic-host
; Nom de l'hôte.
host_name switch1
; Description de l'hôte.
alias Switch
Cisco LOC
; Son IP.
address 192.168.0.253
; La commande à utiliser pour le surveiller.
; La liste des commandes possible dépend des plugins installés.
; Elle se trouve en partie dans le fichier checkcommands.cfg
check_command check-host-alive
; C'est le nombre de fois que Nagios relancera
la commande de contrôle
; si celle-ci retourne un état différent de OK.
; Positionner cette valeur à 1 fera que Nagios générera
une alerte sans
; re-contrôler l'hôte.
max_check_attempts 10
; C'est l'intervalle écoulé en minute
avant d'alerter un contact quand l'hôte
; est toujours hors service ou inaccessible. Si vous mettez cette valeur
; à 0, Nagios n'alertera pas les contacts pour cet hôte, une seule
; notification sera émise.
notification_interval
60
; C'est la période durant laquelle les notifications
d'évènements,
; concernant cet hôte, peuvent être émises vers les contacts.
(24hx7j)
; Si un hôte est hors service, inaccessible ou se rétablit en dehors
; de la période de notification, aucune notification ne sera envoyée.
notification_period 24x7
; Définit quand les avertissements pour
cet hôte doivent être envoyés.
; Les options valides sont les suivantes :
; 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 = (none) aucune notification ne sera envoyée.
notification_options d,u,r
# Pour la version 2.x de Nagios il faut
ajouter la liste des contacts par hôte.
# contact_groups equipements-admins,linux-admins
}
# Déclaration de l'hôte srv1.alex.fr
define host{
; On utilise les paramètres de l'hôte
générique.
use generic-host
; Son hostname ou FQDN.
host_name srv1.alex.fr
; Description de l'hôte.
alias Serveur
DNS primaire
; Son IP.
address 192.168.0.1
; Ce serveur est connecté au Switch1. Il
a donc pour parent celui-ci.
parents switch1
check_command check_dns
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv5.alex.fr
define host{
; On utilise les paramètres de l'hôte
générique.
use generic-host
host_name srv5.alex.fr
alias Serveur
DNS secondaire et Intranet
address 192.168.0.5
parents switch1
; Nous allons surveiller les services DNS et HTTP.
; Nous indiquons ici une seule des commandes, car les commandes qui nous
; intéressent seront données dans le fichier services.cfg plus
bas.
check_command check_dns
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv2.alex.fr
define host{
use generic-host
host_name srv2.alex.fr
alias Serveur
OpenLDAP primaire
address 192.168.0.2
parents switch1
; Nous allons surveiller les services LDAP et SMB.
check_command check_ldap
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv6.alex.fr
define host{
use generic-host
host_name srv6.alex.fr
alias Serveur
OpenLDAP secondaire
address 192.168.0.6
parents switch1
; Nous allons surveiller les services LDAP et SMB.
check_command check_ldap
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv12.alex.fr
define host{
use generic-host
host_name srv12.alex.fr
alias Serveur
fichiers primaire
address 192.168.0.12
parents switch1
; Nous allons surveiller les services SMB, NFS
et usage disque dur par SNMP.
check_command check_disk_smb
max_check_attempts 10
notification_interval
480
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv7.alex.fr
define host{
use generic-host
host_name srv7.alex.fr
alias Serveur
impression
address 192.168.0.7
parents switch1
; Nous allons surveiller le service CUPS.
check_command check_tcp
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte printer1
define host{
use generic-host
host_name printer1
alias Imprimante
HP 1
address 192.168.0.18
parents switch1
check_command check_hpjd
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups printer-admins,equipements-admins,linux-admins
}
# Déclaration de l'hôte fw2.alex.fr
define host{
use generic-host
host_name fw2.alex.fr
alias Routeur
firewall 2
address 192.168.0.8
parents switch1
; Nous allons surveiller la connexion TCP.
check_command check_tcp
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte switch2
define host{
use generic-host
host_name switch2
alias Switch
Cisco DMZ
address 192.168.1.200
; Ce switch se trouve derrière le FW2. Il
est donc enfant de celui-ci.
parents fw2.alex.fr
check_command check-host-alive
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups equipements-admins,linux-admins
}
# Déclaration de l'hôte srv3.dmz.alex.fr
define host{
use generic-host
host_name srv3.dmz.alex.fr
alias Serveur
SMTP et POP3
address 192.168.1.3
; Ce serveur se trouve derrière le switch2.
Il est donc enfant de celui-ci.
parents switch2
; Nous allons surveiller les services SMTP et POP3.
check_command check_smtp
max_check_attempts 10
notification_interval
60
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv9.dmz.alex.fr
define host{
use generic-host
host_name srv9.dmz.alex.fr
alias Serveur
de sauvegarde DMZ
address 192.168.1.2
parents switch2
; Nous allons surveiller l'espace disque par SNMP.
check_command snmp_disk
max_check_attempts 10
notification_interval
480
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
# Déclaration de l'hôte srv4.dmz.alex.fr
define host{
use generic-host
host_name srv4.dmz.alex.fr
alias Serveur
Proxy DMZ
address 192.168.1.4
parents switch2
; Nous allons surveiller le service HTTP à
travers le Proxy.
check_command check_squid
max_check_attempts 10
notification_interval
480
notification_period 24x7
notification_options d,u,r
# contact_groups linux-admins
}
Définitions
des services
Le terme "service" peut s'appliquer à un service tel que POP,
SMTP, HTTP... ou bien tout autre type de mesure associé à l'hôte
(temps de réponse à un ping, nombre d'utilisateurs connectés,
utilisation des disques).
Editez le fichier /etc/nagios/services.cfg :
#######################################
# SERVICE DEFINITIONS
# SYNTAX:
#######################################
#
Déclaration d'un modèle de service générique qui
sera utilisé plusieurs fois.
define service{
name generic-service
; Active la vérification des services actifs.
active_checks_enabled 1
; Active la vérification des services passifs.
passive_checks_enabled 1
; Il est conseillé de laisser activé
ce paramètre pour des raisons de performance.
parallelize_check 1
; We should obsess over this service (if necessary)
obsess_over_service 1
; Déactive le contrôle de validité
des données.
check_freshness 0
; Active le service d'avertissements.
notifications_enabled 1
; Active le gestionnaire d'évènements.
event_handler_enabled 1
; Active la détection de changement d'états.
flap_detection_enabled 1
; Process performance data
process_perf_data 1
; Retain status information across program restarts
retain_status_information 1
; Retain non-status information across program restarts
retain_nonstatus_information
1
; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
register 0
}
# Déclaration du service à surveiller
pour l'hôte switch1
define service{
;
On utilise les paramètres du service
générique.
use generic-service
;
Nom de l'hôte.
host_name switch1
;
Description du service à
surveiller.
service_description Ping
du switch LOC
; Si le service à
surveiller n'est pas important mettre à
1.
is_volatile 0
;
C'est la période durant laquelle les vérifications
actives de ce service
; peuvent être faites (24hx7j). Voir
le fichier timeperiods.cfg
check_period 24x7
;
C'est le nombre de fois que Nagios relancera la commande de contrôle
du
; service si celle-ci retourne un état différent
de OK.
; Positionner cette valeur à 1 fera que Nagios
générera une alerte sans
; re-contrôler ce
service.
max_check_attempts 3
;
C'est l'intervalle écoulé en minute entre chaque
vérifications standards.
normal_check_interval
5
; Pareil que l'option précédente
mais pour une autre tentative.
retry_check_interval 1
;
Indique le nom du groupe à contacter en cas de
problèmes.
contact_groups equipements-admins
;
C'est l'intervalle écoulé en minute avant d'alerter un
contact quand le
; service ne répond plus ou est
inaccessible. Si vous mettez cette valeur
; à 0, Nagios
n'alertera pas les contacts pour ce service, une seule
;
notification sera émise.
notification_interval
240
; C'est la période durant
laquelle le gestionnaire d'évènements peut
; envoyer
des avertissements.
notification_period 24x7
;
Définit quand les avertissements pour ce service doivent être
envoyés.
; Les options valides sont les suivantes :
; 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 CRITICAL
; r =
envoi de la notification pour un retour à la normale (état
OK).
;
n = (none) aucune notification ne sera
envoyée.
notification_options c,r
;
La commande à utiliser pour le surveiller.
; La liste des
commandes possible dépend des plugins installés.
; Voir le chapitre "Définition des
commandes" pour plus de détails.
check_command check_ping!100.0,20%!500.0,60%
}
#
Déclaration du service à surveiller pour l'hôte
srv1.alex.fr
define service{
;
On utilise les paramètres du service générique.
use generic-service
; Son hostname ou FQDN.
host_name srv1.alex.fr
; Description du service à surveiller.
service_description Requetes
DNS
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_dns
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv5.alex.fr
define service{
use generic-service
host_name srv5.alex.fr
service_description Requetes
DNS
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_dns
}
# Déclaration n°2 du service à
surveiller pour l'hôte srv5.alex.fr
define service{
use generic-service
host_name srv5.alex.fr
service_description Requetes
HTTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_http
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv2.alex.fr
define service{
use generic-service
host_name srv2.alex.fr
service_description Connexions
LDAP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
; Les arguments de la commande sont séparés
par des points d'exclamation.
check_command check_ldap!dc=alex,dc=fr!389
}
# Déclaration n°2 du service à
surveiller pour l'hôte srv2.alex.fr
define service{
use generic-service
host_name srv2.alex.fr
service_description Connexions
TCP SMB
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!139
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv6.alex.fr
define service{
use generic-service
host_name srv6.alex.fr
service_description Connexions
LDAP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_ldap!dc=alex,dc=fr!389
}
# Déclaration n°2 du service à
surveiller pour l'hôte srv6.alex.fr
define service{
use generic-service
host_name srv6.alex.fr
service_description Connexions
TCP SMB
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!139
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv12.alex.fr
define service{
use generic-service
host_name srv12.alex.fr
service_description Connexions
sur un volume SMB
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
240
notification_period 24x7
notification_options w,u,c,r
check_command check_disk_smb!pdc-linux!arnofear!arnofear!passwd
}
# Déclaration n°2 du service à
surveiller pour l'hôte srv12.alex.fr
define service{
use generic-service
host_name srv12.alex.fr
service_description Connexions
NFS
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
240
notification_period 24x7
notification_options w,u,c,r
check_command check-nfs
}
# Déclaration n°3 du service à
surveiller pour l'hôte srv12.alex.fr
define service{
use generic-service
host_name srv12.alex.fr
service_description Usage
Disque dur par SNMP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
240
notification_period 24x7
notification_options w,u,c,r
check_command snmp_disk!public!1!1!40!45!46!100!
}
# Déclaration n°4 du service à
surveiller pour l'hôte srv12.alex.fr
define service{
use generic-service
host_name srv12.alex.fr
service_description Charge
CPU par SNMP
is_volatile 0
; Vérification de ce service pendant les heures
travaillées.
; Voir le fichier timeperiods.cfg
check_period workhours
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period workhours
notification_options w,u,c,r
check_command snmp_cpustats!public
}
# Déclaration n°5 du service à
surveiller pour l'hôte srv12.alex.fr
define service{
use generic-service
host_name srv12.alex.fr
service_description Utilisation
RAM par SNMP
is_volatile 0
check_period workhours
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period workhours
notification_options w,u,c,r
check_command snmp_mem!public!50000!90000
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv7.alex.fr
define service{
use generic-service
host_name srv7.alex.fr
service_description Connexions
CUPS
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!631
}
# Déclaration du service à surveiller pour
l'hôte printer1
define service{
use generic-service
host_name printer1
service_description Connexion
imprimante HP 1
is_volatile 0
check_period workhours
max_check_attempts 4
normal_check_interval
5
retry_check_interval 1
contact_groups printer-admins
notification_interval
960
notification_period workhours
notification_options c,r
check_command check_hpjd
}
# Déclaration du service à surveiller pour
l'hôte fw2.alex.fr
define service{
use generic-service
host_name fw2.alex.fr
service_description Requetes
TCP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
240
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!22
}
# Déclaration du service à surveiller pour
l'hôte switch2
define service{
use generic-service
host_name switch2
service_description Ping
du switch DMZ
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups equipements-admins
notification_interval
240
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
# Déclaration n°1 du service à
surveiller pour l'hôte srv3.dmz.alex.fr
define service{
use generic-service
host_name srv3.dmz.alex.fr
service_description Connexions
SMTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
3
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_smtp
}
# Déclaration n°2 du service à
surveiller pour l'hôte srv3.dmz.alex.fr
define service{
use generic-service
host_name srv3.dmz.alex.fr
service_description Connexions
POP3
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
check_command check_pop
}
# Déclaration du service à surveiller pour
l'hôte srv4.dmz.alex.fr
define service{
use generic-service
host_name srv4.dmz.alex.fr
service_description Connexions
Proxy DMZ
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period 24x7
notification_options w,u,c,r
; J'interroge le serveur HTTP de la DMZ en passant par
le Proxy avec une URL
; contenant /cgi-bin/ pour ne pas recevoir une réponse du cache mais
; bien du serveur Apache.
check_command check_squid!3128!http://www.alex.fr/cgi-bin/stats.pl
}
# Déclaration du service à surveiller pour
l'hôte srv9.dmz.alex.fr
define service{
use generic-service
host_name srv9.dmz.alex.fr
service_description Usage
Disque dur par SNMP
is_volatile 0
; Vérification de ce service pendant les heures
non travaillées.
check_period nonworkhours
max_check_attempts 3
normal_check_interval
5
retry_check_interval 1
contact_groups linux-admins
notification_interval
120
notification_period nonworkhours
notification_options w,u,c,r
check_command snmp_disk!public!1!1!40!45!46!100!
}
Définitions des contacts
Une définition de contact s'applique à la personne physique, qui
doit être contactée en cas de problèmes sur le réseau.
Editez le fichier /etc/nagios/contacts.cfg :
#######################################
# CONTACT DEFINITIONS
# don't forget to make sure these point to a real person/alias!
#######################################
# 'nagios' contact definition
define
contact{
; Définit les paramètres du contact
nagios.
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,notify-by-epager
; Envoi par mail des alertes concernant les services.
service_notification_commands
notify-by-email
# host_notification_commands host-notify-by-email,notify-by-epager
; Envoi par mail des alertes concernant les commandes.
host_notification_commands host-notify-by-email
email arnofear@alex.fr
# pager pagerarnofear@alex.fr
}
Définitions
des groupes d'hôtes
Les groupes d'hôtes permettent de regrouper un ou plusieurs hôtes
pour simplifier les notifications. Chaque hôte que vous définissez
doit être membre d'au moins un groupe d'hôtes; même si c'est
le seul hôte du groupe. Un hôte peut faire partie de plusieurs groupes.
Quand un hôte est hors service, inaccessible, ou se rétablit, Nagios
recherche les groupes dont cet hôte fait partie, en extrait chaque groupe
de contacts, et avertit tous les contacts associés à ces groupes
de contacts.
Editez
le fichier /etc/nagios/hostgroups.cfg :
#######################################
# HOST GROUP DEFINITIONS
# SYNTAX:
#######################################
# Définition du groupe d'hôtes 'linux-boxes'.
define hostgroup{
hostgroup_name linux-boxes
alias Linux
Servers
# Pour la version 2.x de Nagios il ne faut
pas mettre la ligne contact_groups
contact_groups linux-admins
; Liste des hôtes membres de ce groupe.
members srv1.alex.fr,
srv2.alex.fr, srv5.alex.fr, srv6.alex.fr, srv7.alex.fr, srv12.alex.fr, srv3.dmz.alex.fr,
srv4.dmz.alex.fr, srv9.dmz.alex.fr, fw2.alex.fr
}
# Définition du groupe d'hôtes 'printers'.
define hostgroup{
hostgroup_name printers
alias Printers
# Pour la version 2.x de Nagios il ne faut
pas mettre la ligne contact_groups
; Groupes à contacter.
contact_groups printer-admins,equipements-admins,linux-admins
members printer1
}
# Définition du groupe d'hôtes 'equipements'.
define hostgroup{
hostgroup_name equipements
alias Equipements
# Pour la version 2.x de Nagios il ne faut
pas mettre la ligne contact_groups
contact_groups equipements-admins,linux-admins
members switch1,
switch2
}
Définitions
du contact par groupes
Editez
le fichier /etc/nagios/contactgroups.cfg :
#######################################
# CONTACT GROUP DEFINITIONS
# SYNTAX:
#######################################
# 'linux-admins' contact group definition
define contactgroup{
contactgroup_name linux-admins
alias Linux
Administrators
members nagios
}
# 'printer-admins' contact group definition
define contactgroup{
contactgroup_name printer-admins
alias Printer
Administrators
members nagios
}
# 'equipements-admins' contact group definition
define contactgroup{
contactgroup_name equipements-admins
alias Equipements
Administrators
members nagios
}
Définitions
des commandes
Les commandes peuvent être des contrôles ou notifications de service
et d'hôtes. Les commandes peuvent contenir des macros, mais vous devez
vous assurer de n'utiliser que des macros "valides" dans le contexte
de la commande.
Les commandes utilisent les scripts et les binaires fournit dans le package
plugins de Nagios. Vous pouvez créer vos propres scripts si vous ne trouvez
pas de plugin adaptez à vos besoins.
Pour connaître la syntaxe d'un plugin, il suffit de lui passer l'option
-h :
srv11:/home/user# /usr/lib/nagios/plugins/check_http
-h
...
Usage: check_http -H <vhost> | -I <IP-address> [-u <uri>]
[-p <port>]
[-w <warn time>] [-c <critical time>] [-t <timeout>] [-L]
[-a auth] [-f <ok | warn | critcal | follow>] [-e <expect>]
[-s string] [-l] [-r <regex> | -R <case-insensitive regex>]
[-P string] [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N]
[-M <age>] [-A string] [-k string]
...
Editez
le fichier /etc/nagios/checkcommands.cfg :
# La commande 'check_disk_smb' n'existe pas par
défaut, mais le plugin est
# présent dans /usr/lib/nagios/plugins/
# Il suffit de donner un nom à la commande et de saisir les options en
# rapport avec le plugin. On récupère les données passées
dans le fichier
# services.cfg dans des variables de type $ARG1$
define command{
command_name check_disk_smb
command_line /usr/lib/nagios/plugins/check_disk_smb
-H $ARG1$ -s $ARG2$ -u $ARG3$ -p $ARG4$
}
|
Sous
Mandrake il n'y a pas beaucoup de commandes deja écrites.
Vous pouvez vérifier celles qui vous manque, par rapport à
votre configuration, en testant Nagios : |
Définitions
des dépendances de service
Les dépendances de service sont une fonctionnalité avancée
de Nagios qui permet de supprimer des notifications et des contrôles actifs,
à partir de l'état d'un ou plusieurs services. Elles sont optionnelles
et sont principalement destinées aux utilisateurs avertis qui ont des
configurations de supervisions complexes. (/etc/nagios/dependencies.cfg).
Définitions de l'escalade des
services
La définition de l'escalade pour un service est complètement optionnelle,
elle est utilisée pour notifier un ou plusieurs contacts différents
de la 1ere notification. (/etc/nagios/escalations.cfg).
Définitions
des informations sur les hôtes
Ce
fichier est optionnel mais apporte des icônes et des informations sur
les machines.
Créez
le fichier /etc/nagios/hostextinfo.cfg :
define hostextinfo {
host_name srv1.alex.fr
icon_image mandrake.png
vrml_image mandrake.png
statusmap_image mandrake.png
}
define hostextinfo {
host_name srv2.alex.fr
icon_image linux40.png
vrml_image linux40.png
statusmap_image linux40.png
}
define hostextinfo {
host_name srv5.alex.fr
icon_image debian.png
vrml_image debian.png
statusmap_image debian.png
notes_url http://192.168.0.5
}
define hostextinfo {
host_name srv6.alex.fr
icon_image linux40.png
vrml_image linux40.png
statusmap_image linux40.png
}
define hostextinfo {
host_name srv7.alex.fr
icon_image linux40.png
vrml_image linux40.png
statusmap_image linux40.png
}
define hostextinfo {
host_name srv12.alex.fr
icon_image debian.png
vrml_image debian.png
statusmap_image debian.png
}
define hostextinfo {
host_name printer1
icon_image HPlj4550p.png
vrml_image HPlj4550p.png
statusmap_image HPlj4550p.png
}
define hostextinfo {
host_name fw2.alex.fr
icon_image debian.png
vrml_image debian.png
statusmap_image debian.png
}
define hostextinfo {
host_name switch1
icon_image switch40.png
vrml_image switch40.png
statusmap_image switch40.png
icon_image_alt Switch LOC
}
define hostextinfo {
host_name switch2
icon_image switch40.png
vrml_image switch40.png
statusmap_image switch40.png
icon_image_alt Switch DMZ
}
define hostextinfo {
host_name srv3.dmz.alex.fr
icon_image mandrake.png
vrml_image mandrake.png
statusmap_image mandrake.png
}
define hostextinfo {
host_name srv4.dmz.alex.fr
icon_image debian.png
vrml_image debian.png
statusmap_image debian.png
}
define hostextinfo {
host_name srv9.dmz.alex.fr
icon_image debian.png
vrml_image debian.png
statusmap_image debian.png
}
Interface
web de Nagios
|
|
Vous
pouvez vérifier la synthax de la configuration de Nagios
avant de lancer le daemon : |
srv11:/home/user#
/etc/init.d/nagios start |
Tapez
dans votre navigateur l'adresse :
|
|
https://srv11.alex.fr/admin/nagios/ |
http://srv11.alex.fr/nagios/ ou https://srv11.alex.fr/nagios/ |
Le
menu Tactical Overview :
C'est la vue synthétique où
l'on trouve l'essentiel des informations importantes sur le bon
fonctionnement du système supervisé.
Le
menu Service Detail :
Liste des équipements par ordre
alphabétique avec leurs services supervisés.
Le
menu Host Detail :
Cette page résume l'état global
des machines de votre réseau, avec leurs états (ACTIF,
EN PANNE ...).
Le
menu Status Overview :
Cette page affiche tous les hôtes par
groupes, cela permet une vue rapide sur un sous-ensemble de votre
parc.
Le
menu Status Map :
Cette page représente l'implantation de
vos hôtes sous plusieurs formes graphiques. Vous avez un aprecu
de la topologie de vos hôtes en 2D ou en 3D pour le fun
(installez un plugin VRML).
Le
menu Scheduling Queue :
Cette page liste les services qui vont
être testés prochainement. C'est ici que vous pouvez
demander le test d'un service manuellement (l'icone montre au
poignet), suite à une modification de votre configuration par
exemple.
Configuration
d'un agent SNMP
Si
vous souhaitez connaître l'espace disque, l'état des
différentes ressources et bien d'autres informations encore
sur des machines distantes depuis le superviseur Nagios, il faut que
vous installiez un agent SNMP. (vous pouvez utiliser des agents
Nagios à la place : NRPE et NSCA mais cela revient à
installer autant de superviseurs Nagios que d'hôtes à
intérroger !)
|
|
net-snmp-mibs-5.1.2-6mdk |
snmpd_5.1.2-6.1_i386.deb |
Configurez
/etc/snmp/snmpd.conf :
#
#
PLEASE: read the snmpd.conf(5) manual page as
well!
#
#######################################
# Access
Control
#######################################
#
# First,
map the community name (COMMUNITY) into a security
name:
# Security
name Source Community
com2sec local localhost private
com2sec mynetwork 192.168.0.0/16 public
#
Second, map the security names into group names:
# Security
model Security name
group MyROSystem
v1 local
group MyROSystem v2c local
group
MyROSystem usm local
group
MyRWGroup v1 local
group
MyRWGroup v2c local
group
MyRWGroup usm local
group
MyROGroup v1 mynetwork
group
MyROGroup v2c mynetwork
group
MyROGroup usm mynetwork
# Third,
create a view for us to let the groups have rights
to:
# incl/excl
subtree mask
view
all included .1 80
view
system included .iso.org.dod.internet.mgmt.mib-2.system
#
Finally, grant the 2 groups access to the 1 view with different
#
write permissions:
# context
sec.model sec.level match read write
notif
access MyROSystem "" any noauth exact system
none none
access
MyROGroup "" any noauth exact all none none
access
MyRWGroup "" any noauth exact all all none
#######################################
#
System contact
information
#######################################
syslocation
Alex, France
syscontact Root <root@alex.fr>
# Example
output of snmpwalk:
# snmpwalk -v 1 -c public 192.168.1.2
system
#######################################
#
Process checks.
#######################################
# The
following are examples of how to use the agent to check for
#
processes running on the host. The syntax looks something like:
#
#
proc NAME [MAX=0] [MIN=0]
#
# NAME: the name of the process
to check for. It must match
# exactly (ie, http will not
find httpd processes).
# MAX: the maximum number allowed to be
running. Defaults to 0.
# MIN: the minimum number to be
running. Defaults to 0.
#
# Examples:
#
# Make
sure mountd is running
#proc mountd
# Make sure at least
one sendmail, but less than or equal to 10 are running.
#proc
sendmail 10 1
# A snmpwalk of the prTable would look
something like this:
# snmpwalk -v 1 -c public 192.168.1.2
.1.3.6.1.4.1.2021.2
#######################################
#
Executables/scripts
#######################################
#
#
You can also have programs run by the agent that return a single
#
line of output and an exit code. Here are two examples.
#
#
exec NAME PROGRAM [ARGS ...]
#
# NAME: A generic name.
#
PROGRAM: The program to run. Include the path!
# ARGS:
optional arguments to be passed to the program
# a simple
hello world
#exec echotest /bin/echo hello world
# Run a
shell script containing:
#
# #!/bin/sh
# echo hello world
#
echo hi there
# exit 35
#
# Note: this has been
specifically commented out to prevent
# accidental security holes
due to someone else on your system writing
# a /tmp/shtest before
you do. Uncomment to use it.
#
#exec shelltest /bin/sh
/tmp/shtest
# Example output of snmpwalk:
# snmpwalk -v 1
-c public 192.168.1.2
.1.3.6.1.4.1.2021.8
#######################################
#
disk checks
#######################################
#
# The
agent can check the amount of available disk space, and make
#
sure it is above a set limit.
# disk PATH
[MIN=DEFDISKMINIMUMSPACE]
#
# PATH: mount path to the disk in
question.
# MIN: Disks with space below this value will have the
Mib's errorFlag set.
# Default value =
DEFDISKMINIMUMSPACE.
# Check the / partition and make sure it
contains at least 10 megs.
disk / 10000
# Example
output of snmpwalk:
# snmpwalk -v 1 -c public 192.168.1.2
.1.3.6.1.4.1.2021.9
#######################################
#
load average checks
#######################################
#
#
load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE]
[15MAX=DEFMAXLOADAVE]
#
# 1MAX: If the 1 minute load average
is above this limit at query
# time, the errorFlag will be
set.
# 5MAX: Similar, but for 5 min average.
# 15MAX:
Similar, but for 15 min average.
# Check for loads:
load 12
14 14
# Example output of snmpwalk:
# snmpwalk -v 1 -c
public 192.168.1.2 .1.3.6.1.4.1.2021.10
Source
: http://archil.nerim.net/nagios/index.html
Copyright © 04/02/2004, Arnofear
![]() |
Ce document est publié sous licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique : http://creativecommons.org/licenses/by-nc-sa/3.0/deed.fr |