
Supervision Zabbix
Projet Zabbix
Prérequis Zabbix :
Prérequis matériels
Les exigences matérielles dépendent du nombre d’hôtes et d’éléments surveillés. Voici une estimation pour un petit environnement :
Élément | Minimum | Recommandé |
Processeur | 1 core | 2+ cores |
RAM | 1 Go | 2 Go ou plus |
Espace disque | 5 Go | 10 Go+ (selon la rétention des données) |
1.2 Prérequis logiciels
Système d’exploitation
Zabbix peut être installé sur :
- Linux : Debian, Ubuntu, CentOS, RHEL, Rocky Linux, etc.
- FreeBSD
- (Peut aussi être installé sur Windows, mais c’est rare pour le serveur)
Serveur Web
- Apache, Nginx, ou autre serveur web compatible PHP
Base de données
- MySQL / MariaDB (le plus courant)
- PostgreSQL
- Oracle (support limité)
- SQLite (à usage de test uniquement)
PHP
Zabbix frontend (interface web) nécessite PHP avec certaines extensions activées :
- php-mbstring
- php-bcmath
- php-gd
- php-xml
- php-mysql ou php-pgsql selon la BDD
- php-json
- php-ldap (si utilisé)
- php-gettext
1.3 Ports réseau
Assurez-vous que les ports suivants sont ouverts :
Composant | Port | Protocole |
Zabbix Server | 10051 | TCP |
Zabbix Agent | 10050 | TCP |
Interface Web | 80 (HTTP) / 443 (HTTPS) | TCP |
Base de données | 3306 (MySQL) / 5432 (PostgreSQL) | TCP |
2. Les avantages de Zabbix
🏷️ Avantage | 🔍 Description |
💸 Gratuit & Open Source | Pas de coût de licence, accès au code source, communauté active. |
🖥️ Supervision unifiée | Surveille serveurs, réseaux, applications, bases de données, VMs, conteneurs, cloud, etc. |
🧲 Méthodes de collecte variées | Agent Zabbix, SNMP, JMX, IPMI, HTTP, SSH, scripts personnalisés. |
🌐 Interface web moderne | Tableaux de bord personnalisables, cartes réseau interactives, rapports graphiques. |
🔔 Alertes intelligentes | Notifications par e-mail, Slack, SMS, etc., avec gestion des escalades. |
🔎 Découverte automatique | Détecte automatiquement les hôtes, services, interfaces réseau. |
🧩 Templates prédéfinis | Pour Linux, Windows, Cisco, bases de données, avec possibilité de personnalisation. |
⚡ Haute performance & scalabilité | Supporte des milliers d’hôtes, proxies Zabbix pour une architecture distribuée. |
🔐 Sécurisé | Chiffrement TLS/SSL, rôles utilisateurs, audit complet des actions. |
🤖 API complète | Pour automatiser, intégrer avec d’autres outils IT (CMDB, scripts, DevOps…). |
3. Qu’est-ce que Zabbix ?
Zabbix est un outil de supervision open source (gratuit) qui permet de surveiller en temps réel les performances, la disponibilité et la santé de vos équipements informatiques.
3.1 Fonction principale
Zabbix collecte, stocke, analyse et affiche des données de monitoring pour :
- les serveurs
- les équipements réseau
- les applications
- les bases de données
- les services cloud
- les conteneurs Docker, VMs, etc.
3.2 Comment ça fonctionne ?
Zabbix est basé sur une architecture en plusieurs composants :
Composant | Rôle |
Zabbix Server | Cœur du système, collecte et analyse les données. |
Zabbix Agent | Petit programme installé sur les hôtes pour transmettre des métriques. |
Base de données | Stocke toutes les données collectées (MySQL, PostgreSQL, etc.). |
Frontend Web | Interface web pour visualiser les graphiques, alertes, tableaux de bord. |
Zabbix Proxy | Intermédiaire pour superviser des réseaux distants ou alléger la charge du serveur. |
4. Environnement du LAB
4.1 Architecture de Base à Superviser
- HAProxy : 192.168.1.100 (répartition de charge)
- WEB1 : 192.168.1.101 (Apache + Virtual Hosts)
- WEB2 : 192.168.1.102 (Apache + Virtual Hosts)
- Nagios : 192.168.1.110

4.2 Objectifs pour le serveur de supervision.
- Installer et sécuriser le serveur de supervision.
- Installer agent/exporter sur WEB1, WEB2 et HAProxy.
- Définir les hôtes (hosts) dans l’outil de supervision.
- Configurer les services à surveiller :
- Ping (ICMP)
- Processus Apache (apache2)
- Processus HAProxy (haproxy)
- Charge CPU et mémoire
- Créer des alertes (mail ou webhook) en cas de panne ou charge élevée.
- Présenter un tableau de bord synthétique et un rapport de tests (arrêt simulé de WEB1, bascule vers WEB2, remontée des alertes)
4.3 Supervision avec Zabbix
Étapes :
Installer Zabbix Server + frontend web et base de données.
Installer Zabbix Agent sur WEB1, WEB2 et HAProxy.
Dans l’interface Zabbix, créer trois hôtes (WEB1, WEB2, HAProxy) avec leur interface Agent.
- Associer les templates intégrés :
- Template OS Linux (CPU, mémoire, ping)
- Template Apache by HTTP
- Template HAProxy (Utiliser le template officiel Zabbix pour HAProxy)
- Vérifier la collecte des données, paramétrer les triggers (critères de seuil pour charge et processus).
- Créer un dashboard personnalisé regroupant l’état des trois hôtes et les graphes clés.
5 . Mise à jour de linux
5.1 Mettre à jour le système
Mettre a jour le système :
- sudo apt update && sudo apt upgrade -y

5.2 Installer MariaDB (Base de données)
Installation de MariaDB server et client :
- sudo apt install mariadb-server mariadb-client -y

5.3 Sécuriser MariaDB :
Pour sécuriser votre Mariadb faite :
- sudo mysql_secure_installation

Répondez aux questions :
- Définir le mot de passe root : Oui
- Supprimer les utilisateurs anonymes : Oui
- Interdire les connexions root distantes : Oui
- Supprimer la base de test : Oui
- Recharger les privilèges : Oui


5.4 Créer la base de données pour Zabbix
- sudo mysql -u root -p

Maintenant nous sommes dans notre Mariadb on va créer un compte avec Mot de passe :
Remplacez 'MotDePasseFort'
par un mot de passe sécurisé.
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY ‘MotDePasseFort‘;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
FLUSH PRIVILEGES;
EXIT;

6 Ajouter le dépôt officiel Zabbix
6.1 Téléchargement des depots Zabbix 7.0
Aller sur le site : https://www.zabbix.com/download
Ou utilisez directement :
- wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
- sudo dpkg -i zabbix-release_7.0-1+debian12_all.deb
- sudo apt update
6.2 Installer les paquets Zabbix
On va installer les paquets pour Zabbix
- sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y

- sudo apt install -t zabbix zabbix-frontend-php zabbix-apache-conf -y
- apt show zabbix-frontend-php | grep Version

– sudo apt install php-mysql -y
Si tout va bien vous aurez cette version :

6.3 Importer le schéma de base de données
Maintenant on va importer la base de notre Zabbix sur notre MariaDB :
- zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix

6.4 Configurer le serveur Zabbix
Éditer le fichier de configuration :
- sudo nano /etc/zabbix/zabbix_server.conf
Modifier les lignes suivantes :
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=MotDePasseFort



7. Configurer PHP pour Zabbix
Le fichier est installé ici :
- sudo nano /etc/zabbix/apache.conf

Assurez-vous de rajouter les paramètres de fuseau horaire sont corrects :
- php_value date.timezone Europe/Paris

Changez selon votre zone si besoin (ex: UTC
, Europe/Paris
, America/New_York
, etc.)
7.2 Démarrer et activer les services
- sudo systemctl restart zabbix-server zabbix-agent apache2

- sudo systemctl enable zabbix-server zabbix-agent apache2

8. Accéder à l’interface Web
8.1 Ouvrez votre navigateur et allez à :
Choisissez votre language et faite next.






8.2 Connexion à Zabbix
- Utilisateur :
Admin
- Mot de passe :
zabbix
(à changer après connexion)

Voice la page d’accueil de Zabbix :

9. Installer Zabbix Agent sur WEB1, WEB2 et HAProxy
Sur chaque machine (WEB1, WEB2, HAProxy) :
9.1 Ajouter le dépôt

- sudo dpkg -i zabbix-release_latest_7.0+debian12_all.deb

- sudo apt update

9.2 Installer l’agent
- sudo apt install zabbix-agent

Modifier la conf
- sudo nano /etc/zabbix/zabbix_agentd.conf
Modifier :
Server=IP_DU_SERVEUR_ZABBIX

ServerActive=IP_DU_SERVEUR_ZABBIX

Hostname=WEB1 # ou WEB2 / HAProxy selon la machine

9.3 Redémarrer l’agent
- sudo systemctl restart zabbix-agent
- sudo systemctl enable zabbix-agent
10. Ajouter les hôtes dans l’interface Zabbix
10.1 Dans l’interface Zabbix web :
Va dans Configuration → Hosts → Create Host


Renseigne :
Host name : WEB1
Groups : Linux servers
Agent interface : IP réelle de WEB1 (10.0.0.101)

Répètez pour WEB2 et HAProxy
10.2 Associer les templates intégrés
Toujours sur chaque hôte dans Zabbix :
Clique sur l’hôte (ex. WEB1)
Onglet Templates
Clique sur Link new templates :
Template OS Linux by Zabbix agent
Template App Apache by HTTP (si Apache installé)
Template App HAProxy by HTTP (pour HAProxy)
10.3 Résoudre le problème Apache des Serveurs Web1 et 2
Maintenant que mes Template sont installés sur mes hôtes on peut voir que j’ai des erreurs mes serveurs

Quand je clique sur mon Web1 on peut voir un problème sur mon Apache

Pour régler ce problème, il vous suffit cliquer sur « Web1 » et dirigez-vous dans Hôte

Vous allez avoir le menu de votre Hôte, allez dans « Macros »

Ensuite dans Macros héritées et de l’hôte et rajoutez votre adresse IP de votre serveur Web, pour ma part c’est le Web1 (10.0.0.101) et actualiser.

Maintenant aller sur votre serveur Web1, on va rajouter l’adresse IP de notre Zabbix pour qu’il puisse entrer en contact avec notre apache2.
- sudo nano /etc/apache2/mods-enabled/status.conf

Et modifier ce bloc :
<Location « /server-status »>
SetHandler server-status
Require ip 127.0.0.1 (localhost)
Require ip 10.0.0.112 (Ip Zabbix)
</Location>

Reproduisez cela sur votre Serveur Web2 aussi.
11. Créer une alerte mail.
11.1 Prérequis Gmail
Assure-toi de ces deux choses sur ton compte Gmail avant de configurer Zabbix :
La validation en deux étapes est activée :
- Va ici : https://myaccount.google.com/security
- Active la vérification en deux étapes (si ce n’est pas encore fait).
- Va ici : https://myaccount.google.com/apppasswords
- Choisis « Mail » puis « Autre » (ex: Zabbix).
- Copie le mot de passe généré (sans les espaces).
11.2 Créer ou vérifier le type de média (Media type)
Dans Zabbix Web :
- Va dans Administration → Media types
- Clique sur « Create media type » (ou sélectionne un déjà existant « si tu veux modifier)
- Renseigne les champs comme ceci :
Champ | Valeur |
Name | Gmail SMTP |
Type | |
SMTP server | smtp.gmail.com |
SMTP server port | 587 |
Connection security | STARTTLS |
SMTP helo | localhost |
SMTP email | tonadresse@gmail.com |
Authentication | Username and password |
Username | tonadresse@gmail.com |
Password | le mot de passe d’application généré |

11.3 Ajouter le média à ton utilisateur
Va dans Administration → Users
Clique sur Admin
Onglet Media
Clique sur « Add » :
Type : Gmail SMTP
Send to : ton adresse e-mail complète (ex: tonadresse@gmail.com
)
When active : laisse 1-7,00:00-24:00
Use if severity : coche tout
Status : enabled

Vola a quoi devrait ressembler votre compte Admin.

11.4 Créer une action Alertes.
Pour cela vous rendre dans « Alertes -> Actions -> Actions de déclencheur.

En haut a droite vous avez un petit bouton « Créer une action »

Et la on va crée une action pour notre Apache, quand notre serveur Apache sera down ou en marche qu’on soit alerter par mail de ceci.
Nom : Apache2
Condition -> Ajouter -> Déclencheurs -> Taper Apache

Rajouter vos serveurs web1/2 Apache : service is down , vous recevrez une alerte mail quand vos serveur Apache seront down.
Pour ma part j’ai rajouté quelques conditions pour avoir une alerte mail

Coché bien « Activé ».
11.5 Test serveur Web1 down
Sur mon serveur Web1 je vais stop mon service Apache avec.
- Sudo systemctl stop apache2

Sur votre interface Web Zabbix :


Normalement vous devriez recevoir un mail :

12. Questions :
- Pourquoi le monitoring est-il essentiel dans une architecture haute disponibilité ?
Le monitoring garantit la continuité de service. En haute disponibilité (HA), le moindre dysfonctionnement (latence, CPU, disque, crash) peut compromettre un basculement automatique ou la répartition de charge. Le monitoring :
détecte les pannes en temps réel
déclenche les bascules automatiques
assure une vue globale de la résilience du système
- Quelles sont les métriques critiques à surveiller sur un serveur web (Apache) et un répartiteur de charge (HAProxy) ?
Un serveur Apache :
Temps de réponse HTTP (Response Time
)
Nombre de requêtes/s (Request rate
)
Nombre de connexions actives
Utilisation CPU/RAM
Fichiers log d’erreurs
Un HAProxy :
Statut des backends (UP/DOWN
)
Nombre de sessions actives
Latence vers les serveurs cibles
Erreurs 5xx ou refus de connexions
Saturation des files d’attente
- Quelle est la différence entre le monitoring agent-based et agentless ? Donnez des exemples d’outils pour chaque approche.
Agent-based : nécessite l’installation d’un agent logiciel sur la machine (ex : Zabbix agent, Telegraf)
Agentless : interroge à distance via protocoles standards (SNMP, HTTP, SSH)
- Comment détecter une attaque DDoS via des outils de supervision ?
Pics anormaux de connexions simultanées
Surcharge CPU/RAM ou saturation réseau
Baisse de performance ou timeout HTTP
Augmentation des erreurs 5xx
Zabbix ou Prometheus peuvent générer une alerte sur :
connections > threshold
network input > 1Gbps
http_responses_5xx > 10%
- Quels sont les avantages et inconvénients d’un monitoring centralisé vs. distribué ?
Type | Avantages | Inconvénients |
Centralisé | Facilité de gestion, dashboard unique | Point de défaillance, goulot d’étranglement |
Distribué | Tolérance aux pannes, scalabilité horizontale | Complexité, cohérence des données difficile |
- Comment garantir la sécurité des données collectées par un outil de supervision ?
Communication chiffrée (TLS) entre agent et serveur
Authentification par clés ou jetons
Chiffrement des bases de données
Contrôle d’accès via RBAC (roles)
Journalisation des accès
- Qu’est-ce qu’un health check et comment le configurer pour un service web ?
Un health check vérifie si un service est disponible et répond correctement.
Exemples :
Pour HAProxy :
option httpchk GET /health HTTP/1.1\r\nHost:localhost
Pour Zabbix :
Utiliser web scenario
ou http.agent
- Pourquoi est-il important de configurer des seuils (thresholds) adaptés pour les alertes ?
Éviter les faux positifs
Adapter les alertes aux charges normales
Détecter les problèmes avant impact utilisateur
Ex : CPU à 90% pendant 10 min ≠ pic temporaire
- Comparez Nagios, Zabbix et Prometheus en termes de scalabilité, facilité de configuration et coût.
Critère | Nagios | Zabbix | Prometheus |
Scalabilité | Moyenne | Bonne | Excellente |
Facilité | Moyenne | Facile | Technique |
Modèles d’alertes | Basique | Avancé | Puissant |
Visualisation | Faible | Intégré | Grafana |
Coût | Gratuit | Gratuit | Gratuit |
- Quel outil choisiriez-vous pour surveiller une infrastructure cloud (AWS/Azure) et pourquoi ?
Prometheus + Grafana avec Cloud Exporters (CloudWatch, Azure Monitor)
Adapté aux environnements cloud
Auto-découverte des ressources
Grande scalabilité
Sinon : Zabbix fonctionne aussi avec les bons templates, mais demande plus de configuration.
- Comment superviser des conteneurs Docker avec ces outils ?
Prometheus avec cAdvisor ou node_exporter
Zabbix avec l’agent Docker ou SNMP container
Surveiller :
CPU/RAM des conteneurs
Réseaux, logs
Disponibilité des services exposés
- Quelles sont les limites de Fail2Ban face à une attaque DDoS, et comment les contourner avec un outil de supervision ?
Basé sur les logs : lent face à un DDoS massif
Ne bloque que par IP (inutile contre attaques distribuées)
Compléter avec :
Zabbix/Prometheus : détection de comportement anormal
Pare-feu dynamique (iptables, nftables)
Reverse proxy (Cloudflare, HAProxy, NGINX rate limit)
- Comment intégrer la supervision dans un pipeline CI/CD (exemple : alertes sur les déploiements) ?
Alerte sur échec de déploiement (status 500 ou downtime)
Vérification auto post-deploy avec web scenario
Intégration de checks dans GitLab CI, Jenkins, etc.
Exemple avec Prometheus Alertmanager + Slack
- Qu’est-ce que l’observability et en quoi va-t-elle au-delà du monitoring traditionnel ?
Monitoring = collecte de métriques connues
Observability = capacité à comprendre le comportement global du système à partir de :
Logs
Traces (Jaeger, OpenTelemetry)
Métriques
- Un serveur WEB1 est en charge CPU à 95% depuis 5 minutes. Quelle procédure suivre pour investiguer avec votre outil de supervision
Zabbix trigger se déclenche
Aller dans Latest data
Vérifier :
Processus consommateurs (top
, ps aux
)
system.cpu.util
, system.load
, system.swap
Corréler avec :
Pics de trafic ?
Cron ou batch en cours ?
Actions possibles :
Redémarrage service fautif
Équilibrage de charge
Notification / escalade
12.1 Questions spécifiques à Zabbix :
- Expliquez le rôle des templates dans Zabbix.
Les templates sont des modèles réutilisables dans Zabbix contenant :
des éléments de supervision (items)
des triggers (alertes)
des graphiques, applications, discovery rules, etc.
Exemple : Template OS Linux by Zabbix agent
supervise la charge CPU, RAM, espace disque, uptime, etc.
- Comment fonctionne la découverte automatique (auto-discovery) des hôtes dans Zabbix ?
La découverte réseau (Network Discovery) permet à Zabbix de détecter automatiquement les hôtes via :
ICMP ping
Port scan (ex : port 22 ou 10050)
SNMP ou agent Zabbix
Configuration :
- Aller dans Configuration > Network Discovery
- Définir une plage d’IP (ex :
10.0.0.0/24
) - Définir les actions à exécuter quand un hôte est trouvé (ex : ajouter l’hôte + lui assigner un template)
Peut aussi être utilisé pour la Low-level discovery (LLD) (ex : disques, interfaces, processus).
- Qu’est-ce qu’un trigger et comment configurer un seuil d’alerte pour la charge CPU ?
Un trigger est une condition logique déclenchant une alerte en cas de problème détecté par un item.
Exemple de trigger CPU :
{Web1:system.cpu.util[,user].last(300)}>90
Cela déclenche une alerte si la charge CPU utilisateur dépasse 90% pendant les 5 dernières minutes.
Tu peux aussi définir plusieurs niveaux de sévérité : warning, high, disaster.
- Comment surveiller les métriques HAProxy avec Zabbix ?
Avec template officiel Zabbix :
Utilise le template “HAProxy by HTTP”
Nécessite d’avoir le statut HAProxy accessible via :
http://<IP>:<PORT>/haproxy?stats;csv
Tu dois renseigner les macros :

- Quel est le rôle d’un Zabbix proxy et dans quel cas l’utiliser ?
Le proxy Zabbix est un agent intermédiaire entre le serveur Zabbix et les hôtes à superviser.
Il collecte les données localement puis les envoie au serveur principal.
Cas d’usage :
Sites distants (WAN)
Réduction de la charge du serveur principal
Supervision de réseaux isolés ou sécurisés
Il peut fonctionner avec :
Des agents actifs
Des hôtes SNMP
- Comment visualiser des données historiques dans Zabbix ?
Dans l’interface web :
Va dans Monitoring > Latest data
Sélectionne ton hôte
Clique sur un item (ex : CPU)
Tu peux :
Visualiser les graphes
Filtrer par période
Télécharger en CSV
- Comment intégrer des scripts personnalisés dans Zabbix pour surveiller une application métier ?
Tu peux créer un item de type “External script” :
Place ton script dans : /usr/lib/zabbix/externalscripts/
Donne les droits d’exécution
Exemple :
#!/bin/bash
# check_app.sh
curl -s http://localhost/app/status | grep « OK »
Ou bien un item de type “UserParameter” dans l’agent :
Dans zabbix_agentd.conf
:
UserParameter=check.myapp.status,/usr/local/bin/check_app.sh
- Comment détecter une fuite mémoire sur un serveur Apache avec Zabbix ?
Une fuite mémoire se manifeste par une utilisation RAM qui augmente de façon constante.
Surveillance avec :
proc.mem[httpd]
ou proc.mem[apache2]
→ RAM utilisée par le processus
vm.memory.size[available]
→ mémoire disponible
system.swap.size[,used]
→ début de swap ? ⇒ alerte
Exemple de trigger :
{Web1:proc.mem[apache2].min(600)}>800000
Si Apache utilise plus de 800 MB en moyenne pendant 10 minutes.
Tu peux aussi créer un graphe personnalisé sur proc.mem[apache2].
Share this content:
Laisser un commentaire