📊 Zabbix 6.4 — templates, triggers et alertes e-mail
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B2 — Réseaux et sécurité |
| Module | M2.4 — Supervision et maintien en conditions opérationnelles |
| Compétence | B2.4 |
| Durée | 3h30 |
| Prérequis | Avoir complété la Séance 1 (SNMP, notions Nagios) |
🎯 Objectifs
- Déployer une instance Zabbix 6.4 minimale (base de données, zabbix-server, zabbix-agent2, frontend Nginx+PHP) sur Debian.
- Ajouter des hôtes mixtes (agent et SNMP), lier des templates (OS Linux, OS Windows, Cisco SNMP) et créer des items/triggers pour CPU, disque et ping.
- Créer une action d'alerte (Email + SMS via webhook) et un dashboard opérationnel avec graphs et top 10 hosts.
📖 Introduction
Un serveur de production est tombé à 3h du matin sans alerte : les utilisateurs n'ont constaté la panne qu'à 9h, soit 6 heures d'indisponibilité. Ce scénario fréquent s'évite par une supervision correctement configurée et des actions d'alerte adaptées (par ex. action SMS vers l'équipe d'astreinte).
Zabbix, bien configuré, peut détecter un incident et déclencher des actions en moins de 5 minutes si les templates, triggers et actions sont correctement conçus.
📖 1. Architecture Zabbix 6.4
Zabbix est composé de plusieurs briques :
- zabbix-server : collecte et corrèle les données, stocke dans une base (MySQL/MariaDB/PostgreSQL).
- zabbix-proxy (optionnel) : collecte localement puis relaie au serveur central — utile pour les sites distants ou la segmentation réseau.
- zabbix-agent2 : agent natif moderne pour Linux/Windows, permet des checks actifs/passifs et l'exécution de scripts.
- zabbix-frontend (Nginx + PHP) : interface web pour configurer hôtes, templates, triggers, actions et dashboards.
Schéma d'architecture simplifié
[Agent / SNMP] <---> [Zabbix Server] <---> [Database MySQL]
^ |
| +--> [Frontend Nginx+PHP]
+--> [Proxy] (optionnel)
📖 2. Installation rapide (pratique guidée)
Ces commandes sont un guide pour Debian — exécution en tant que root ou via sudo.
# Mettre à jour
sudo apt update && sudo apt upgrade -y
# Installer MariaDB
sudo apt install -y mariadb-server
sudo mysql_secure_installation
# Créer la base Zabbix et l'utilisateur
sudo mysql -uroot -p <<SQL
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongZabbixPass';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
SQL
# Installer Zabbix server, frontend PHP, nginx et agent2
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 nginx php-fpm
# Importer le schéma initial
sudo zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz \
| mysql -uzabbix -p zabbix
# Configurer zabbix_server.conf : définir DBPassword
sudo sed -i "s/# DBPassword=/DBPassword=StrongZabbixPass/" \
/etc/zabbix/zabbix_server.conf
# Démarrer les services
sudo systemctl restart zabbix-server zabbix-agent2 nginx php7.4-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx
Après ces étapes, terminer la configuration via le frontend web http://<zabbix-server>/zabbix : connecter la base et finaliser l'installation.
📖 3. Configuration des hôtes et templates
3.1 Ajouter un hôte Windows (win-srv01)
- Installer Zabbix agent2 sur Windows ou activer l'agent SNMP.
- Dans le frontend Zabbix : Configuration → Hosts → Create host
- Host name :
win-srv01 - Groups : Windows servers
- Interfaces : ajouter interface Zabbix agent (IP 192.168.10.5) et interface SNMP (SNMPv3 si nécessaire)
- Link templates :
Template OS Windows by Zabbix agent
- Host name :
3.2 Ajouter un hôte Linux (debian-srv02)
- Installer
zabbix-agent2sur debian-srv02 et configurer/etc/zabbix/zabbix_agent2.conf: définirServer=192.168.10.10. - Dans le frontend, ajouter
debian-srv02avec liaison auTemplate OS Linux by Zabbix agent.
3.3 Template Net Cisco IOS (SNMP)
- Pour un switch Cisco, ajouter un hôte
cisco-switchavec interface SNMP. - Lier le
Template Net Cisco IOS by SNMP. - Renseigner les credentials SNMPv3 (user / auth / priv) dans les macros de l'hôte.
📖 4. Items, Triggers et Severities
Exemples d'items et triggers importants (natifs via templates ou à créer manuellement) :
| Élément | Item key | Expression trigger | Sévérité |
|---|---|---|---|
| CPU | system.cpu.util (float, 60 s) |
{HOSTNAME:system.cpu.util.last()}>90 |
High |
| Espace disque | vfs.fs.size[/,pfree] |
{HOSTNAME:vfs.fs.size[/,pfree].last()}<10 |
Average |
| Ping ICMP | icmpping |
{HOSTNAME:icmpping.last()}=0 |
Disaster |
Exemple de trigger (syntaxe didactique)
Name : CPU utilisation critique
Expression : {debian-srv02:system.cpu.util.last()}>90
Severity : High
Par ordre croissant : Information → Warning → Average → High → Disaster. Choisir la sévérité appropriée garantit un routage correct des alertes vers les bonnes équipes.
📖 5. Actions et Alertes
Créer les Media types
- Email : Administration → Media types → Email — configurer SMTP (serveur mail, port, authentification).
- Webhook SMS : créer un Media type → Script/Webhook pointant vers un service tiers ou un script local qui envoie un SMS via API / modem.
Créer une action (Configuration → Actions)
- Nom :
Alert Ops on disk <10% - Conditions : Trigger value = PROBLEM ET Trigger name contains "disk" (ou Host group = Production)
- Opérations : envoyer un message au groupe Ops via Media type
Email(primaire) etSMS-webhook(secondaire)
📖 6. Graphiques, Dashboard et SLA
Widgets de dashboard
- Graphs : widgets affichant CPU, mémoire, trafic réseau pour chaque hôte.
- Heatmap : widget heatmap montrant l'utilisation par host group.
- Top 10 hosts by CPU : widget Top Hosts trié par CPU utilisation.
SLA report
Zabbix permet de configurer des SLA basiques via Configuration → IT services. Définir le service, relier les triggers pertinents et produire un rapport de disponibilité sur une période définie.
🛠️ Travaux Pratiques (TP S2) — ~70–80 min
Contexte
Déployer Zabbix 6.4 sur debian-srv01 et intégrer la ferme d'hôtes d'InnovatTech : win-srv01 (SNMP + agent), debian-srv01 (agent), debian-srv02 (agent), cisco-switch (SNMP).
Objectif
Installer Zabbix sur debian-srv01, ajouter 4 hôtes, créer un trigger e-mail pour espace disque <10 % sur debian-srv02 et construire un dashboard opérationnel.
Prérequis techniques
- Accès root sur
debian-srv01etdebian-srv02. - Ports ouverts : agent 10050/10051, SNMP UDP 161/162.
- Informations SNMPv3 (user/auth/priv) pour
cisco-switchetwin-srv01.
Étape 1 — Installer Zabbix sur debian-srv01
Suivre les commandes de la section Installation ci-dessus. Vérifier que le frontend est accessible et que le serveur Zabbix affiche l'état Running.
Étape 2 — Ajouter les 4 hôtes
- win-srv01 : interfaces Agent (192.168.10.5) + SNMP (SNMPv3). Lier
Template OS Windows by Zabbix agent. - debian-srv01 : lier
Template OS Linux by Zabbix agent(surveiller le serveur Zabbix lui-même). - debian-srv02 : lier
Template OS Linux by Zabbix agent. - cisco-switch : interface SNMP, lier
Template Net Cisco IOS by SNMP, renseigner les credentials SNMPv3 dans les macros de l'hôte.
Étape 3 — Créer le trigger d'alerte e-mail pour espace disque <10 % (debian-srv02)
Configuration → Hosts → debian-srv02 → Triggers → Create Trigger
- Name :
Disk / below 10% - Expression :
{debian-srv02:vfs.fs.size[/,pfree].last()}<10 - Severity : Average
Créer ensuite l'action qui envoie un e-mail au groupe Ops lors du déclenchement (voir section Actions).
Étape 4 — Créer un dashboard opérationnel
Nouveau Dashboard — ajouter les widgets suivants :
- Graphs CPU utilisation pour debian-srv01, debian-srv02, win-srv01
- Graph interfaces réseau de cisco-switch (trafic entrée/sortie)
- Widget Heatmap
- Widget Top 10 hosts by CPU
Vérification
Simuler une charge CPU avec stress-ng sur debian-srv02 et vérifier que le trigger CPU>90 % se déclenche et qu'une notification e-mail est envoyée.
Livrable attendu
- Captures d'écran : hôtes ajoutés, trigger debian-srv02, page d'historique d'alertes, dashboard.
- Fichier
zabbix_hosts_export.txt:hostname;templates;interfacespour les 4 hôtes.
Critères de réussite
- ☐ Zabbix server est joignable et a collecté des données pour les 4 hôtes (dernières 5 minutes).
- ☐ Le trigger disque (<10 %) sur debian-srv02 se déclenche lors d'un test et envoie un e-mail au groupe Ops.
- ☐ Dashboard affiche graphiques CPU/mémoire/réseau et le Top 10 hosts est renseigné.
📖 Synthèse
Zabbix est une plateforme complète qui combine collecte, corrélation, visualisation et actions automatisées. Les templates et items permettent de standardiser la supervision, les triggers et actions formalisent les processus d'alerte, et les dashboards fournissent une vue opérationnelle pour l'équipe d'exploitation.
La surveillance technique doit être complétée par des procédures d'escalade et des moyens de notification (SMS, appels) pour être véritablement utile.
Un template Zabbix standardise la supervision : un seul template peut couvrir des dizaines d'hôtes identiques. Les triggers évaluent les données en temps réel et déclenchent les actions (e-mail, SMS, webhook) dès qu'un seuil est franchi.
📝 QCM — Testez vos connaissances
- Quel composant Zabbix collecte localement et relaie les données vers le serveur central, notamment pour les sites distants ou la segmentation réseau ?
- Quel template Zabbix standard doit être lié à un hôte Linux supervisé via l'agent ?
- Quelle sévérité Zabbix est attribuée au trigger qui détecte l'absence de réponse ICMP (ping = 0) ?
- Quel élément Zabbix lie un hôte à une logique de collecte et d'alerte automatique (réponse en un mot) ?
- Quelle commande Linux permet de simuler une charge CPU artificielle pour tester le déclenchement d'un trigger Zabbix ?
📝 Afficher les corrections
- zabbix-proxy — Le zabbix-proxy collecte localement puis relaie au serveur central, utile pour les sites distants ou la segmentation réseau.
- Template OS Linux by Zabbix agent — Ce template standard est lié à tout hôte Linux supervisé par l'agent Zabbix (items CPU, mémoire, disque, réseau prêts à l'emploi).
- Disaster — La sévérité Disaster est la plus critique et s'applique aux triggers d'indisponibilité totale, comme l'absence de réponse ICMP.
- Template — Le template est l'élément Zabbix qui standardise la supervision en liant items, triggers et graphes à un hôte.
- stress-ng — La commande stress-ng permet de générer une charge CPU artificielle pour vérifier le déclenchement des triggers et l'envoi des alertes.
