Surveillance – Monitoring
Nagios
Généralités
- Le besoin de contrôler le fonctionnement effectif d'un dispositif informatique s'est toujours ressenti
- La complexité croissante des parcs ne fait que renforcer cet aspect
- De nombreux logiciels permettent de s'assurer du bon fonctionnement des dispositifs système et réseau
Quelques noms
- Zabbix
- OpenNMS
- Nagios
- Zenos
- …
Nagios - 1
- Anciennement Netsaint
- Un quasi standard
- Supervise les services réseau :- SMTP, POP, HTTP, FTP, LDAP, SNMP, DNS, SMB, SNMP, LDAP, etc
 
- Supervise les ressources machine- Mémoire, charge CPU, espace disque, débit réseau, …
 
Nagios - 2
- Interfacé avec SNMP
- Utilise de nombreux plugins rédigés dans un grand nombre de langages (bash, perl, python,
- vérification des services en parallèle.
- possibilité de définir une hiérarchie dans le réseau pour pouvoir faire la différence entre un serveur en panne et un serveur injoignable.
- remontée paramétrables des alertes grâce à l'utilisation de plugins (alerte par courrier électronique, SMS, .).
- Acquittement des alertes par les administrateurs.
Nagios - 3
- Gestion des escalades pour les alertes (une alerte non acquittée est envoyée à un groupe différent).
- Limitation de la visibilité, les utilisateurs peuvent avoir un accès limité à quelques éléments.
- Capacité de gestion des oscillations (nombreux passages d'un état normal à un état d'erreur dans un temps court).
Nagios - les plugins
- Créer ses propres plugins, dans le langage désiré. Il suffit de respecter la norme Nagios des Codes retour- 0 OK (tout va bien)
- 1 WARNING (le seuil d'alerte est dépassé)
- 2 CRITICAL (le service a un problème)
- 3 UNKNOWN (impossible de connaître l'état du service)
 
Nagios – les pistes
- De nombreux howto et tutoriels
- Monitoring-fr.org
- Blog de nicolargo
Nagios - 4
- Très vaste écosystème
- Création des fichiers de configuration relativement complexe
- De nombreux produits annexes plus ou moins intégrés- Centreon
- FAN : Fully Automated Nagios
- Des forks- Ichinga
- Shinken : (réécriture en python)
 
 
Principes de fonctionnement
Les objets
- les timeperiod
- les contacts et contactgroups
- les hosts (machines)
- les services
- les hostgroups
Les timeperiods
- permettent de définir des plages de temps pendant lequelles les actions sont effectuées
- dans /etc/nagios3/conf.d/timeperiods.cfg
# Time periods definitions
##########################
# 7d/7 24h/24
define timeperiod {
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
Les contacts
- Ce sont les personnes qui recoivent les notifications par SMS, email, …
- dans /etc/nagios3/conf.d/contacts.cfg
# Contacts defintions
#####################
define contact {
contact_name lulu
alias Lucien
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r
service_notification_options w,u,c,r
host_notification_commands host-notify-by-email
service_notification_commands notify-by-email
email lulu@gmail.com
}
Les groupes de contacts
- permettent de structurer les contacts
- dans /etc/nagios3/conf.d/contactgroups.cfg
# Contacts groups definition
############################
define contactgroup {
contactgroup_name admins
alias Administrators
members lulu
}
Les hôtes (machines)
- décrivent les machines à surveiller
- il peut être pertinent d'utiliser des templates ou modèles pour mieux structurer les fichiers
- dans /etc/nagios3/conf.d/hosts.cfg
# Templates
#----------
define host{
name template-host
check_command check-host-alive
max_check_attempts 2
check_interval 5
active_checks_enabled 1
passive_checks_enabled 0
check_period 24x7
notification_interval 60
notification_period 24x7
obsess_over_host 0
check_freshness 0
event_handler_enabled 0
flap_detection_enabled 0
process_perf_data 0
retain_status_information 1
retain_nonstatus_information 1
contact_groups admins
register 0
}
les hôtes - 2
- on peut utiliser le teamplate template-host défini plus haut pour décrire l'hôte monserveur
# Mon serveur
#------------
define host{
use template-hosts
host_name monserveur
alias Mon serveur Debian
address 192.168.0.100
}
les services
- dans le fichier /etc/nagios3/services/services.cfg
# monserveuramoi
#---------
define service {
host_name monserveur
use template-services
service_description Ping
check_command check-server-alive
}
define service {
host_name monserveur
use template-services
service_description Web
check_command check_http
}
define service {
host_name monserveur
use template-services
service_description SSH
check_command check_ssh
}
