Chapitre 314 minIntermédiaire
Zabbix : architecture, agent et proxy
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- nommer les composants de Zabbix et le rôle de chacun ;
- choisir entre contrôle passif et contrôle actif, et ouvrir les bons ports ;
- placer un proxy pour un site distant ou une zone filtrée ;
- choisir une version de Zabbix d'après son cycle de vie.
3 exercices corrigés2 schémas
Zabbix est un logiciel libre de supervision qui collecte des mesures sur les serveurs, les équipements réseau et les applications, les stocke dans une base de données, les compare à des seuils et envoie des alertes. Son architecture tient en cinq briques : le serveur, la base de données, l'interface web, les agents et, pour les sites distants, les proxys. Ce chapitre décrit le rôle de chacune, la différence entre contrôles passifs et actifs, les ports à ouvrir et le choix d'une version.
Les composants
| Composant | Rôle | Chez Sorbier |
|---|---|---|
Serveur Zabbix (zabbix_server) | Le cœur : il planifie les collectes, reçoit les valeurs, évalue les déclencheurs, crée les événements et exécute les actions (alertes, scripts) | Sur srv-journaux (192.168.10.180) |
| Base de données | Stocke la configuration (hôtes, modèles, utilisateurs) et toutes les valeurs collectées. MySQL, MariaDB ou PostgreSQL (avec l'extension TimescaleDB pour les gros volumes) | MariaDB 11.8, sur srv-journaux |
| Interface web (frontend) | Application PHP servie par Apache ou Nginx : configuration, consultation, tableaux de bord, rapports. Elle lit et écrit dans la base, et parle au serveur | https://srv-journaux.ad.sorbier.example/zabbix |
Agent (zabbix_agentd) ou agent 2 (zabbix_agent2) | Programme installé sur la machine supervisée : il mesure le processeur, la mémoire, les disques, les services, les journaux, et répond au serveur ou lui envoie ses mesures | Sur chaque serveur Linux et Windows |
Proxy (zabbix_proxy) | Collecte à la place du serveur sur un site distant ou dans une zone filtrée, garde les valeurs en tampon et les transmet au serveur | prx-mrs à l'agence de Marseille (10.30.1.162) |
Pour les équipements où l'on ne peut rien installer (switchs, routeurs, pare-feu, NAS, onduleurs, imprimantes), le serveur ou le proxy interroge leur agent SNMP intégré (chapitre 7), ou leur API en HTTP.
Agent ou agent 2 ?
Zabbix fournit deux agents, interchangeables pour l'essentiel :
| Agent (classique) | Agent 2 | |
|---|---|---|
| Langage | C | Go |
| Paquet Debian | zabbix-agent | zabbix-agent2 |
| Fichier de configuration | /etc/zabbix/zabbix_agentd.conf | /etc/zabbix/zabbix_agent2.conf |
| Greffons (plugins) | Non | Oui : Docker, MySQL, Redis, SMART, certificats web, Ceph… intégrés ; PostgreSQL, MongoDB et MSSQL en greffons chargeables (paquets zabbix-agent2-plugin-…) |
| Contrôles actifs simultanés | Un traitement à la fois par serveur | Plusieurs en parallèle, avec un tampon persistant possible |
| Modèles officiels | … by Zabbix agent | Les mêmes, plus les modèles … by Zabbix agent 2 |
Les deux écoutent sur le même port et comprennent les mêmes clés de base (system.cpu.util, vfs.fs.size…). Choisis l'agent 2 pour une installation neuve : il est livré pour Linux et Windows, et ses greffons évitent d'écrire des scripts pour superviser une base de données ou un certificat. Ce cours l'utilise partout.
Contrôle passif et contrôle actif
C'est la notion d'architecture la plus importante, et la plus demandée en entretien : qui ouvre la connexion.
- Contrôle passif (passive check). Le serveur (ou le proxy) se connecte à l'agent sur le port TCP 10050 et lui demande une valeur : « donne-moi
system.cpu.util». L'agent répond. Le pare-feu doit autoriser le serveur à joindre l'agent sur 10050. - Contrôle actif (active check). L'agent se connecte au serveur sur le port TCP 10051, lui demande la liste des éléments à mesurer pour son nom d'hôte, les mesure lui-même à l'intervalle prévu et renvoie les valeurs par le même chemin. Le pare-feu doit autoriser l'agent à joindre le serveur sur 10051 ; rien n'entre vers l'agent.
| Contrôle passif | Contrôle actif | |
|---|---|---|
| Qui se connecte | Le serveur vers l'agent | L'agent vers le serveur |
| Port | TCP 10050 sur la machine supervisée | TCP 10051 sur le serveur ou le proxy |
| Paramètre de l'agent | Server= (qui a le droit d'interroger) | ServerActive= (où envoyer) et Hostname= (sous quel nom) |
| Type d'élément dans Zabbix | Zabbix agent | Zabbix agent (active) |
| Avantages | Simple à tester (zabbix_get), le serveur voit immédiatement un agent muet | Traverse un pare-feu ou un NAT sortant, charge moindre pour le serveur, mesures gardées en tampon si le serveur est injoignable |
| Indispensable pour | — | Surveiller un journal (log[], eventlog[]), car seul l'agent peut lire en continu ; machines derrière un NAT |
Un même agent peut faire les deux : certains éléments en passif, d'autres en actif. Les modèles officiels existent en deux variantes, par exemple Linux by Zabbix agent (passif) et Linux by Zabbix agent active.
Chez Sorbier, les serveurs du VLAN 20 sont dans le même réseau que srv-journaux : le contrôle passif, plus simple à diagnostiquer, est retenu. Le serveur web de la DMZ, lui, utilise le contrôle actif. Exposé à Internet, il vaut mieux qu'il n'écoute sur aucun port de plus : en actif, l'agent n'ouvre pas le port 10050. Et la DMZ envoie déjà ses journaux à srv-journaux (matrice des flux du cours Cybersécurité) : une seule règle s'ajoute, 192.168.10.225 vers 192.168.10.180, TCP 10051. Retiens la méthode : le sens de la connexion décide de la règle de pare-feu.
Les types d'éléments
Un élément (item) est une mesure : une valeur collectée à intervalle régulier et stockée. Zabbix sait collecter de nombreuses façons ; voici celles que tu utiliseras.
| Type d'élément | Qui collecte, comment | Exemple |
|---|---|---|
| Zabbix agent / Zabbix agent (active) | L'agent sur la machine | vfs.fs.size[/,pused], service.info[DNS] |
| SNMP agent | Le serveur interroge l'équipement en SNMP | get[1.3.6.1.2.1.1.3.0] (durée de fonctionnement) |
| SNMP trap | Le serveur reçoit un trap | snmptrap["linkDown"] |
| Simple check | Le serveur teste lui-même, sans agent | icmpping, net.tcp.service[https,,443] |
| HTTP agent | Le serveur appelle une URL ou une API | API de Proxmox VE, point /health d'une application |
| Script | Un petit programme JavaScript exécuté par le serveur | Modèle Proxmox VE by HTTP |
| Calculated | Une formule sur d'autres éléments | Espace total de plusieurs volumes |
| Dependent item | Une valeur extraite d'un autre élément, sans nouvelle collecte | Chaque champ d'une réponse JSON |
| Zabbix internal | Zabbix se mesure lui-même | File d'attente, charge de ses processus |
| Zabbix trapper | Une valeur envoyée par un script avec zabbix_sender | Résultat d'une sauvegarde nocturne |
Historique et tendances
Zabbix garde deux formes de données numériques :
- l'historique (history) : chaque valeur brute, avec son horodatage. Précis, mais volumineux : un élément interrogé toutes les minutes produit 525 600 valeurs par an ;
- les tendances (trends) : pour chaque heure, le minimum, la moyenne, le maximum et le nombre de valeurs. 8 760 lignes par an et par élément, suffisant pour les graphiques sur plusieurs mois et la métrologie.
Chaque élément fixe sa durée de conservation de l'historique et des tendances (de quelques jours à plusieurs années). Le housekeeper, un processus du serveur, supprime régulièrement les données trop anciennes (Administration > Housekeeping). Garde l'historique quelques semaines et les tendances un an ou plus : tu as le détail pour diagnostiquer un incident récent, et les tendances pour comparer avec l'an dernier.
Le proxy : un site distant, une zone filtrée
Un proxy Zabbix collecte à la place du serveur, sur un périmètre donné, et lui transmet les valeurs. Il sert dans trois cas :
- un site distant : à Marseille, le proxy
prx-mrsinterroge les agents et les équipements de l'agence en local. Seul le proxy parle au siège, avec une seule connexion. Si le lien vers Lyon tombe, il continue de collecter et garde les valeurs dans sa base locale, puis il les renvoie au retour du lien : aucune mesure n'est perdue ; - une zone filtrée : un proxy placé dans la DMZ ou dans un réseau isolé évite d'ouvrir des flux entre le serveur et chaque machine de la zone ;
- la charge : au-delà de quelques milliers d'hôtes, des proxys répartissent la collecte.
Le proxy fonctionne lui aussi en deux modes :
| Mode | Connexion | Port |
|---|---|---|
| Proxy actif (le plus courant) | Le proxy se connecte au serveur, demande sa configuration et envoie ses données | TCP 10051 sur le serveur |
| Proxy passif | Le serveur se connecte au proxy | TCP 10051 sur le proxy |
Le proxy a sa propre petite base (SQLite suffit) et, depuis Zabbix 7.0, peut garder ses données en mémoire. Les groupes de proxys, nouveaux dans la version 7.0 (Administration > Proxy groups), répartissent les hôtes entre plusieurs proxys et les redistribuent si l'un d'eux tombe. Le serveur lui-même peut fonctionner en grappe (HA cluster) : plusieurs nœuds, un seul actif, les autres prêts à prendre le relais.
Quelle version de Zabbix ?
Zabbix publie deux sortes de versions :
| Type | Rythme | Support | Exemple |
|---|---|---|---|
| LTS (Long Term Support) | Tous les 18 mois environ | 3 ans de support complet, puis 2 ans de correctifs de sécurité | 7.0 LTS : publiée le 4 juin 2024, support complet jusqu'au 30 juin 2027, correctifs jusqu'au 30 juin 2029 |
| Standard | Entre deux LTS | Jusqu'à la LTS suivante, puis quelques mois de correctifs | 7.2, puis 7.4 (publiée le 1er juillet 2025) |
En entreprise et pour ton épreuve, prends la LTS : 7.0 en 2026. Les versions standard apportent des nouveautés plus tôt, mais t'obligent à migrer chaque année. La version 8.0 LTS est annoncée par l'éditeur pour le quatrième trimestre 2026 ; quand elle sortira, attends ses premières versions correctives avant de migrer une production. Les numéros de correctifs (7.0.31, 7.0.32…) se mettent à jour avec apt upgrade, sans changer la base de manière incompatible.
Exercices
Exercice 1 sur 3 Ports et sens des connexions Réussi À revoir
Pour chaque cas, donne la source, la destination, le port et le protocole de la règle de pare-feu nécessaire.
- Le serveur Zabbix
192.168.10.180interroge en passif l'agent de srv-gestion192.168.10.179. - L'agent du serveur web
192.168.10.225(DMZ) fonctionne en actif. - Le proxy actif de Marseille
10.30.1.162remonte vers le serveur. - Le switch SW-ETAGE1
192.168.10.211envoie ses traps au serveur.
Voir la réponseMasquer la réponse de l'exercice 1
192.168.10.180→192.168.10.179, TCP 10050. Les deux sont dans le VLAN 20 : le flux ne traverse pas pfSense, aucune règle n'est nécessaire sur le pare-feu, seulement sur le pare-feu local de srv-gestion s'il en a un.192.168.10.225→192.168.10.180, TCP 10051, règle sur l'interface DMZ de pfSense.10.30.1.162→192.168.10.180, TCP 10051, sur l'interface de pfSense qui fait face au routeur R-LYON (selon le plan retenu dans le cours Pare-feu pfSense).192.168.10.211→192.168.10.180, UDP 162, sur l'interface ADMIN. Ce flux figure déjà dans la matrice de Sorbier (« traps SNMP »).
Tu avais trouvé ?
Exercice 2 sur 3 Passif ou actif ? Réussi À revoir
Choisis le mode de contrôle et justifie.
- Une VM Linux dans le même VLAN que le serveur Zabbix.
- Le portable d'un commercial, connecté tantôt au réseau de l'entreprise, tantôt chez un client, derrière un NAT.
- La surveillance des lignes
ERRORdans le journal/var/log/gestion/app.log. - Une machine dont la politique de sécurité interdit toute connexion entrante.
Voir la réponseMasquer la réponse de l'exercice 2
- Passif : flux simple, testable avec
zabbix_get, et le serveur détecte immédiatement un agent qui ne répond plus. L'actif fonctionnerait aussi. - Actif : derrière un NAT, le serveur ne peut pas joindre le portable ; c'est le portable qui se connecte au serveur dès qu'il le peut (il faut alors que le serveur ou un proxy soit joignable, par exemple par le VPN).
- Actif obligatoirement : les éléments
log[]sont toujours des contrôles actifs, l'agent lit le fichier en continu et n'envoie que les nouvelles lignes. - Actif : aucune connexion n'entre vers la machine, c'est elle qui ouvre la connexion sortante vers TCP 10051.
Tu avais trouvé ?
Exercice 3 sur 3 Le proxy de Marseille Réussi À revoir
Le lien entre Lyon et Marseille est coupé de 10 h à 10 h 40. Le proxy actif de l'agence fonctionne.
- Les mesures des serveurs de Marseille entre 10 h et 10 h 40 sont-elles perdues ?
- Le technicien reçoit-il une alerte si le serveur srv-mrs tombe à 10 h 15 ?
- Comment Zabbix peut-il signaler la coupure du lien elle-même ?
Voir la réponseMasquer la réponse de l'exercice 3
- Non : le proxy continue de collecter et garde les valeurs dans son tampon, puis il les envoie au serveur au retour du lien. Les graphiques seront complets.
- Pas pendant la coupure : les déclencheurs sont évalués sur le serveur, qui ne reçoit plus rien. L'alerte partira au retour du lien, quand les valeurs arriveront. (Zabbix évite les fausses alertes
nodata: par défaut, ces déclencheurs tiennent compte de la disponibilité du proxy et ignorent la période de coupure ; on peut l'empêcher avec le paramètre"strict". Les dépendances du chapitre 9 traitent les autres alertes en cascade.) - Par le proxy lui-même : le serveur connaît l'heure du dernier contact de chaque proxy (colonne Last seen de Administration > Proxies, élément interne
zabbix[proxy,prx-mrs,lastaccess]). Un déclencheur sur cet élément alerte quand le proxy ne s'est pas manifesté depuis quelques minutes. On ajoute un ping, depuis le siège, de l'interface du routeur de Marseille.
Tu avais trouvé ?