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

231 lines
12 KiB
Markdown

---
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](https://www.zabbix.com/) |
| **GitHub** | [zabbix/zabbix](https://github.com/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\|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)
```yaml
# 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)
```bash
# 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
- [GitHub zabbix/zabbix](https://github.com/zabbix/zabbix)
- [Documentation officielle](https://www.zabbix.com/documentation/current/fr)
- [Templates officiels](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates)
- [Forum francophone](https://www.zabbix.com/forum)
- [Zabbix blog / news](https://blog.zabbix.com/)
## Pages Liées
- [[cat-monitoring]] — Catégorie Monitoring
- [[app-uptime-kuma]] — Pour l'uptime check
- [[app-netdata]] — Métriques système temps réel
- [[app-prometheus]] — Stack cloud-native
- [[app-glances]] — Monitoring terminal
- [[app-traefik]] — Reverse proxy HTTPS
- [[observabilite]] — Concepts monitoring/alerting
- [[checklist-monitoring-minimal]] — Checklist de déploiement