📊 Supervision & Monitoring
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B2 — Administration Systèmes & Réseaux |
| Module | M2.2 — Administration Linux |
| Prérequis | Shell Linux (C2.2.1), gestion des services (C2.2.2), serveurs web (C2.2.3) |
🎯 Objectifs
- Comprendre les enjeux et objectifs de la supervision informatique
- Surveiller les ressources système (CPU, RAM, disque, réseau)
- Connaître le protocole SNMP et son utilisation
- Déployer et configurer Zabbix pour la supervision d'infrastructure
- Découvrir Grafana, Prometheus et la stack ELK
- Mettre en place des alertes et notifications
📖 Pourquoi superviser ?
La supervision (ou monitoring) consiste à surveiller en continu l'état de l'infrastructure informatique — serveurs, réseaux, services, applications — afin de détecter les anomalies avant qu'elles ne deviennent des pannes.
Objectifs de la supervision
- Disponibilité : garantir que les services sont accessibles (SLA, uptime 99,9%)
- Performance : détecter les ralentissements et goulots d'étranglement
- Anticipation : prévoir les pannes grâce aux tendances (disque plein dans 3 jours, etc.)
- Sécurité : détecter les comportements anormaux (pics de trafic, tentatives d'intrusion)
- Capacité : planifier les évolutions d'infrastructure (capacity planning)
Métriques clés
| Catégorie | Métriques | Seuils d'alerte typiques |
|---|---|---|
| CPU | Utilisation (%), load average, temps iowait | > 80% soutenu |
| Mémoire | RAM utilisée, swap utilisé, buffers/cache | > 90% RAM, swap > 0 |
| Disque | Espace utilisé (%), I/O, latence | > 85% espace |
| Réseau | Bande passante, paquets perdus, latence | > 70% bande passante |
| Services | État (up/down), temps de réponse, codes HTTP | Temps > 5s, code ≠ 200 |
📖 Monitoring système en ligne de commande
Avant de déployer des outils de supervision, il est essentiel de maîtriser les commandes de monitoring intégrées à Linux :
| Commande | Description | Usage |
|---|---|---|
top / htop | Processus en temps réel, CPU, RAM | htop |
vmstat | Statistiques mémoire, swap, CPU, I/O | vmstat 1 5 (toutes les 1s, 5 fois) |
iostat | Statistiques I/O des disques | iostat -xz 1 |
df | Espace disque par partition | df -h |
du | Espace utilisé par répertoire | du -sh /var/log/* |
free | Utilisation de la mémoire | free -h |
sar | Historique de performances (sysstat) | sar -u 1 10 |
ss / netstat | Connexions réseau actives | ss -tulnp |
iftop | Bande passante en temps réel | sudo iftop -i eth0 |
# Script rapide de diagnostic système
echo "=== CPU ==="
uptime
echo "=== MÉMOIRE ==="
free -h
echo "=== DISQUE ==="
df -h | grep -E '^/dev'
echo "=== TOP 5 PROCESSUS CPU ==="
ps aux --sort=-%cpu | head -6
echo "=== CONNEXIONS RÉSEAU ==="
ss -tulnp | grep LISTEN
📖 SNMP : protocole de supervision
Principes
Le SNMP (Simple Network Management Protocol) est le protocole standard pour la supervision des équipements réseau et serveurs. Il fonctionne sur le modèle agent/manager :
- Agent SNMP : installé sur l'équipement supervisé, expose les données
- Manager SNMP : le serveur de supervision qui interroge les agents
- MIB (Management Information Base) : base de données structurée des informations disponibles
- OID (Object Identifier) : identifiant unique pour chaque métrique (ex :
1.3.6.1.2.1.1.5.0= hostname) - Communauté : chaîne d'authentification (SNMP v1/v2c) — ex :
public(lecture),private(écriture)
| Version | Authentification | Chiffrement | Usage |
|---|---|---|---|
| SNMP v1 | Communauté (texte clair) | Non | Obsolète |
| SNMP v2c | Communauté (texte clair) | Non | Encore très répandu |
| SNMP v3 | Utilisateur/mot de passe | Oui (DES, AES) | Recommandé en production |
SNMP v1 et v2c transmettent la communauté en clair sur le réseau. En production, utilisez toujours SNMP v3 avec authentification et chiffrement, ou isolez le trafic SNMP dans un VLAN dédié.
# Installer les outils SNMP
sudo apt install snmp snmpd snmp-mibs-downloader
# Interroger un agent SNMP
snmpwalk -v2c -c public 192.168.1.1 system
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0
📖 Zabbix : supervision d'infrastructure
Architecture
Zabbix est une solution de supervision open source complète et très utilisée en entreprise. Son architecture se compose de :
- Zabbix Server : cœur du système, collecte et traite les données
- Zabbix Agent : installé sur chaque hôte supervisé, collecte les métriques locales
- Base de données : stocke la configuration et l'historique (MySQL, PostgreSQL)
- Interface web : tableau de bord, configuration, graphiques
- Zabbix Proxy (optionnel) : relais pour les sites distants
Concepts clés
| Concept | Description |
|---|---|
| Host | Équipement supervisé (serveur, switch, routeur) |
| Item | Métrique collectée (CPU usage, espace disque, etc.) |
| Trigger | Condition d'alerte (ex : CPU > 90% pendant 5 min) |
| Template | Modèle réutilisable (items + triggers + graphiques) |
| Action | Réaction automatique à un trigger (notification, script) |
| Host group | Regroupement logique d'hôtes (Serveurs Web, BDD, etc.) |
# Installer l'agent Zabbix (Debian/Ubuntu)
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo apt update
sudo apt install zabbix-agent2
# Configurer l'agent
sudo nano /etc/zabbix/zabbix_agent2.conf
# Server=192.168.1.100 (IP du serveur Zabbix)
# Hostname=mon-serveur-web
sudo systemctl enable --now zabbix-agent2
📖 Nagios / Icinga
Nagios est l'un des outils de supervision les plus anciens et les plus répandus. Icinga est un fork moderne de Nagios avec une interface web améliorée et une API REST.
Fonctionnement par plugins
Nagios/Icinga fonctionne avec un système de plugins (ou checks) : des scripts qui testent un service et retournent un code de statut :
| Code retour | Statut | Description |
|---|---|---|
| 0 | OK | Le service fonctionne normalement |
| 1 | WARNING | Seuil d'avertissement atteint |
| 2 | CRITICAL | Seuil critique atteint |
| 3 | UNKNOWN | Impossible de déterminer l'état |
# Exemple de plugin : vérifier l'espace disque
/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
# Exemple de plugin : vérifier un service HTTP
/usr/lib/nagios/plugins/check_http -H example.com -p 443 -S
📖 Grafana : visualisation de données
Grafana est une plateforme open source de visualisation et d'analyse de données. Elle ne collecte pas de données elle-même, mais se connecte à des sources de données (data sources) :
- Prometheus, InfluxDB, Graphite (métriques time-series)
- Elasticsearch (logs)
- MySQL, PostgreSQL (données relationnelles)
- Zabbix (via plugin)
Grafana permet de créer des dashboards interactifs avec des graphiques, jauges, tableaux et cartes. Les dashboards peuvent être partagés, exportés en JSON et versionnés.
# Installer Grafana (Debian/Ubuntu)
sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install grafana
sudo systemctl enable --now grafana-server
# Accès : http://localhost:3000 (admin/admin)
📖 Prometheus : collecte de métriques
Prometheus est un système de monitoring et d'alerte open source, conçu pour les architectures cloud et microservices. Il utilise un modèle pull : Prometheus interroge activement les cibles à intervalles réguliers.
Fonctionnement
- Exporters : exposent les métriques au format Prometheus (node_exporter pour le système, blackbox_exporter pour les checks HTTP)
- Scraping : Prometheus récupère les métriques via HTTP à intervalles configurés
- TSDB : base de données time-series intégrée
- PromQL : langage de requête pour interroger et agréger les métriques
- Alertmanager : gestion des alertes (déduplication, groupement, routage)
# Exemples de requêtes PromQL
# Utilisation CPU moyenne sur 5 minutes
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Espace disque disponible en Go
node_filesystem_avail_bytes{mountpoint="/"} / 1024 / 1024 / 1024
# Taux de requêtes HTTP par seconde
rate(http_requests_total[5m])
La combinaison Prometheus + Grafana est devenue le standard de facto pour le monitoring des infrastructures modernes et des environnements conteneurisés (Docker, Kubernetes).
📖 Stack ELK : gestion centralisée des logs
La stack ELK (aussi appelée Elastic Stack) est un ensemble d'outils pour la collecte, le traitement et la visualisation des logs :
| Composant | Rôle | Description |
|---|---|---|
| Elasticsearch | Stockage & recherche | Moteur de recherche distribué, indexe et stocke les logs |
| Logstash | Collecte & transformation | Ingère les logs, les parse, les filtre et les envoie à Elasticsearch |
| Kibana | Visualisation | Interface web pour explorer les logs, créer des dashboards |
| Beats (optionnel) | Agents légers | Filebeat (logs), Metricbeat (métriques), Packetbeat (réseau) |
Pipeline typique :
# Flux de données ELK
Serveurs (Filebeat) → Logstash (parsing/filtrage) → Elasticsearch (indexation) → Kibana (visualisation)
# Exemple de configuration Filebeat
# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
output.logstash:
hosts: ["logstash-server:5044"]
📖 Alertes et notifications
Un système de supervision sans alertes n'a que peu d'intérêt. Les alertes doivent être :
- Pertinentes : éviter la « fatigue d'alertes » (alert fatigue) en ne notifiant que les problèmes réels
- Graduées : warning → critical → escalade
- Actionnables : l'alerte doit indiquer clairement le problème et la marche à suivre
Canaux de notification
| Canal | Usage | Outils |
|---|---|---|
| Alertes non urgentes, rapports | SMTP, Postfix, SendGrid | |
| Slack / Teams | Alertes en temps réel pour l'équipe | Webhooks |
| SMS / appels | Alertes critiques hors heures | PagerDuty, OpsGenie |
| Webhooks | Intégration avec d'autres systèmes | API REST personnalisées |
# Exemple : alerte par webhook Slack (script Bash)
#!/bin/bash
WEBHOOK_URL="https://hooks.slack.com/services/XXX/YYY/ZZZ"
MESSAGE="⚠️ ALERTE : Espace disque > 90% sur srv-web-01"
curl -s -X POST -H 'Content-type: application/json' \
--data "{\"text\": \"$MESSAGE\"}" \
"$WEBHOOK_URL"
📖 Bonnes pratiques de supervision en entreprise
- Superviser par couches : infrastructure (réseau, serveurs) → services (HTTP, BDD) → applications (temps de réponse, erreurs)
- Définir des SLA : fixer des objectifs mesurables de disponibilité et de performance
- Documenter les procédures : chaque alerte doit avoir une procédure de résolution associée
- Historiser les métriques : conserver l'historique pour l'analyse de tendances et le capacity planning
- Tester les alertes : vérifier régulièrement que le système d'alerte fonctionne (test de bout en bout)
- Centraliser les dashboards : un tableau de bord unique pour une vue globale de l'infrastructure
- Automatiser la remédiation : pour les problèmes connus et récurrents (redémarrage de service, nettoyage de logs)
Trop d'alertes tuent les alertes. Si votre équipe reçoit des centaines de notifications par jour, elle finira par les ignorer. Concentrez-vous sur les métriques critiques et ajustez les seuils progressivement.
📝 QCM — Testez vos connaissances
- Quels sont les principaux outils de monitoring serveur Linux ?
- Quelle commande affiche les processus en cours sous Linux ?
- Que surveille la commande iostat ?
- Qu'est-ce que Prometheus ?
- Quel outil de visualisation est souvent associé à Prometheus ?
- Quelle commande vérifie l'espace disque disponible ?
📝 Afficher les corrections
- Nagios, Zabbix, Prometheus et Grafana — Ces outils surveillent les métriques système (CPU, RAM, disque, réseau) et alertent en cas de problème.
- top ou htop — top affiche les processus en temps réel, htop offre une interface améliorée et interactive.
- Les performances d'entrée/sortie des disques — iostat affiche l'utilisation CPU et les statistiques I/O des périphériques de stockage.
- Un système de monitoring et d'alerting open source — Prometheus collecte des métriques via le modèle pull (scraping HTTP) et les stocke en time-series.
- Grafana — Grafana crée des dashboards graphiques à partir des données Prometheus (et autres sources).
- df -h — df -h affiche l'utilisation des systèmes de fichiers montés en format lisible (human-readable).
La supervision est essentielle pour garantir la disponibilité et la performance de l'infrastructure. Zabbix est la référence pour la supervision traditionnelle, Prometheus + Grafana pour les environnements modernes, et la stack ELK pour la gestion centralisée des logs. Maîtrisez les commandes système de base avant de déployer des outils complexes.
