01Dimensionner en valeurs par seconde
Le nombre d'hôtes ne dit presque rien de la charge. L'unité qui compte est le nombre de nouvelles valeurs par seconde, affiché par Zabbix sur son tableau de bord d'accueil. Un serveur Linux avec le modèle standard produit de l'ordre de 2 à 5 valeurs par seconde, un commutateur de 48 ports supervisé en SNMP bien davantage.
| Valeurs par seconde | Serveur Zabbix | Base de données | Proxies |
|---|---|---|---|
| Jusqu'à 500 | 2 vCPU, 4 Go | Sur le même serveur, SSD | Facultatifs |
| 500 à 3 000 | 4 vCPU, 8 Go | Machine dédiée, 8 vCPU, 32 Go, NVMe | Recommandés par site |
| 3 000 à 10 000 | 8 vCPU, 16 Go, en grappe | 16 vCPU, 64 Go, NVMe, réplica | Obligatoires |
| Au-delà | Étude spécifique | Étude spécifique | Groupes de proxies |
Une base Zabbix écrit en continu, par petites transactions. Un disque mécanique ou un stockage réseau partagé et chargé suffit à créer des files d'attente dans toute la chaîne, jusqu'aux déclencheurs qui se calculent en retard. Sur Proxmox VE, placez la machine de base sur un stockage NVMe local ou un pool Ceph dédié, jamais sur le même pool que les sauvegardes.
02PostgreSQL et TimescaleDB
Nous retenons PostgreSQL avec l'extension TimescaleDB pour toutes les plateformes neuves. TimescaleDB découpe l'historique en tranches temporelles, ce qui rend le ménage instantané : supprimer un mois de données revient à supprimer une tranche, au lieu de millions de lignes. Il compresse aussi les tranches anciennes, avec des gains de l'ordre de dix sur l'historique numérique.
| Composant | Version minimale pour Zabbix 8.0 | Sur Debian 13 |
|---|---|---|
| PostgreSQL | 15 | 17, fourni par la distribution |
| TimescaleDB | 2.20 | Dépôt de l'éditeur Timescale |
| PHP pour le frontal | 8.2 | 8.4, fourni par la distribution |
apt install postgresql # depot TimescaleDB : suivre la procedure de l'editeur pour Debian, # puis installer le paquet correspondant a la version de PostgreSQL apt install timescaledb-2-postgresql-17 # reglages adaptes a la memoire de la machine, a relire ensuite timescaledb-tune --quiet --yes systemctl restart postgresql sudo -u postgres createuser --pwprompt zabbix sudo -u postgres createdb -O zabbix zabbix
Le schéma et l'activation de TimescaleDB se font après l'installation des paquets Zabbix, qui fournissent les scripts SQL (section suivante).
03Installer le serveur et le frontal
# paquet de depot 8.0 pour Debian 13 : verifier le nom exact a la sortie
wget https://repo.zabbix.com/zabbix/8.0/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_8.0+debian13_all.deb
dpkg -i zabbix-release_latest_8.0+debian13_all.deb
apt update
apt install zabbix-server-pgsql zabbix-frontend-php php-pgsql \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
# depuis un serveur Zabbix, vers la base distante zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz \ | psql -h 10.10.0.60 -U zabbix zabbix # sur la base : charger l'extension au demarrage # shared_preload_libraries = 'timescaledb' (postgresql.conf) sudo -u postgres psql zabbix -c "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" # convertir les tables d'historique en hypertables cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql \ | psql -h 10.10.0.60 -U zabbix zabbix
Une fois TimescaleDB actif, activez dans Administration, Ménage, l'option qui remplace le processus de ménage par la suppression de tranches, ainsi que la compression des données anciennes. Sans cela, l'extension est installée mais ne sert à rien.
04Deux serveurs en grappe
Depuis la version 6.0, Zabbix sait fonctionner en grappe sans outil externe : plusieurs serveurs partagent la même base, un seul est actif, les autres attendent. Si l'actif cesse de signaler sa présence dans la base, un serveur en attente prend le relais. Le frontal découvre seul le noeud actif en lisant la base.
# sur zbx-01 HANodeName=zbx-01 NodeAddress=10.10.0.61:10051 # sur zbx-02 HANodeName=zbx-02 NodeAddress=10.10.0.62:10051 # commun aux deux DBHost=10.10.0.60 DBName=zabbix DBUser=zabbix DBPassword=...
zabbix_server -R ha_status # delai avant bascule, une minute par defaut : nous le laissons ainsi zabbix_server -R ha_set_failover_delay=1m # retirer proprement un noeud arrete definitivement zabbix_server -R ha_remove_node=zbx-03
Les agents et les proxies doivent connaître les deux serveurs. En mode actif,
on les sépare par un point-virgule dans ServerActive : ils essaient l'un puis
l'autre, et suivent le noeud actif sans intervention.
# agent : les deux serveurs de la grappe, separes par un point-virgule ServerActive=10.10.0.61;10.10.0.62 # proxy actif : meme principe Server=10.10.0.61;10.10.0.62
Deux serveurs Zabbix sur une base unique, c'est un point unique de défaillance déplacé, pas supprimé. La haute disponibilité de PostgreSQL relève d'un outil dédié, réplication en continu avec Patroni ou équivalent. À défaut, une machine de base sur un cluster Proxmox VE avec stockage partagé et haute disponibilité couvre déjà la panne matérielle, ce qui suffit dans la plupart des cas.
05Régler les caches et les processus
Les valeurs par défaut conviennent à une installation de démonstration. Les quatre réglages ci-dessous sont ceux que nous retouchons systématiquement, en partant de ces valeurs et en lisant ensuite l'utilisation réelle sur les graphiques internes de Zabbix.
| Paramètre | Défaut | Point de départ | Symptôme d'un manque |
|---|---|---|---|
| CacheSize | 32 Mo | 256 Mo à 1 Go | Le serveur refuse de démarrer ou de recharger la configuration |
| HistoryCacheSize | 16 Mo | 256 Mo | Écritures en retard, file d'attente qui grossit |
| ValueCacheSize | 8 Mo | 512 Mo | Déclencheurs lents, base sollicitée par les calculs |
| StartPollers et consorts | Faibles | Selon l'occupation mesurée | Processus occupés à plus de 75 % |
zabbix_server -R config_cache_reload zabbix_server -R diaginfo
06Superviser Zabbix lui-même
Le modèle Zabbix server health doit être lié au serveur dès le premier jour. Il remonte l'occupation de chaque type de processus et de chaque cache, et c'est lui qui vous dira, des semaines avant la saturation, quel réglage du tableau précédent relever.
Il reste la question qui fâche : qui prévient quand Zabbix tombe ? Ni la grappe, ni le modèle de santé n'y répondent, puisqu'ils dépendent de Zabbix. Une sonde externe indépendante, par exemple un Uptime Kuma hébergé ailleurs, qui vérifie l'interface et la présence d'un noeud actif, ferme la boucle.
Une supervision qui veille pendant que vous dormez
Nous concevons, installons et exploitons des plateformes de supervision pour des PME, des hébergeurs et des collectivités : Zabbix, Prometheus et Grafana, ou plus léger quand le besoin l'est. Reprise d'une supervision existante, réglage des alertes qui sonnent pour rien, astreinte : nous intervenons au forfait comme au long cours.