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

code
┌──────────┐     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

code
┌─────────────────────┐
│ 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 :

  1. Ajouter l’hôte dans Zabbix
  2. 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.run dans la config de l’agent Zabbix :

code
AllowKey=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

code
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 :

powershell
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) :

powershell
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 msiexec avec les paramètres en ligne de commande.

Étape 3 — Script GPO pour configurer automatiquement :

Fichier \fsec.lanNETLOGONconfigure-zabbix.ps1 :

powershell
$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.