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