Vous êtes sur la page 1sur 55

Nagios

ALLOVON Olivier
DEVES Nicolas
MOULIN Yoann
ROGER Rémi
SAUVAJON Brice
Plan
n Présentation de l’outil
n Les fichiers de configuration
n Les plugins
n Nagios et SNMP
n Etude de cas et cahier des charges
Présentation de Nagios

n Fonctionnement
n Interface
n Installation
Historique de Nagios
n Explosion des systèmes d’informations
vers le milieu des années 90.
n Décentralisation et baisse des coûts des
systèmes d’informations
Ø Besoin de supervision de ces nouveaux
systèmes.
Ø Naissance de Nagios en 1999 (license GPL)
Fonctionnement
Fonctionnement
Quelques plugins par catégorie:
n Equipement
n Test de l’espace disque disponible
n Charge du système en temps réel
n Test du Swap disque
n Monitoring de température
n Réseaux-protocoles
n Applicatifs
n Services
n Clients
Fonctionnement
Quelques plugins par catégorie:
n Equipement

n Réseaux-protocoles
n Vérifie si un hôte est vivant sur le réseau (ICMP)
n Taux de transfert d’un routeur ou switch
n Test des réseaux NetWare
n Test de la couche Transport (UDP)
n Applicatifs
n Services
n Clients
Fonctionnement
Quelques plugins par catégorie:
n Equipement

n Réseaux-protocoles

n Applicatifs
n Encapsulation de requête en utilisant SSH
comme support
n Test des serveurs Radius
n Services
n Clients
Fonctionnement
Quelques plugins par catégorie:
n Equipement

n Réseaux-protocoles

n Applicatifs

n Services
n Vérification de l’état de serveurs :
n DNS
n FTP
n Pop/Imap…
n Clients
Fonctionnement
Quelques plugins par catégorie:
n Equipement

n Réseaux-protocoles

n Applicatifs

n Services

n Clients

n Valide le bon fonctionnement des clients Nagios


n Test des serveurs et client NT
Fonctionnement
Possibilités de NAGIOS :
n Monitoring à distance à travers un

firewall.
n Interface web

n Il est possible de définir plusieurs

serveurs esclaves qui prennent le relais


si le serveur maître tombe.
Interface
Interface
Interface
Interface
Interface
Interface
Interface
Interface
Interface
Installation
n Système Unix (portage sur d’autre
système possible)
n Compilateur C
n Compilation des binaires / package
Debian
n Nécessité d’un serveur apache(ou
autre) pour une interface web
n TCP/IP doit être configuré
Fichiers de configuration
Mode Configuration
n Représentation de type Objet
n Attribut
n Méthode
n Dépendance entres les Objets
n 1 Fichier pour chaque type d'objet
Configuration de Nagios
n On remplit un certain nombre de fichiers de
configuration:
n Fichier contact.cfg
n Fichier contactgroups.cfg
n Fichier host.cfg
n Fichier hostgroups.cfg
n Fichier services.cfg
n Fichier timeperiods.cfg
n Fichier command.cfg
n Fichier checkcommand.cfg
n Fichier dependencies.cfg
n Fichier escalations.cfg
Arbre de dépendance
Fichier nagios/contacts.cfg.
n Un contact définit une personne define contact
à prévenir dans les cas ou un {
« reporting » est demandé. contact_name ROOT
n On définit alias NAGIOS ADM
n le nom du contact (identifiant service_notification_period 24x7
pour faire référence à ce host_notification_period 24x7
contact dans les autres fichiers) service_notification_options w,u,c,r
n son alias host_notification_options d,u,r
n les périodes de notification par service_notification_commands
défaut notify-by-email,notify-by-
n Les méthodes de notification epager
par défaut host_notification_commands host-
n les éléments nécessaires pour notify-by-email,host-notify-
communiquer avec ce contact by-epager
email root@root.fr
pager root@root.fr
}
Fichier nagios/contactgroups.cfg.
n Un groupe de contacts define contactgroup
permet de regrouper un {
ou plusieurs contacts contactgroup_name
pour émettre des GrContact1
notifications.
n On définira pour chaque alias Groupe Numéro 1
groupe créé : members ROOT,USR1
n un nom de groupe (qui }
permettra d'identifier le
groupe dans les autres
fichiers)
n un alias
n les membres du groupe
(définis dans contact.cfg)
Fichier nagios/hosts.cfg.
n Une définition d'hôte s'applique define host
à un serveur "physique", une {
station de travail, un use modèle1
périphérique, un équipement,
qui se trouve sur votre réseau. host_name machine1
n On le définit par: alias MaMachine
n le modèle à utiliser address 127.0.0.1
n le nom de la machine (pour y check_command commande1
faire référence dans les fichiers max_check_attempts 20
de configuration)
n un alias notification_interval 60
n l'adresse IP de la machine notification_period 24x7
n la commande à exécuter pour notification_options d,u,r
vérifier l’accessibilité de la }
machine (définie dans
nagios/checkcommands.cfg)
n les paramètres de notification
Fichier nagios/hostgroups.cfg
n Un groupe d'hôtes permet de define hostgroup
regrouper un ou plusieurs {
hôtes pour simplifier les hostgroup_name GrMachine1
notifications. alias Groupe 1 de machines
n On définira ici pour chaque contact_groups GrContact1
groupe créé : members Machine1,
n un nom de groupe
Machine2
(permettant d'identifier le }
groupe dans les autres
fichiers)
n un alias
n les groupes de contacts à y
associer
n une liste de machines à
associer au groupe
Fichier nagios/services.cfg
n Un service identifie une ressource define service
ou un service à surveiller sur une {
machine use generic-service
n On définit: host_name Machine1
n le modèle à utiliser service_description PING
n l'identifiant de la machine concernée is_volatile 0
n le nom du service voulu check_period 24x7
n les paramètres liés à l’exécution de max_check_attempts 3
la vérification du service normal_check_interval 5
n le groupe de contact concerné par retry_check_interval 1
les notifications contact_groups GrContact1
n les paramètres de notification notification_interval 240
n la commande à exécuter pour notification_period 24x7
vérifier le bon fonctionnement du
service (avec ses arguments) notification_options c,r
check_command
check_ping!100.0,20%!500.0,60
%
}
Les options
n Intervalles de temps : minutes
n Options de notification
n Pour un service :
n w = envoi de la notification pour un état WARNING
n u = envoi de la notification pour un état UNKNOWN
n r = envoi de la notification pour le retour à la normale
n n (none)
n Pour un hôte :
n d = envoi de la notification pour un état DOWN
n u = envoi de la notification pour un état UNREACHABLE
n r = envoi de la notification pour le retour à la normale
n n (none)
Fichier nagios/timeperiod.cfg

define timeperiod
n Définit une tranche {
horaire pour connaître timeperiod_name nonworkhours
alias Non-Work Hours
la disponibilité d'un sunday 00:00-24:00
objet monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
Fichier nagios/checkcommand.cfg

n Associe le nom d'une n define command


commande à un script {
avec ces paramètres command_name command_name
command_line command_line
}
Fichier nagios/dependencies.cfg

n Définit la dépendance entre host ou service


n Supprime les cascades d'alertes
n Si un service ou un host tombe, les alertes des host et
services qui en dépendent ne sont pas envoyés
Fichier nagios/dependencies.cfg

n define servicedependency
{
dependent_host_name host_name
dependent_service_description service_description
host_name host_name
service_description service_description
execution_failure_criteria [o,w,u,c,n]notification_failure_criteria
[o,w,u,c,n]
}

n define hostdependency
{
dependent_host_name host_name
host_name host_name
notification_failure_criteria [o,d,u,n]
}
Fichier nagios/escalations.cfg

n Permet de définir une cascade d'alerte si un service


ou un host vient à tomber
n Fonctionnalité optionnelle
Fichier nagios/escalations.cfg
n define serviceescalation
{
host_name host_name
service_description service_description
contact_groups contactgroup_name
first_notification #
last_notification #
notification_interval #
}
n define hostescalation
{
host_name host_name
contact_groups contactgroup_name
first_notification #
last_notification #
notification_interval #
}
Fichier nagios/escalations.cfg
Define hostgroupescalation
n Permet de définir une
cascade d'alerte pour un {
hostgroup_name
groupe d'host si un des
hostgroup_name
hosts du groupe vient à contact_groups
tomber contactgroup_name
n Fonctionnalité first_notification #
optionnelle last_notification #
notification_interval #
}
Les plugins Nagios
Les plugins Nagios :
présentation
n Pas de mécanisme interne dans Nagios
pour vérifier l’état d’un hôte, un service,
etc…
n Utilisation de programmes externes
appelés plugins
n Les plugins permettent de contrôler une
ressource ou un service local ou distant
Les plugins Nagios :
présentation
Les plugins Nagios :
présentation
n Programmes exécutables ou scripts
(perl, shell, etc…)
n Nagios teste la valeur retournée par le
plugin pour savoir l’état de la ressource
ou du service contrôlé
n N’importe qui peut développer son
propre plugin afin de surveiller un
service spécifique
Les plugins Nagios :
développement
n Peu importe le langage de
programmation : C, shell, perl, …
n Doit renvoyer une valeur entre 0 et 3 :
Valeur Statut
0 OK
1 Warning
2 Critical
3 Unknown
Les plugins Nagios :
développement
n Doit afficher un message court sur la
sortie standard (1 ligne, max 80
caractères)
n Remarque : Indiquer le chemin absolu
des appels systèmes utilisés
Les plugins Nagios : exécution
à distance
n Utilisation de l’addon NRPE (Nagios
Remote Plugin Executor)
n NRPE comprend un agent nrpe qui
tourne sur la machine distante et un
plugin check_nrpe sur la machine
Nagios
n Le plugin check_nrpe fait une requête à
l’agent en demandant l’exécution d’un
plugin sur la machine ou tourne l’agent
Les plugins Nagios : exécution
à distance
n L’agent exécute le plugin demandé et
renvoie le résultat au plugin check_nrpe
de la machine Nagios
n Le plugin check_nrpe renvoie la sortie
du plugin distant et le code de retour à
Nagios comme si c'était le sien
Les plugins Nagios :
configuration de Nagios
n Dans les fichiers services.cfg et hosts.cfg,
on indique la commande à utiliser pour
contrôler un service ou une machine
n Ces commandes sont définies dans le fichier
checkcommands.cfg. C’est dans ce fichier
qu’est indiquée la ligne de commande à
exécuter
Gestion des traps SNMP
Gestion des traps SNMP
n 2 types de contrôles sous Nagios :
n Contrôles actifs, réalisés par Nagios
n Contrôles passifs, réalisés par des
applications externes et dont le résultat est
soumis à Nagios
n Gestion des traps SNMP par un contrôle
passif : c’est le gestionnaire SNMP (ex :
net-snmp) qui reçoit les traps et alerte
Nagios
Gestion des traps SNMP
n Sur le gestionnaire SNMP il faut créer
un handler pour chaque trap à gérer
(fichier /etc/snmptrapd.conf pour net-
snmp)
n Le handler soumet un résultat (de 0 à
3) à Nagios, soit en écrivant dans un
fichier
(/usr/local/nagios/var/rw/nagios.cmd),
soit en utilisant NSCA
NSCA
n Permet d'envoyer des résultats de
contrôles passifs de services à un autre
serveur sur le réseau sur lequel tourne
Nagios.
n 2 parties :
n nsca : démon qui tourne sur le serveur
Nagios
n send_nsca : programme client exécuté sur
la machine qui veut envoyer un résultat
Source de traps Source de traps
SNMP SNMP

trap trap

Gestionnaire Gestionnaire
OU
SNMP (net- SNMP (net-
snmp) snmp)

send_nsca fichier

NAGIOS
nsca

NAGIOS

Cas où le gestionnaire Cas où le gestionnaire


SNMP est sur une SNMP est sur la même
machine distincte de machine que Nagios
Nagios
Etude de cas