231 lines
12 KiB
Markdown
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
|