Files
2026-06-09 18:40:21 +02:00

12 KiB


title: Zabbix created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, enterprise, reseau, snmp, agent, php, c, go, datacenter] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/zabbix/zabbix]

📊 Zabbix

La référence enterprise du monitoring open source depuis 1998 : réseau, serveurs, applications, cloud, services — Zabbix surveille absolument tout, avec une puissance et une granularité inégalées, au prix d'une stack plus lourde et d'une interface moins moderne que ses cadets.

📋 Informations Générales

Champ Valeur
Site web zabbix.com
GitHub zabbix/zabbix
License AGPL-3.0
Langage C (agent/serveur), PHP (frontend), Go (agents/agents2)
Étoiles GitHub 5 951
Dernière MAJ 2026-06-06
Catégorie cat-monitoring

📝 Description

Zabbix est une plateforme de monitoring enterprise open source d'origine lettone (1998), utilisée par des banques, des opérateurs télécom, des administrations et des milliers d'homelabbers. Sa promesse : surveiller des millions de métriques en temps réel, sur des dizaines de milliers d'hôtes, avec alerting, corrélation d'événements, découverte automatique du réseau et tableaux de bord riches.

L'écosystème est bâti autour de quatre modes de collecte complémentaires : un agent natif Zabbix (léger, en C) qui pousse ses métriques au serveur, SNMP v1/2/3 pour les équipements réseau (routeurs, switches, imprimantes), IPMI pour le hardware serveur (température, ventilateurs, alimentation), et JMX pour les applications Java (JVM, Tomcat, Kafka, etc.). Zabbix Agent 2, réécrit en Go, apporte une architecture modulaire avec des plugins prêts à l'emploi (MySQL, PostgreSQL, Redis, Docker, systemd, etc.).

Le moteur de templates est probablement le plus riche du monde open source : plus de 1 000 templates officiels couvrent la quasi-totalité des OS, hyperviseurs, bases de données, middlewares et appliances réseau. Chaque template expose des LLD (Low-Level Discovery) qui inventorient automatiquement disques, interfaces réseau, services Windows, etc. La corrélation d'événements et les macros utilisateur permettent de construire des règles d'alerte extrêmement sophistiquées.

  • Monitoring complet : réseau, serveurs, apps, services cloud (AWS, Azure, GCP), containers, VM
  • Quatre modes de collecte : agent Zabbix (C), agent 2 (Go modulaire), SNMP, IPMI, JMX, WMI
  • Plus de 1 000 templates officiels couvrant OS, matériel, middleware, SaaS
  • Auto-découverte (LLD) : ajoute automatiquement disques, interfaces, services
  • Corrélation d'événements et scénarios web synthétiques (multi-step HTTP)
  • Alerting avancé : déclencheurs conditionnels, escalade, sévérités, scripts personnalisés
  • Dashboards riches : widgets custom, cartographie réseau, topologie
  • Proxy Zabbix : déploie des collecteurs dans des sites distants (DMZ, succursales)
  • API JSON-RPC complète pour intégration / automatisation
  • Image Docker officielle + packages pour RHEL/Debian/derivés

Public cible : MSP, équipes IT en entreprise, homelabbers avancés qui ont besoin d'un monitoring structuré, scalable et capable de remplacer Nagios/Icinga/Centreon. Pour un simple « mon site est-il en ligne ? », app-uptime-kuma suffit ; pour 200 serveurs et 50 switches, Zabbix est imbattable.

Limites à connaître : l'interface web est fonctionnelle mais datée (les graphes sont plus lisibles dans Grafana), la conception initiale demande du temps (hôte, item, trigger, template), et la consommation mémoire du serveur peut vite grimper sur de grandes infrastructures. La documentation est néanmoins excellente et la communauté francophone très active.

🚀 Installation

Option 1 : Docker Compose (recommandé, image officielle)

# docker-compose.yml
version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: zabbix-mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd_change_me
      MYSQL_ROOT_PASSWORD: root_pwd_change_me
    volumes:
      - mysql-data:/var/lib/mysql

  zabbix-server:
    image: zabbix/zabbix-server-mysql:alpine-7.0-latest
    container_name: zabbix-server
    restart: unless-stopped
    depends_on:
      - mysql
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd_change_me
    volumes:
      - zabbix-server-data:/var/lib/zabbix

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest
    container_name: zabbix-web
    restart: unless-stopped
    depends_on:
      - zabbix-server
      - mysql
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_pwd_change_me
      PHP_TZ: Europe/Paris
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.zabbix.rule=Host(`zabbix.example.com`)"
      - "traefik.http.routers.zabbix.entrypoints=websecure"
      - "traefik.http.routers.zabbix.tls.certresolver=letsencrypt"

  zabbix-agent:
    image: zabbix/zabbix-agent2:alpine-7.0-latest
    container_name: zabbix-agent
    restart: unless-stopped
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_HOSTNAME: docker-host

volumes:
  mysql-data:
  zabbix-server-data:

L'image officielle fournit un composant par conteneur (serveur, frontend, agent, proxy, Java gateway, SNMP trap) — c'est très modulaire mais demande de comprendre la topologie. Les images *-alpine-7.0-latest ciblent la LTS 7.0 ; les images sans alpine suivent la branche 7.2+ (dev).

Option 2 : Paquets natifs (Debian/Ubuntu)

# Ajouter le dépôt officiel
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2_all.deb
sudo dpkg -i zabbix-release_7.0-2_all.deb
sudo apt update

# Installer serveur, agent, frontend (Nginx) et MySQL
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 mysql-server

# Créer la base
sudo mysql -uroot -p
> create database zabbix character set utf8mb4 collate utf8mb4_bin;
> create user zabbix@localhost identified by 'PASSWORD';
> grant all privileges on zabbix.* to zabbix@localhost;
> set global log_bin_trust_function_creators = 1;
> quit;

# Importer le schéma
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

# Désactiver l'option (sécurité)
sudo mysql -uroot -p -e "set global log_bin_trust_function_creators = 0;"

# Activer et démarrer
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm

Pour un vrai déploiement, on préférera souvent PostgreSQL plutôt que MySQL sur de très grosses volumétries.

⚙️ Configuration Initiale

  1. Accéder à l'UI : https://zabbix.example.com (ou http://IP/zabbix en natif)
    • Identifiants par défaut : Admin / zabbixà changer immédiatement
  2. Wizard initial : passer l'assistant de bienvenue, configurer le fuseau horaire et la langue (français disponible)
  3. Créer le premier hôte : Configuration → Hosts → Create host
    • Hostname, groupe (Templates/Application servers par exemple)
    • Ajouter une interface agent : IP:10050
    • Lier le template Linux by Zabbix agent (ou Windows by Zabbix agent)
    • Patienter 1-2 minutes : les métriques arrivent automatiquement
  4. Configurer SNMP sur un switch/routeur : ajouter une interface SNMP v2/v3 sur l'hôte, lier le template Generic SNMP ou un template constructeur (Cisco, HP, Juniper, MikroTik...)
  5. Définir les médias d'alerte : Administration → Media types (Email, Telegram, Slack, Webhook...)
  6. Tester un trigger : laisser un hôte perdre l'agent (systemctl stop zabbix-agent2) et vérifier qu'un incident de sévérité « High » arrive dans Dashboard → Problems et déclenche une notification

🔄 Alternatives

Open Source

  • app-prometheus + Grafana — stack cloud-native, idéal Kubernetes et services éphémères
  • app-netdata — métriques système temps réel, install en 30 secondes
  • app-glances — équivalent terminal/cross-platform léger
  • Nagios Core / Nagios XI — l'ancêtre, basé sur plugins, plus archaïque
  • Icinga 2 — fork moderne de Nagios, configuration plus propre
  • Checkmk (Raw) — concurrent direct allemand, très apprécié en Europe
  • LibreNMS — excellent pour la supervision réseau pure (SNMP, NetFlow)
  • Centreon — leader français, basé sur Nagios, riche pour MSP
  • Pandorafms — autre solution enterprise hispanophone

Comparaison Zabbix vs solutions populaires

Critère Zabbix Prometheus + Grafana Netdata Checkmk
Paradoxe Tout-en-un agent/serveur Stack cloud-native Métriques agent Tout-en-un agent/serveur
Mode collecte Agent + SNMP + IPMI + JMX Pull HTTP (agent push via pushgateway) Agent push Agent pull, SNMP
SNMP/Network Excellent (1000+ templates) Faible (snmp_exporter) Non Excellent
Scalabilité Très haute (proxies) Très haute (Kubernetes) Moyenne Haute
UI intégrée (datée) (Grafana) moderne moderne
Setup initial Moyen (30-60 min) Complexe (stack) 2 min Moyen (20 min)
Templates 1000+ officiels Exporters communauté Auto-discovery 2000+ officiels
License AGPL-3.0 Apache-2.0 GPL-3.0 GPL-2.0 (Raw) / Propriétaire (Enterprise)

Verdict : Zabbix reste le choix de référence quand on doit superviser un parc hétérogène (serveurs + réseau + cloud + apps) avec une seule plateforme. Pour un homelab moderne tourné Kubernetes/Docker, app-prometheus + Grafana est plus naturel ; pour un monitoring « un agent, des jolis graphes, terminé », app-netdata est imbattable.

Propriétaires (ce que Zabbix remplace)

  • Datadog (100 €/hôte/mois) — très populaire SaaS, mais cher
  • New Relic — APM + infra, modèle d'usage
  • Dynatrace — enterprise, AI-driven
  • PRTG (Paessler) — très répandu en PME, basé sur SNMP
  • SolarWinds Orion — enterprise Windows-centric
  • ManageEngine OpManager — alternative bon marché

🔐 Sécurité

  • Changer le compte admin par défaut (Admin/zabbix) en super_admin avec un mot de passe fort ; créer un compte dédié pour chaque opérateur
  • Activer HTTPS (Let's Encrypt via app-traefik) et isoler le frontend : Zabbix expose beaucoup d'informations système sensibles
  • Restreindre l'accès réseau : port 10051 (serveur) et 10050 (agent) doivent n'être accessibles qu'aux agents et à l'IP du serveur — utiliser des PSK (Pre-Shared Keys) ou des certificats sur l'agent pour chiffrer les échanges (déprécié : communication en clair par défaut)
  • Stocker les credentials BDD en secrets Docker / Vault, jamais dans le compose
  • Auditer régulièrement : qui est admin, quels macros contiennent des credentials, quels scripts custom sont exécutés

📚 Ressources

Pages Liées