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
}