~~SLIDESHOW~~
====== 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
}