Dans un monde où la disponibilité des services informatiques est non négociable, l'adage "pas de nouvelles, bonnes nouvelles" est une recette pour le désastre. Attendre qu'un utilisateur signale qu'un site web est inaccessible ou qu'une application est lente signifie que vous êtes déjà en retard. La supervision proactive n'est plus un luxe, mais une nécessité fondamentale pour toute DSI. C'est ici qu'intervient Zabbix, un véritable couteau suisse de la supervision open-source, capable de surveiller l'état de santé de l'ensemble de votre parc informatique, des serveurs aux applications, en passant par les équipements réseau.

Cet article vous guidera pas à pas, de la compréhension de l'architecture de Zabbix à l'installation complète de la plateforme Zabbix 7.0 LTS, jusqu'à la création de vos premières règles de supervision. L'objectif ? Vous rendre autonome pour déployer une surveillance efficace et personnalisée, et transformer votre gestion des incidents d'une approche réactive à une stratégie proactive.
Prérequis Techniques
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
- Un serveur dédié ou une machine virtuelle avec une distribution Linux récente (nous utiliserons Ubuntu 22.04 LTS pour les exemples).
- Au moins 2 Go de RAM et 2 cœurs de CPU.
- Un accès root ou un utilisateur avec des privilèges
sudo
. - Des connaissances de base en administration système Linux et en ligne de commande.
- Un accès à Internet pour le téléchargement des paquets.
- PHP 8.0 ou une version plus récente.
I. Comprendre Zabbix et son Architecture
Avant de plonger dans les lignes de commande, il est crucial de bien saisir les concepts fondamentaux qui font la puissance et la flexibilité de Zabbix.
A. Qu'est-ce que Zabbix ?
Zabbix est une solution de supervision (monitoring) open-source de classe entreprise. Créée par Alexei Vladishev, elle est conçue pour surveiller et suivre la disponibilité et les performances d'une multitude de composants d'une infrastructure informatique : serveurs, machines virtuelles, équipements réseau, applications, bases de données, services web, etc.
Sa principale mission est de collecter des données (métriques) sur ces différents éléments, de les stocker, de les analyser et de déclencher des alertes lorsque des seuils prédéfinis sont dépassés ou que des anomalies sont détectées. C'est l'outil qui vous préviendra que l'espace disque d'un serveur critique atteint 90% avant qu'il ne soit plein et ne provoque une panne de service.
B. L'architecture de Zabbix : Une Vue d'Ensemble
Comprendre l'architecture de Zabbix est la clé pour l'utiliser efficacement. Imaginez un système nerveux central pour votre IT.
- Le Serveur Zabbix (Zabbix Server) : C'est le cerveau de l'opération. Ce processus central collecte et stocke toutes les données de configuration, les statistiques et les données opérationnelles. C'est lui qui exécute les vérifications, analyse les données reçues et déclenche les alertes (triggers) si nécessaire. Il est le point de contact principal pour les agents et les proxys.
- La Base de Données (Database) : Le serveur Zabbix a besoin d'une base de données pour stocker à la fois les données de configuration (la liste des serveurs à surveiller, les types de vérifications, etc.) et les données historiques collectées (l'évolution de la charge CPU au cours du temps, par exemple). Zabbix supporte plusieurs SGBD comme MySQL/MariaDB, PostgreSQL, et Oracle.
- L'Interface Web (Web Frontend) : C'est votre cockpit. Écrite en PHP, cette interface graphique vous permet de configurer Zabbix, de visualiser les données sous forme de graphiques, de tableaux de bord (dashboards) et de cartes, et de gérer les alertes. C'est par là que vous interagirez avec Zabbix au quotidien.
- L'Agent Zabbix (Zabbix Agent) : C'est un petit programme très léger que l'on installe sur les machines que l'on souhaite superviser (les "hôtes"). Son rôle est de collecter des données locales (utilisation CPU, mémoire, espace disque, état d'un service...) et de les envoyer au serveur Zabbix. Il peut fonctionner de deux manières :
- Passif : L'agent attend que le serveur lui demande une donnée.
- Actif : L'agent demande périodiquement au serveur la liste des métriques à collecter, puis les envoie de manière proactive. Ce mode est plus efficace pour les grands parcs.
- Le Proxy Zabbix (Zabbix Proxy) : Pour les infrastructures distribuées ou de grande taille, le proxy est un composant optionnel mais puissant. Il collecte les données de performance pour le compte du serveur Zabbix principal. C'est une solution idéale pour décharger le serveur central, surveiller des sites distants avec une connectivité réseau limitée ou simplifier la maintenance.
Analogie simple : Le Serveur Zabbix est le quartier général. Les Agents Zabbix sont des espions déployés sur le terrain (vos serveurs) qui rapportent des informations. L'Interface Web est la salle de contrôle où vous analysez les rapports. Le Proxy Zabbix est un bureau régional qui gère les espions d'une zone géographique et envoie un rapport consolidé au QG.
C. Pourquoi choisir Zabbix face à la concurrence ?
- 100% Open-Source : Pas de version "communauté" limitée et de version "entreprise" payante. Toutes les fonctionnalités sont disponibles gratuitement.
- Flexibilité Extrême : Zabbix peut tout surveiller. S'il n'existe pas de méthode native pour collecter une métrique, vous pouvez facilement l'étendre avec des scripts personnalisés.
- Scalabilité : Capable de surveiller des centaines de milliers d'appareils grâce à son architecture distribuée (via les proxys).
- Découverte Automatique (Auto-Discovery) : Zabbix peut scanner votre réseau et ajouter automatiquement des hôtes à la supervision, leur appliquer des modèles de surveillance, etc. C'est un gain de temps considérable.
- Communauté Active : Une large communauté d'utilisateurs et une documentation très complète permettent de trouver de l'aide facilement.
II. Installation et Configuration de Zabbix 7.0 LTS
Passons maintenant à la pratique. Nous allons installer la version 7.0 LTS (Long Term Support) de Zabbix sur un serveur Ubuntu 22.04 avec Apache, MySQL et PHP.
Prérequis
- Serveur Ubuntu 22.04 LTS
- Accès root ou utilisateur avec privilèges sudo
- Minimum 2 Go de RAM et 2 cœurs CPU
- Connexion Internet active
- PHP 8.0 ou version supérieure
A. Préparation du Système
Devenir utilisateur root
Démarrer une nouvelle session shell avec privilèges root :
sudo -s
Mise à jour du système
apt update && apt upgrade -y
B. Installation du Dépôt Zabbix
Téléchargement et installation du paquet de dépôt Zabbix 7.0
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb
apt update
C. Installation des Composants Zabbix
Installation du serveur, frontend et agent Zabbix
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Note : Le paquet zabbix-apache-conf
configure automatiquement Apache pour l'interface web de Zabbix.
D. Installation et Configuration de MySQL
Installation de MySQL Server
apt update
apt install mysql-server
systemctl start mysql
systemctl enable mysql
systemctl status mysql
Sécurisation de MySQL
mysql_secure_installation
Suivre les instructions interactives :
- Enter current password for root : Appuyer sur Entrée
- Switch to unix_socket authentication [Y/n] : Y
- Change the root password? [Y/n] : Y
- New password : Entrer votre mot de passe sécurisé
- Re-enter new password : Confirmer le mot de passe
- Remove anonymous users? [Y/n] : Y
- Disallow root login remotely? [Y/n] : Y
- Remove test database and access to it? [Y/n] : Y
- Reload privilege tables now? [Y/n] : Y
E. Création et Configuration de la Base de Données
Connexion à MySQL et création de la base de données
mysql -uroot -p
Exécution des commandes SQL
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'votre_mot_de_passe_securise';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
QUIT;
⚠️ Avertissement : Remplacez 'votre_mot_de_passe_securise'
par un mot de passe robuste.
Importation du schéma initial de la base de données
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Le système demandera le mot de passe que vous avez créé pour l'utilisateur zabbix.
Désactivation de log_bin_trust_function_creators
mysql -uroot -p
SET GLOBAL log_bin_trust_function_creators = 0;
QUIT;
F. Configuration du Serveur Zabbix
Édition du fichier de configuration
nano /etc/zabbix/zabbix_server.conf
Ajout du mot de passe de la base de données
Trouver la ligne DBPassword=
et la décommenter, puis ajouter le mot de passe :
DBPassword=votre_mot_de_passe_securise
Enregistrer et fermer le fichier (Ctrl+O, Entrée, Ctrl+X).
G. Configuration du Pare-feu (Optionnel)
Ouverture des ports nécessaires
ufw allow 10050/tcp # Agent Zabbix
ufw allow 10051/tcp # Serveur Zabbix
ufw allow 80/tcp # Interface Web
ufw reload
H. Démarrage des Services
Redémarrage et activation des services
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
Vérification du statut des services
systemctl status zabbix-server zabbix-agent apache2
I. Configuration via l'Interface Web
Accès à l'assistant de configuration
Ouvrir le navigateur web et accéder à : http://<ip_de_votre_serveur>/zabbix
Étapes de l'assistant de configuration
1. Welcome screen
Cliquer sur "Next step"
2. Check of pre-requisites
Vérifier que tous les prérequis sont OK (tout en vert), puis cliquer sur "Next step"
3. Configure DB connection
Remplir les informations de connexion à la base de données :
- Database type: MySQL
- Database host: localhost
- Database port: 0 (laisser par défaut)
- Database name: zabbix
- User: zabbix
- Password: votre_mot_de_passe_securise
Cliquer sur "Next step"
4. Zabbix server details
Configurer les paramètres du serveur (peut laisser les valeurs par défaut pour commencer)
Cliquer sur "Next step"
5. Pre-installation summary
Vérifier que toute la configuration est correcte
Cliquer sur "Next step"
6. Finish
Installation terminée ! Cliquer sur "Finish"
J. Connexion Initiale
Identifiants par défaut
- Username :
Admin
(avec un 'A' majuscule) - Password :
zabbix
Sécurisation
⚠️ Important : Changer immédiatement le mot de passe par défaut via Administration → Users.
K. Vérification de l'Installation
Vérification des processus Zabbix
ps aux | grep zabbix
Vérification des ports d'écoute
netstat -tlnp | grep :1005
Consultation des logs
tail -f /var/log/zabbix/zabbix_server.log
L. Gestion des Services
Commandes utiles pour la gestion des services
Serveur Zabbix :
systemctl <status/restart/start/stop> zabbix-server
Agent Zabbix :
systemctl <status/restart/start/stop> zabbix-agent
Serveur MySQL :
systemctl <status/restart/start/stop> mysql
Serveur Apache :
systemctl <status/restart/start/stop> apache2
M. Dépannage
Problèmes courants
Erreur de connexion à la base de données
- Vérifier que MySQL est démarré :
systemctl status mysql
- Vérifier les credentials dans
/etc/zabbix/zabbix_server.conf
- Tester la connexion :
mysql -uzabbix -p zabbix
Le serveur Zabbix ne démarre pas
- Vérifier les logs :
tail -f /var/log/zabbix/zabbix_server.log
- Vérifier la configuration :
zabbix_server -c /etc/zabbix/zabbix_server.conf -t
Interface web inaccessible
- Vérifier qu'Apache est démarré :
systemctl status apache2
- Vérifier la configuration Apache :
/etc/zabbix/apache.conf
- Vérifier les permissions :
ls -l /usr/share/zabbix/
N. Optimisation (Optionnel)
Pour les environnements avec plus de 30 périphériques
Éditer /etc/zabbix/zabbix_server.conf
et ajouter :
StartPollers=100
StartPollersUnreachable=50
StartPingers=50
StartTrappers=10
StartDiscoverers=10
StartHTTPPollers=10
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
TrendCacheSize=32M
ValueCacheSize=256M
Optimisation MySQL
Créer /etc/mysql/mysql.conf.d/99-zabbix.cnf
:
[mysqld]
max_connections = 300
innodb_buffer_pool_size = 800M
innodb-log-file-size = 128M
innodb-log-buffer-size = 128M
innodb-file-per-table = 1
innodb_buffer_pool_instances = 8
innodb_old_blocks_time = 1000
innodb_stats_on_metadata = off
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-flush-log-at-trx-commit = 2
tmp-table-size = 96M
max-heap-table-size = 96M
III. Votre Première Supervision : Monitorer un Serveur Web Apache

Avoir un serveur Zabbix fonctionnel est une chose, l'utiliser en est une autre. Mettons en place notre premier cas de surveillance concret : vérifier la disponibilité d'un service web sur un autre serveur.
Pour cet exemple, supposons que vous avez un autre serveur (nommé web-server-01
avec l'IP 192.168.1.100
) sur lequel tourne un site web.
A. Installation de l'Agent Zabbix sur un Hôte distant
- Connectez-vous en SSH au serveur
web-server-01
.Server=
: Indiquez l'adresse IP de votre serveur Zabbix. Décommentez la ligne.ServerActive=
: Indiquez également l'IP du serveur Zabbix pour les vérifications actives.Hostname=
: Définissez un nom unique pour cet hôte. Il doit correspondre exactement à celui que vous utiliserez dans l'interface web.
Redémarrez et activez l'agent.
sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent
Configurez l'agent. C'est l'étape la plus importante. L'agent doit savoir qui est son serveur Zabbix.
sudo nano /etc/zabbix/zabbix_agentd.conf
Modifiez les lignes suivantes :
# IP du serveur Zabbix
Server=192.168.1.50 # Remplacez par l'IP de votre serveur Zabbix
# IP du serveur Zabbix pour les checks actifs
ServerActive=192.168.1.50 # Remplacez par l'IP de votre serveur Zabbix
# Nom de l'hôte, doit être unique
Hostname=web-server-01
Enregistrez et fermez le fichier.
Installez uniquement l'agent Zabbix.
sudo apt install -y zabbix-agent
Installez le dépôt Zabbix 7.0, comme nous l'avons fait pour le serveur principal.
wget [https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb](https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb)
sudo dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo apt update
Piège courant : Un pare-feu (sur le serveur Zabbix ou sur l'hôte distant) qui bloque le port 10050 (pour les checks passifs) ou 10051 (pour les checks actifs) est la cause la plus fréquente de problèmes de communication entre le serveur et l'agent.
B. Création de l'Hôte dans l'Interface Zabbix
Retournez sur l'interface web de Zabbix.
- Allez dans Data collection -> Hosts. (Note: Dans Zabbix 7.0, le menu a été renommé de "Configuration" à "Data collection").
- Cliquez sur le bouton Create host en haut à droite.
- Onglet Host :
- Host name : Entrez
web-server-01
(le même que dans le fichierzabbix_agentd.conf
). - Templates : C'est ici que la magie opère. Cliquez sur "Select" et choisissez le template
Linux by Zabbix agent
. Ce modèle contient des dizaines de vérifications prêtes à l'emploi (CPU, RAM, disque, réseau...). - Host groups : Sélectionnez un groupe, par exemple "Linux servers".
- Interfaces : Cliquez sur "Add" et choisissez "Agent". Entrez l'adresse IP de votre serveur web (
192.168.1.100
).
- Host name : Entrez
- Cliquez sur le bouton Add en bas de la page.
Après quelques instants, l'icône "ZBX" dans la colonne "Availability" devrait passer au vert, indiquant que le serveur Zabbix communique avec succès avec son agent.
C. Créer un Élément (Item) personnalisé
Bien que le template "Linux by Zabbix agent" surveille le système d'exploitation, il ne vérifie pas si votre service Apache fonctionne. Créons un "Item" pour cela.
- Allez dans Data collection -> Hosts et cliquez sur
web-server-01
. - Allez dans l'onglet Items de cet hôte.
- Cliquez sur Create item.
- Remplissez le formulaire :
- Name :
Disponibilité du service Web (port 80)
- Type :
Simple check
(car c'est le serveur Zabbix qui va faire le test, pas l'agent). - Key : C'est la commande de supervision. Entrez
net.tcp.service[http,,80]
. Cette clé demande à Zabbix de vérifier si le servicehttp
(ou n'importe quel service TCP) répond sur le port80
. - Type of information :
Numeric (unsigned)
- Update interval :
1m
(vérifier toutes les minutes).
- Name :
- Cliquez sur Add.
D. Mettre en Place un Déclencheur (Trigger) et une Alerte
Un "Item" ne fait que collecter une donnée (ici, 0 pour "down" et 1 pour "up"). Un "Trigger" analyse cette donnée et change d'état (de "OK" à "PROBLEM").
- Sur la page de l'hôte
web-server-01
, allez dans l'onglet Triggers. - Cliquez sur Create trigger.
- Remplissez le formulaire :
- Name :
Le service Web sur {HOST.NAME} est inaccessible
({HOST.NAME} est une macro qui sera remplacée par le nom de l'hôte). - Severity :
High
(ou la sévérité de votre choix). - Expression : C'est la condition logique. Cliquez sur "Add" pour ouvrir le constructeur d'expression.
- Item : Sélectionnez l'item que nous venons de créer :
Disponibilité du service Web (port 80)
. - Function :
last()
(la dernière valeur reçue). - Result :
= 0
(l'expression se déclenchera si la dernière valeur est 0). - Cliquez sur "Insert". L'expression
{web-server-01:net.tcp.service[http,,80].last()}=0
apparaît.
- Item : Sélectionnez l'item que nous venons de créer :
- Name :
- Cliquez sur Add.
À partir de maintenant, si le service web sur web-server-01
devient inaccessible, le trigger passera à l'état "PROBLEM" et apparaîtra sur votre tableau de bord. Pour recevoir un email, il vous faudra configurer un "Media Type" (dans Alerts -> Media types) et lier cet email à votre utilisateur (dans Administration -> Users -> votre_user -> Media)
Pour aller plus loin
Zabbix est un univers en soi. Maintenant que vous maîtrisez les bases, voici quelques pistes pour approfondir vos compétences :
- Les Templates : Apprenez à créer vos propres templates pour standardiser la supervision de groupes d'hôtes similaires (ex: tous vos serveurs de base de données).
- La Découverte de Bas Niveau (LLD - Low-Level Discovery) : Utilisez LLD pour découvrir automatiquement des éléments à superviser, comme les systèmes de fichiers d'un serveur ou les interfaces d'un switch, et leur appliquer des items et triggers dynamiquement.
- Les Alertes Avancées : Explorez les scénarios d'escalade (si un admin ne répond pas en 15 min, alerter son manager) et l'intégration avec des outils tiers comme Slack, PagerDuty ou Microsoft Teams.
- L'API Zabbix : Automatisez la configuration de Zabbix en interagissant avec son API, par exemple via des scripts Python ou Ansible.
- Consultez la documentation officielle de Zabbix 7.0, qui est une ressource inestimable : Zabbix Documentation
Conclusion
Mettre en place une supervision efficace est un pilier de la gestion d'infrastructure moderne. Zabbix 7.0 LTS se présente comme une solution extraordinairement puissante, mature et entièrement open-source pour atteindre cet objectif. Au cours de cet article, nous avons couvert le spectre complet pour vous rendre opérationnel :
- Nous avons démystifié l'architecture et les concepts fondamentaux de Zabbix.
- Nous avons détaillé, étape par étape, l'installation complète de la plateforme sur un serveur Linux.
- Nous avons mis en pratique ces connaissances en configurant votre toute première supervision d'un service critique, avec agent, item personnalisé et trigger d'alerte.
Vous disposez maintenant des clés pour ne plus subir les pannes, mais pour les anticiper. En continuant d'explorer la richesse fonctionnelle de Zabbix, vous transformerez votre supervision en un véritable outil d'aide à la décision et de garantie de la qualité de service pour votre entreprise.