Zabbix-Configuration-Hotes-Decouverte-Elements-Triggers
Zabbix — Hôtes, Découverte, Éléments et Déclencheurs
Résumé
Ce document explique les concepts fondamentaux de Zabbix et comment on les a mis en place dans le lab FSEC.
1. Les concepts — Comment Zabbix fonctionne
Vue d’ensemble
┌──────────┐ collecte ┌────────────┐ condition ┌──────────────┐
│ HÔTE │ ──────────────► │ ÉLÉMENT │ ──────────────► │ DÉCLENCHEUR │
│ (machine)│ des données │ (métrique) │ d'alerte │ (trigger) │
└──────────┘ └────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ ALERTE │
│ (email, etc.)│
└──────────────┘
Analogie simple :
- L’hôte = la maison qu’on surveille
- L’élément = un capteur (thermomètre, détecteur de fumée, caméra)
- Le déclencheur = la règle d’alerte (« si température > 50°C → alarme incendie »)
- L’action = ce qu’on fait quand l’alarme se déclenche (appeler les pompiers = envoyer un email)
2. Les Hôtes
C’est quoi ?
Un hôte dans Zabbix représente une machine ou un équipement à surveiller. Chaque hôte a :
- Un nom (DC01, pfSense-Master, etc.)
- Un groupe (Windows servers, Firewalls, etc.)
- Une interface = comment Zabbix communique avec lui
Les types d’interfaces
| Type | Comment ça marche | Utilisé pour |
|---|---|---|
| Agent Zabbix | Un logiciel installé sur la machine envoie les données à Zabbix | Windows, Linux |
| SNMP | Zabbix interroge la machine via le protocole SNMP (pas besoin d’installer quoi que ce soit) | pfSense, switches, imprimantes |
| ICMP | Zabbix ping la machine | Vérification simple de disponibilité |
| JMX | Pour les applications Java | Non utilisé dans notre lab |
Les templates (modèles)
Un template est un pack pré-configuré d’éléments, déclencheurs et graphiques pour un type de machine. Par exemple :
Windows by Zabbix agent→ crée automatiquement ~130 éléments (CPU, RAM, disque, services Windows)PFSense by SNMP→ crée automatiquement ~226 éléments (trafic réseau, interfaces, services pfSense)
Sans template, l’hôte est vide — il faut tout créer à la main.
Nos hôtes dans le lab
| Hôte | IP | Type d’interface | Template | Ce qu’il surveille |
|---|---|---|---|---|
| DC01 | 10.10.20.10 | Agent Zabbix (port 10050) | Windows by Zabbix agent | CPU, RAM, disque, services Windows, réplication AD |
| DC02 | 10.10.20.11 | Agent Zabbix (port 10050) | Windows by Zabbix agent | CPU, RAM, disque, services Windows |
| pfSense-Master | 10.10.20.2 | SNMP (port 161) | PFSense by SNMP | Trafic réseau, interfaces, services pfSense |
| pfSense-Backup | 10.10.20.3 | SNMP (port 161) | PFSense by SNMP | Trafic réseau, interfaces, services pfSense |
| CARP-VIPs | aucune | Aucune interface | Aucun template | Disponibilité des VIP (Zabbix ping lui-même) |
| Zabbix server | 127.0.0.1 | Agent Zabbix | Linux by Zabbix agent + Zabbix server health | Auto-supervision |
3. La Découverte réseau
C’est quoi ?
La découverte réseau permet à Zabbix de scanner automatiquement un réseau et de détecter les machines qui ont un agent Zabbix ou qui répondent en SNMP. C’est l’alternative à ajouter chaque hôte manuellement.
Comment ça fonctionne
┌─────────────────────┐
│ Règle de découverte │ "Scanne 10.10.20.1-254 toutes les heures"
│ (scan le réseau) │ "Vérifie si l'agent Zabbix répond (system.hostname)"
└──────────┬──────────┘
│ trouve des machines
▼
┌─────────────────────┐
│ Action de découverte │ "Si trouvé → ajouter l'hôte + lui attacher le template"
│ (que faire) │
└─────────────────────┘
Nos règles de découverte
Pourquoi deux règles séparées ?
Parce que Windows et Linux utilisent des templates différents. Si on avait une seule règle, on ne pourrait pas savoir automatiquement quel template assigner.
| Règle | Plage IP | Vérification | Template auto |
|---|---|---|---|
Découverte-Windows |
10.10.20.10-11, 10.10.40.50-51 | Agent Zabbix system.hostname |
Windows by Zabbix agent |
Découverte-Linux |
10.10.20.20-60, 10.10.40.52-53 | Agent Zabbix system.hostname |
Linux by Zabbix agent |
Action de découverte
L’action définit ce qui se passe quand une machine est trouvée :
- Ajouter l’hôte dans Zabbix
- Lier au modèle (template) approprié
Attention : sans action, la découverte détecte les machines mais ne fait rien. On a eu ce problème avec DC02 — il était découvert mais sans template, donc pas de supervision.
Paramètres importants
- Clé :
system.hostname— c’est la donnée que Zabbix demande à l’agent pour identifier la machine - Nom de l’hôte :
agent Zabbix "system.hostname"— Zabbix utilise le hostname configuré dans l’agent comme nom d’affichage - Intervalle :
1h— fréquence du scan (ne pas mettre trop court pour ne pas surcharger le réseau) - Plage IP : format
10.10.20.1-254,10.10.40.1-254(virgules, pas de retour à la ligne)
4. Les Éléments (Items)
C’est quoi ?
Un élément est une donnée collectée sur un hôte. C’est la brique de base de la supervision. Exemples :
- CPU utilisé en %
- Espace disque libre
- Nombre de paquets réseau
- Est-ce qu’un service Windows tourne ?
Types d’éléments qu’on utilise
| Type | Explication | Exemple dans notre lab |
|---|---|---|
| Agent Zabbix | L’agent installé sur la machine collecte la donnée | CPU de DC01, RAM de DC02 |
| Agent SNMP | Zabbix interroge la machine via SNMP | Trafic réseau de pfSense |
| Vérification simple | Zabbix lui-même exécute le check (pas besoin d’agent) | icmpping — Zabbix ping les VIP |
| Agent Zabbix (system.run) | L’agent exécute une commande custom | repadmin pour vérifier la réplication AD |
Nos éléments custom (créés à la main)
Les templates créent automatiquement des centaines d’éléments standards (CPU, RAM, disque…). Mais pour des besoins spécifiques, on crée des éléments manuels :
5 éléments ICMP pour les VIP CARP :
| Élément | Clé | Hôte | Retourne |
|---|---|---|---|
| VIP FSEC.ADM (10.10.10.1) | icmpping[10.10.10.1] |
CARP-VIPs | 1 = up, 0 = down |
| VIP FSEC.SRV (10.10.20.1) | icmpping[10.10.20.1] |
CARP-VIPs | 1 = up, 0 = down |
| VIP FSEC.CLT (10.10.30.1) | icmpping[10.10.30.1] |
CARP-VIPs | 1 = up, 0 = down |
| VIP FSEC.BCK (10.10.40.1) | icmpping[10.10.40.1] |
CARP-VIPs | 1 = up, 0 = down |
| VIP DMZ (172.16.0.1) | icmpping[172.16.0.1] |
CARP-VIPs | 1 = up, 0 = down |
Pourquoi un hôte séparé « CARP-VIPs » ?
Les VIP CARP sont des adresses IP virtuelles partagées entre le Master et le Backup. Elles ne sont pas liées à une machine physique — c’est le nœud CARP actif qui répond. On ne peut pas les mettre dans pfSense-Master car si le Master tombe, le Backup prend le relai et la VIP continue de répondre. C’est une supervision orientée service (est-ce que le réseau fonctionne ?) plutôt que machine (est-ce que le Master tourne ?).
1 élément custom pour la réplication AD :
| Élément | Clé | Hôte | Retourne |
|---|---|---|---|
| AD Replication Status | system.run["powershell -Command "(repadmin /replsummary /bysrc /errorsonly | Select-String 'error').Count""] |
DC01 | 0 = sain, >0 = erreurs |
Prérequis : il faut autoriser
system.rundans la config de l’agent Zabbix :codeAllowKey=system.run[*]Sans cette ligne, l’agent refuse d’exécuter des commandes custom (sécurité par défaut).
5. Les Déclencheurs (Triggers)
C’est quoi ?
Un déclencheur est une condition d’alerte attachée à un élément. Il dit : « si tel élément atteint telle valeur, alors il y a un problème ».
Sans déclencheur, Zabbix collecte des données mais ne prévient personne. C’est la différence entre :
- Un thermomètre (élément) → il mesure la température
- Une alarme incendie (déclencheur) → elle se déclenche quand la température dépasse un seuil
Les sévérités
| Sévérité | Couleur | Usage |
|---|---|---|
| Non classé | Gris | Information |
| Information | Bleu | À noter mais pas urgent |
| Avertissement | Jaune | Attention requise |
| Moyen | Orange | Problème à traiter |
| Haut | Rouge | Impact service important |
| Désastre | Rouge foncé | Panne critique |
La syntaxe des expressions
last(/NOM_HOTE/CLÉ_ELEMENT)=VALEUR
Exemple : last(/CARP-VIPs/icmpping[10.10.10.1])=0
Ça veut dire : « la dernière valeur de l’item icmpping[10.10.10.1] de l’hôte CARP-VIPs est égale à 0″ → la VIP ne répond plus → PROBLÈME.
Nos déclencheurs custom
5 triggers VIP CARP (sévérité Haute) :
| Déclencheur | Expression | Signification |
|---|---|---|
| VIP FSEC.ADM indisponible | last(/CARP-VIPs/icmpping[10.10.10.1])=0 |
Plus aucun pfSense ne répond sur le segment ADM |
| VIP FSEC.SRV indisponible | last(/CARP-VIPs/icmpping[10.10.20.1])=0 |
Plus aucun pfSense ne répond sur le segment SRV |
| VIP FSEC.CLT indisponible | last(/CARP-VIPs/icmpping[10.10.30.1])=0 |
Plus aucun pfSense ne répond sur le segment CLT |
| VIP FSEC.BCK indisponible | last(/CARP-VIPs/icmpping[10.10.40.1])=0 |
Plus aucun pfSense ne répond sur le segment BCK |
| VIP DMZ indisponible | last(/CARP-VIPs/icmpping[172.16.0.1])=0 |
Plus aucun pfSense ne répond sur la DMZ |
1 trigger réplication AD (sévérité Haute) :
| Déclencheur | Expression | Signification |
|---|---|---|
| Erreur de réplication AD | last(/DC01/system.run[...])>0 |
La réplication entre DC01 et DC02 a des erreurs |
Comment tester un trigger ?
Pour vérifier que le trigger fonctionne, on peut simuler une panne :
- VIP CARP : éteindre les deux pfSense → les VIP ne répondent plus → le trigger passe en PROBLÈME
- Réplication AD : arrêter DC02 → la réplication échoue → le compteur d’erreurs passe au-dessus de 0
6. Le Dashboard (Tableau de bord)
C’est quoi ?
Le dashboard est la vue d’ensemble que l’équipe d’exploitation consulte pour voir d’un coup d’œil l’état de l’infrastructure. Il regroupe des widgets :
| Widget | Type Zabbix | Ce qu’il montre |
|---|---|---|
| Problèmes actifs | Problèmes |
Liste des alertes en cours |
| Disponibilité infrastructure | Disponibilité de l'hôte |
Combien d’hôtes sont up/down par type |
| État VIP CARP | Navigateur d'éléments |
Valeur en temps réel des 5 pings VIP |
| Vue globale alertes | Aperçu des déclencheurs |
Matrice hôtes × déclencheurs avec couleurs |
7. Déploiement des agents
Agent Windows (via GPO)
Étape 1 — Copier le MSI sur le partage NETLOGON :
Copy-Item "C:UsersAdministrateurDownloadszabbix_agent2-7.4.8-windows-amd64-openssl.msi" `
"C:WindowsSYSVOLsysvolfsec.lanscripts"
Étape 2 — Installer via commande (pas via GPO Software Installation) :
msiexec /i "\fsec.lanNETLOGONzabbix_agent2-7.4.8-windows-amd64-openssl.msi" /quiet `
SERVER=10.10.20.31 `
SERVERACTIVE=10.10.20.31 `
HOSTNAME=DC02
Pourquoi pas GPO Software Installation ?
Le MSI Zabbix exige des paramètres interactifs (IP du serveur, hostname). La méthode « Installation de logiciels » dans GPO ne permet pas de passer ces paramètres. L’installation échoue avec l’erreur « Please enter the name or IP address of Zabbix server ». Il faut passer par
msiexecavec les paramètres en ligne de commande.
Étape 3 — Script GPO pour configurer automatiquement :
Fichier \fsec.lanNETLOGONconfigure-zabbix.ps1 :
$configFile = "C:Program FilesZabbix Agent 2zabbix_agent2.conf"
(Get-Content $configFile) `
-replace 'Server=127.0.0.1', 'Server=10.10.20.31' `
-replace 'ServerActive=127.0.0.1', 'ServerActive=10.10.20.31' |
Set-Content $configFile
Restart-Service "Zabbix Agent 2"
Ajouter dans GPO → Configuration ordinateur → Stratégies → Paramètres Windows → Scripts (démarrage) → Scripts PowerShell.
SNMP pfSense
Sur chaque pfSense → Services → SNMP :
- Enable ✅
- Port :
161 - Community string :
fsec-snmp - Bind interfaces :
FSECSRV
Attention : la config SNMP ne se synchronise PAS entre les deux pfSense via XMLRPC. Il faut la configurer manuellement sur Master ET Backup.