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 }