Supervision Zabbix / Grafana

Concepts de supervision

La supervision est le socle operationnel de toute infrastructure. Elle permet de detecter les incidents avant qu'ils n'impactent les utilisateurs et de planifier les evolutions de capacite.

Que superviser ?

Domaine Objectif Exemples
Disponibilite Verifier que chaque service repond Ping ICMP, port TCP ouvert, reponse HTTP 200
Performance Mesurer les temps de reponse et debits Latence disque, temps de requete SQL, debit reseau
Capacite Anticiper les saturations Tendance CPU sur 30 jours, remplissage disque, memoire
Securite Detecter les comportements anormaux Connexions SSH echouees, certificats expirant, processus inconnus

Polling vs Trapping

graph LR
    subgraph POLLING["Polling (mode actif)"]
        SRV1["Zabbix Server"] -->|"Demande la valeur"| AGT1["Agent"]
        AGT1 -->|"Reponse"| SRV1
    end

    subgraph TRAPPING["Trapping (mode passif)"]
        AGT2["Agent / Sender"] -->|"Envoie la valeur"| SRV2["Zabbix Server"]
    end
  • Polling : le serveur interroge l'agent a intervalle regulier (par defaut 30s-60s). Simple a configurer, mais genere du trafic sortant depuis le serveur.
  • Trapping : l'agent envoie la donnee de sa propre initiative (zabbix_sender, SNMP trap). Indispensable pour les evenements asynchrones (syslog, SNMP trap d'un switch).

Agent vs Agentless

Methode Protocole Cas d'usage
Agent 2 (Go) TCP 10050 Serveurs Linux/Windows, metriques detaillees
SNMP v3 UDP 161 Switches, routeurs, imprimantes reseau
IPMI UDP 623 BMC/iLO/iDRAC, capteurs hardware
HTTP/API TCP 443 Applications web, API REST, endpoints sante
JMX TCP 12345 Applications Java (Tomcat, Kafka, Elasticsearch)

Pourquoi Zabbix Agent 2 ?

Reecrit en Go (vs C pour l'Agent 1), il supporte nativement les plugins (Docker, PostgreSQL, MongoDB, certificats TLS) et maintient une connexion TCP persistante avec le serveur/proxy, reduisant la charge reseau et les temps de latence.


Architecture Zabbix

L'architecture de Zabbix repose sur trois niveaux : collecte, aggregation et traitement.

graph TB
    subgraph AGENTS["Couche Collecte"]
        A1["Agents Linux<br/>(15 VMs)"]
        A2["Agents Windows<br/>(4 VMs)"]
        A3["SNMP<br/>(Switches/FW)"]
        A4["Docker Plugin<br/>(Conteneurs)"]
    end

    subgraph PROXIES["Couche Aggregation"]
        P1["Proxy Infra<br/>(VLAN 101-105)"]
        P2["Proxy SOC<br/>(VLAN 200)"]
    end

    subgraph CENTRAL["Couche Traitement"]
        ZS["Zabbix Server<br/>INF-ASUP11A<br/>10.15.100.209"]
        DB["PostgreSQL<br/>TimescaleDB"]
        ZS --> DB
    end

    GRAFANA["Grafana<br/>Dashboards & Alertes"]

    A1 -->|"TCP 10051"| P1
    A2 -->|"TCP 10051"| P1
    A3 -->|"SNMP v3"| P1
    A4 -->|"TCP 10051"| P2

    P1 -->|"TLS PSK<br/>compresse"| ZS
    P2 -->|"TLS PSK<br/>compresse"| ZS
    DB -->|"API Zabbix"| GRAFANA
    GRAFANA -->|"HTTPS"| OPS["Equipe Ops"]

Zabbix Server

Le serveur central est le cerveau du systeme. Il remplit quatre fonctions principales :

  1. Traitement des donnees : reception des metriques, calcul des valeurs derivees (delta, moyenne mobile)
  2. Evaluation des triggers : comparaison en continu des valeurs aux seuils definis
  3. Notifications : envoi d'alertes par email, Telegram, webhook vers le SOC
  4. Configuration : stockage centralise des templates, hosts, macros

Zabbix Proxies

Les proxies sont des relais deployes dans chaque zone reseau. Ils apportent :

  • Collection distribuee : reduisent la charge du serveur central en pre-traitant les donnees
  • Buffering local : en cas de coupure reseau, les metriques sont stockees localement (SQLite) et reinjectees automatiquement a la reconnexion
  • Reduction du trafic : compression des donnees avant envoi, une seule connexion TLS par proxy

Resilience des proxies

Un proxy peut bufferiser jusqu'a plusieurs heures de metriques localement. En cas de maintenance reseau planifiee, aucune donnee n'est perdue.

Zabbix Agent 2

Caracteristique Detail
Langage Go (binaire statique, pas de dependances)
Connexion TCP persistante (vs connexion par requete pour Agent 1)
Plugins natifs Docker, PostgreSQL, MySQL, MongoDB, Redis, certificats X.509, systemd
Pre-traitement JSONPath, XML XPath, regex, expressions arithmetiques cote agent
Securite Chiffrement TLS PSK ou certificats, verification identite serveur

Grafana

Grafana est la couche de visualisation et d'analyse de la plateforme de supervision.

Concepts Grafana

Concept Description
Datasource Connecteur vers une source de donnees (Zabbix API, Prometheus, PostgreSQL, Loki)
Dashboard Collection de panels organises pour un cas d'usage (vue infra, vue service)
Panel Graphique individuel : time series, gauge, stat, table, heatmap, logs
Alerting Regles d'alerte evaluees cote Grafana, independantes de Zabbix
Annotations Marqueurs temporels sur les graphiques (deploiement, incident, maintenance)
Variables Filtres dynamiques en haut du dashboard (host, groupe, template)

Dashboards deployes

Dashboard Contenu Audience
Vue Infrastructure CPU, RAM, disque, reseau de toutes les VMs Ops
Vue Services Etat des services critiques (AD, DNS, Mail, Vault) Ops + Management
Vue Securite Connexions SSH, certificats, alertes Wazuh SOC
Vue Capacite Tendances 30/60/90 jours, projections Architecture
Vue Docker CPU/RAM/reseau par conteneur, restart count DevOps

Flux de supervision

Le cheminement complet d'une metrique, de la collecte a l'affichage :

sequenceDiagram
    participant Agent as Agent 2
    participant Proxy as Proxy
    participant Server as Zabbix Server
    participant DB as PostgreSQL
    participant Grafana as Grafana
    participant Ops as Equipe Ops

    Agent->>Proxy: 1. Collecte metrique (TCP 10051)
    Note over Proxy: Buffering local + pre-traitement
    Proxy->>Server: 2. Envoi TLS compresse
    Server->>Server: 3. Evaluation triggers
    Server->>DB: 4. Persistence en base
    alt Trigger declenche
        Server->>Ops: 5a. Notification (email/Telegram)
    end
    Grafana->>DB: 5b. Requete periodique
    Grafana->>Ops: 6. Dashboard temps reel (HTTPS)

Triggers et alertes

Les triggers sont des expressions logiques evaluees en continu par le serveur Zabbix.

Fonctionnement d'un trigger

Un trigger compare une valeur collectee a un seuil et change d'etat :

  • OK : la condition n'est pas remplie (fonctionnement normal)
  • PROBLEM : la condition est remplie (seuil depasse)

Exemple d'expression : avg(/host/system.cpu.util,5m) > 90 -- alerte si le CPU moyen depasse 90% sur 5 minutes.

Niveaux de severite

Severite Couleur Exemple Action
Not classified Gris Information de debug Aucune
Information Bleu Service redemarre proprement Log
Warning Jaune Disque a 80% Notification equipe
Average Orange CPU > 85% depuis 10 min Notification + ticket
High Rouge Service critique arrete Alerte immediate
Disaster Rouge vif Serveur injoignable Escalade + astreinte

Escalade des alertes

graph TD
    T["Trigger PROBLEM"] --> S1["Etape 1 : Email equipe Ops<br/>(immediat)"]
    S1 -->|"15 min sans acquittement"| S2["Etape 2 : Notification Telegram<br/>(rappel)"]
    S2 -->|"30 min sans acquittement"| S3["Etape 3 : Appel astreinte<br/>(escalade)"]
    S3 -->|"60 min sans acquittement"| S4["Etape 4 : Alerte direction<br/>(crise)"]

Attention au bruit

Trop d'alertes non pertinentes desensibilisent les equipes (alert fatigue). Il faut calibrer les seuils progressivement et utiliser les dependances de triggers pour eviter les cascades (si le switch est down, ne pas alerter pour chaque VM derriere).


Elements supervises

Categorie Metriques Methode
CPU Utilisation %, load average, iowait, steal (VM) Agent 2
Memoire Utilisation %, swap usage, cache/buffers Agent 2
Disque Espace libre, IOPS, latence, prediction remplissage Agent 2
Reseau Debit in/out, erreurs, drops, connexions etablies Agent 2 / SNMP
Services Etat systemd, port TCP, reponse HTTP, temps de reponse Agent 2
Certificats Date expiration TLS, chaine de confiance, CN/SAN Plugin certificats
Docker CPU/RAM par conteneur, restart count, etat sante Plugin Docker
Applications Endpoints /health, metriques metier, files d'attente HTTP Agent

Supervision des certificats

Les certificats TLS emis par la PKI Vault ont des durees de vie courtes (30-90 jours). Un trigger Warning a J-14 et High a J-7 avant expiration evite les interruptions de service.


Lab

VM IP VLAN Specs Role
INF-ASUP11A 10.15.100.209 103 (Supervision) 2 vCPU, 8 Go RAM Zabbix Server + PostgreSQL

Perimetre de supervision

Les agents Zabbix 2 sont deployes sur les 21 VMs de l'infrastructure. Chaque agent remonte en moyenne 150 a 300 items, soit environ 4500 a 6300 metriques collectees toutes les 30 a 60 secondes.

Groupe de hosts Nombre de VMs Exemples
Serveurs Infra 8 AD, DNS, DHCP, NTP, Vault, GitLab
Serveurs Applicatifs 5 Mail, Nextcloud, Web, BDD
Serveurs SOC 4 Wazuh, ELK, TheHive, MISP
Serveurs Cloud 3 OpenStack controllers
Proxy / Reverse Proxy 2 Squid, HAProxy