You are on page 1of 8

Le but d'un tel programme est de surveiller les services et les machines se trouvant sous notre responsabilit.

Si un problme survient, le moniteur de supervision nous prvient (courriel, SMS, coup de tlphone, etc.)
ou peut entreprendre certaines actions (relancer un service, tuer un processus, demander un redmarrage, etc.).

Nagios : moniteur de supervision


################################ INSTALLER LE PAQUET NAGIOS ###############################
il est prfrable d'installer apache2 avant d'installer Nagios:
apt-get install apache2
apt-get install nagios3
Vous devriez avoir accs la page principale de Nagios une fois que vous avez introduit votre mot de passe
en consultant l'URL suivante,le login tant " nagiosadmin " : http://localhost/nagios3/
Login : nagiosadmin
passwd : siojjr

htpasswd -c /etc/nagios3/htpasswd.users <username>


Il faut galement donner les droits d'accs cet utilisateur en ditant le fichier /etc/nagios3/cgi.cfg
grep -n authorized /etc/nagio3/cgi.cfg
changer le "nagioadmin" au nom d'utilisateur que vous avez donner.
authorized_for_system_information = indiquent quels sont les utilisateurs pouvant voir l'tat des services
authorized_for_configuration_information = indiquent quels sont les utilisateurs pouvant voir la configuration de
serveur Nagios
authorized_for_system_commands = indiquent quels sont les utilisateurs pouvant excuter des commandes systmes au
travers de l'interface de Nagios

authorized_for_all_services = indiquent quels sont les utilisateurs pouvant voir l'tat de tout les services (par dfaut, on
voit uniquement les services pour lesquels l'utilisateur est une personne de contact)
authorized_for_all_hosts = idem que ci-dessus mais pour les htes (les machines)
authorized_for_all_service_commands = indiquent quels sont les utilisateurs pouvant excuter des commandes pour
tous les services (par dfaut, on peut excuter des commandes uniquement sur les services pour lesquels l'utilisateur est
une personne de contact)
authorized_for_all_host_commands = idem que ci-dessus mais pour les htes (les machines)
Garder dans le dossier " /etc/nagios3/ " que le fichier " nagios.cfg " (c'est le seul " .cfg " ncessaire dans ce dossier),
nous allons tout mettre dans un dossier que nous crerons pour l'occasion :
su mkdir /etc/nagios3/conf.d
Dplacer tous les fichiers " .cfg " (sauf " nagios.cfg " et " cgi.cfg ") dans ce dossier.
Afin que Nagios retrouve ces petits nous allons lui indiquer que le dossier conf.d est la
o se trouvent ces fichiers de configuration. Ajouter la ligne ci-dessous au fichier
" /etc/nagios3/nagios.cfg " (idalement aux alentours de la ligne 44, pour garder le tout cohrent).
cfg_dir=/etc/nagios3/conf.d/
Ensuite commenter toutes les lignes commenant par " cfg_file ".
Aprs chaque modification d'un fichier, faites un :
sudo nagios3 -v /etc/nagios3/nagios.cfg

############################### Configuration des priodes de temps #################################


Nous allons commencer par configurer les priodes de temps qui proccupe notre serveur.
Ces priodes de temps se configurent dans le fichier " /etc/nagios3/conf.d/timeperiods_nagios2.cfg " .
Vous remarquerez que certaines priodes de temps sont dj indiques dans le fichier
Ces priodes sont 24x7 qui signifie 24h/24h et 7j/7j ; workhours qui est l'horaire habituel de travail ;
ATTENTION ! ne pas commenter les priodes dj prsentes
Ces priodes peuvent tre reconfigures votre guise pour coller l'organisation de votre surveillance.
Par exemple, sur ce serveur de supervision, nous pouvons ajouter l'horaire service_open de la manire suivante :
nonworkhours qui dfinit l'horaire habituel de non-travail.
Ces priodes peuvent tre reconfigures votre guise pour
coller l'organisation de votre surveillance. Par exemple, sur ce serveur de supervision, nous pouvons ajouter l'horaire
service_open de la manire suivante :
define timeperiod{
timeperiod_name service_open
alias
Heures de service
monday
07:00-22:00
tuesday
07:00-22:00
wednesday
07:00-22:00
thursday
07:0
saturday
07:00-22:00
}

Les mots-cls utiliss pour la configuration d'une plage horaire se passent de commentaires.
Cet horaire indique les priodes d'activit de certains services.
Les dfinitions des plages horaires nous serviront dans la suite de la configuration.

Configuration des personnes de contacts


Les personnes de contacts sont les personnes physiques contacter en cas d'incident.
Quand un problme survient, Nagios va notifier ces personnes d'aprs les degrs de notification.
Les personnes de contacts peuvent se configurer dans le fichier
" /etc/nagios3/conf.d/contacts_nagios2.cfg " 3) et les entres ont un format similaire celui-ci :
define contact{
contact_name
ostaquet
alias
Oscar Staquetowski
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-service-by-email
host_notification_commands
notify-host-by-email
email
username@domaine.net
pager
+329999999999
}
Voici quoi servent les diffrents champs :
contact_name
=
pseudo de la personne de contact, ce pseudo sera utilis dans d'autres fichiers de
configuration
alias
=
nom complet de la personne de contact
service_notification_period
=
priode de temps durant laquelle le contact peut tre notifi d'un problme
qui survient pour un service. Les priodes sont dfinies dans le fichier
/etc/nagios3/timeperiods.cfg
host_notification_period =

priode de temps durant laquelle le contact peut tre notifi d'un problme
qui survient pour un hte (un serveur). Les priodes sont dfinies dans le
fichier /etc/nagios3/timeperiods.cfg.
service_notification_options = tats des services pour lesquels le contact doit tre notifi.
Les lettres qui suivent signifient :
- w : le service est en tat avertissement (warning).
- u : le service est en tat inconnu (unknown).
- c : le service est en tat critique (critical).
- r : le service est revenu dans un tat OK (recovery).
host_notification_options = tats des htes (machines) pour lesquels le contact doit tre notifi.
Les lettres qui suivent signifient :
- d : l'hte est teint (down).
- u : l'hte est injoingnable (unreachable).
- r : l'hte est nouveau accessible (recovery).
service_notification_commands = commandes utiliser pour notifier un tat pour un service.
Ces commandes sont dcrites dans le fichier /etc/nagios3/commands.cfg
host_notification_commands =

commandes utiliser pour notifier un tat pour un hte.

Ces commandes sont dcrites dans le fichier /etc/nagios3/commands.cfg


email email de la personne de contact.
http://nagios.sourceforge.net/docs/2_0/checkscheduling.html
pager = numro de pager pour la personne de contact ( utiliser aussi pour les notifications par SMS)
############################### Configuration des groupes de contacts ###############################
Les groupes de contacts se dfinissent dans le fichier " /etc/nagios3/conf.d/contactgroups.cfg "
Les groupes de contacts se dfinissent aussi dans le fichier " /etc/nagios3/conf.d/contacts_nagios2.cfg " (en fin de
fichier) et les entres ont un format ressemblant ceci :
define contactgroup{
contactgroup_name
admins-ubuntu
alias
Administrateurs machines Ubuntu
members
ostaquet,david,manu
}
Il n'est pas ncessaire d'expliquer les champs plus en dtail.

######################### Configuration des surveillance de services et d'htes #########################

La surveillance de services et d'htes s'articule autour de plusieurs fichiers de configuration et ces fichiers
sont tous lis les uns aux autres.
Pour utiliser un test de service il faut plusieurs choses :
un greffon ou plugin utilisable en ligne de commande (le nom commence par check_ ) ,
il est trs intressant de le tester via la ligne de commande pour voir ses arguments
Un objet Nagios dfinissant la commande utilisant le plugin prcdent
un objet Nagios dfinissant le service utilisant la commande prcdente
Pour rcapituler :
script shell chekcommands.cfg services.cfg
Remarque : Les explications concernant les diffrentes options sont disponibles sur votre serveur Nagios au travers de
l'interface web. En haut gauche de l'cran, il y a un lien Documentation qui mne directement la doc. Elle explique
exhaustivement les diffrents paramtres.
Notre exemple consiste en deux htes (un serveur mail et un serveur de fichier). Le serveur mail possde un service
SMTP et un service IMAP. Le serveur de fichier possde un service NFS. Ces deux htes sont connects sur un routeurswitch qui est le lien vers l'extrieur. Nous allons tester ces diffrents htes et services.
Les htes (par dfaut le fichier est /etc/nagios3/conf.d/localhost_nagios2.cfg)
define host{
use
generic-host
host_name
router
alias
Routeur vers exterieur - connexion internet
address
192.168.0.254
check_command
check-router-alive
}

define host{
use
generic-host
host_name
fileserver
alias
Serveur fichiers
address
192.168.0.10
check_command
check-host-alive
}
define host{
use
generic-host
host_name
mail
alias
Serveur mail
address
192.168.0.20
check_command
check-host-alive
}

####################################### Les groupes d'htes #######################################

Pour que les notifications soient effectives pour les htes, les htes doivent tre mis dans des groupes d'htes.
Dans ces groupes d'htes, un (ou plusieurs) groupe de contact est assign.
C'est--dire que si il y a un problme sur un hte et que le degr de notification est atteint,
les contacts du groupes d'htes sont notifis. Les groupes d'htes sont dfinis dans le fichier
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
Ici, nous allons dterminer deux groupes d'htes:
define hostgroup{
hostgroup_name connectique
alias
Routeurs, firewalls et gateway
contact_groups admins-router
members
router
}
define hostgroup{
hostgroup_name mail-server
alias
Serveurs de mails Ubuntu
contact_groups admins-ubuntu
members
mail1, mail2
}
Avec les groupes d'htes et les groupes de contacts,
on peut subdiviser les machines par zone gographique ou par fonctions.
De cette manire, on notifie ainsi le groupe de contact qui peut intervenir au plus vite.

######################################## Les services #############################################

L'avant dernire tape de configuration est de dfinir quels sont les services surveiller.

Ces services sont toujours attachs un hte ou a un groupe d'htes.


Les informations concernant les services sont contenues dans le fichier
/etc/nagios3/conf.d/generic-service_nagios2.cfg.
Rajouter :
define service{
use
generic-service
host_name
router
service_description
PING
contact_groups
admins-routers,admins-ubuntu
check_command
check_ping!100.0,20%!500.0,60%
}
define service{
use
generic-service
hostgroup_name
mail-server
service_description
SMTP
contact_groups
admins-ubuntu
check_command
check_smtp
flap_detection_enabled
0
; Flap detection is disabled for this service
}
define service{
use
generic-service
host_name
mail
service_description
IMAP
contact_groups
admins-ubuntu
check_command
check_imap
}
Ce qu'il faut noter au travers de ces quelques lignes est la manire dont on peut passer des paramtres aux commandes.
Dans la dfinition du service ping pour le routeur, on indique les diffrents arguments avec des ! (point d'exclamation).

Dans ce cas, cela signifie que l'on passe en tat warning lorsqu'on perd plus de 20% des paquets ou
si le temps de rponse est > 100ms. On indique galement que l'on passe en tat critical lorsqu'on perd plus de 60%
des paquets ou si le temps de rponse est > 500ms. Dans tous les cas il faut se rapporter a la dfinition
de la commande et tester le script pour voir comment il se comporte.
Les lignes :
normal_check_interval
max_check_attempts
notifications if any
retry_check_interval

5
3
1

; Do a check for this service every X minutes


; After X checks non OK , status will change from soft to hard and trigger
; If the status was not OK, redo a check for this service every X minutes

mritent peut-tre un peu d'attention. Rien de pire que les fausses alertes,
ici Nagios testera les services toutes les 5 minutes, si un des services est dans un statut non OK
(warning, critical, unknown) il va ressayer de le contacter une minute plus tard,
et ceci 3 fois de suite puis dclenchera l'alerte (envoi de mail, etc),
ds que le service rpond de nouveau OK Nagios 'rinitialise' les compteurs et reprend les checks sur l'intervalle
normale
(normal_check_interval).
Avantages :
On rduit les chances de fausse alerte : le service a t test 3 fois comme non OK.
Inconvnients :
On n'a pas d'alerte la seconde ou Nagios a dtect le problme.
############################# Dmarrage et rechargement de Nagios ################################
Pour dmarrer ou arrter Nagios, vous pouvez le faire en ligne de commande de la manire suivante :
sudo /etc/init.d/nagios3 start
sudo /etc/init.d/nagios3 stop
Pour recharger la configuration de Nagios (et en mme temps la tester), utilisez la commande suivante :
sudo /etc/init.d/nagios3 reload
Pour modifier les services surveills par Nagios en local, il faut aller dans le fichier
/usr/local/nagios/etc/objects/localhost.cfg
################################# LOGICIEL Agent de Nagios #####################################

Pour Windows NSClient++ peut etre utilis comme logiciel Agent


Sur le serveur check_nt et check_nrpe doivent tre installer pour pouvoir l'utiliser (apt-get install nagios-plugins-nt)

Lors de l'installation rentrer l'adresse IP du serveur Nagios, un mot de passe ainsi que des "modules" autiliser pour les
informations transmises au serveur
Fichier de configuration de NSClient:
C:\Program Files\NSClient++\NSC.ini
Pour vrifier si l'agent fonctionne rentrer cette commande:
/usr/local/nagios/libexec/check_nt -H <adresse-ip> -v CLIENTVERSION -p 12489 -s <mot-de-passe>
Remplacer les chevrons par l'Ip et le mot de passe.
Normalement cette valeur est retourn:
NSClient++ 0.3.9.328 2011-08-16
En cas de problme vrifi bien les pare-feu Linux et Windows, redmarr le service de NSClient++ et ressayer

Sous votre serveur Nagios ajouter l'hote dans hosts.cfg:


define host {
use generic-host
host_name <nom>
alias <nom de la machine Windows>
address <ip>
}