PrĂ©ambule â La production nâest pas un laboratoire
Exploiter Zabbix en production exige de passer d’une vision logicielle Ă une vision systĂ©mique. Un serveur sous charge est un Ă©cosystĂšme oĂč chaque composant â pollers, preprocessors, syncers, base SQL â influence la stabilitĂ© globale.
La rĂšgle est ici souveraine : Mesurer â Formuler une hypothĂšse â Modifier par paliers â Observer â Documenter. Il s’agit de dissĂšquer les engrenages internes et fournir les procĂ©dures exactes pour chaque levier d’optimisation.
1. Pollers â La gestion de l’attente
1.1 La mécanique du blocage
Un poller est un sĂ©quenceur bloquant. S’il interroge un Ă©quipement lent, il reste figĂ© jusqu’au Timeout. Si la file d’attente s’allonge, les donnĂ©es « glissent » (dĂ©rive des intervalles).
1.2 Comment diagnostiquer
-
Surveillance visuelle : Allez dans
Administration > Queue > Overview by proxy. Si la colonne « 5 seconds » ou « 10 seconds » est rouge, vos pollers sont saturés. -
MĂ©triques internes : CrĂ©ez un graphique avec l’item
zabbix[process,poller,avg,busy].-
Busy > 75% : Danger imminent.
-
Busy à 100% avec CPU bas : Latence réseau (Timeouts).
-
Busy Ă 100% avec CPU haut : Surcharge de calcul.
-
1.3 Comment procéder au tuning
-
AccĂšs : Ăditez
/etc/zabbix/zabbix_server.conf. -
Levier 1 : Augmentez
StartPollerspar paliers de 10% Ă 20%. -
Levier 2 : Réduisez le paramÚtre
Timeout(souvent 3s par défaut) à 1s ou 2s pour libérer les pollers plus vite. -
Relance :
systemctl restart zabbix-server.
2. Preprocessors â Le goulot invisible
2.1 La dualité Manager / Workers
Le Manager reçoit les donnĂ©es des pollers et les distribue aux Workers. Le goulot peut ĂȘtre le Manager (trop de petites donnĂ©es) ou les Workers (calculs trop lourds).
2.2 Comment diagnostiquer
-
Métriques internes : Surveillez
zabbix[process,preprocessing manager,avg,busy]etzabbix[process,preprocessing worker,avg,busy]. -
Files d’attente : Regardez l’item
zabbix[preprocessing_queue]. Si elle ne redescend jamais à zéro, votre chaßne de traitement est sous-dimensionnée.
2.3 Comment procéder au tuning
-
AccĂšs :
/etc/zabbix/zabbix_server.conf. -
Levier : Augmentez
StartPreprocessors. -
Optimisation : Dans l’interface, identifiez les templates utilisant massivement des Regex ou du JavaScript. Remplacez-les par des Ă©tapes « JSONPath » ou « Custom multiplier » (plus Ă©conomes en CPU).
3. History Syncers â La persistance sous pression
3.1 Le flux vers la base SQL
Les Syncers vident le Value Cache vers la base SQL. Si la base ralentit, les Syncers saturent et la collecte s’arrĂȘte pour Ă©viter la perte de donnĂ©es en RAM.
3.2 Comment diagnostiquer
-
Saturation du cache : Surveillez
zabbix[wcache,value,pused]. Si vous approchez de 100%, le serveur va cesser de collecter. -
Activité des syncers : Surveillez
zabbix[process,history syncer,avg,busy].
3.3 Comment procéder au tuning
-
AccĂšs :
/etc/zabbix/zabbix_server.conf. -
Levier 1 :
HistoryCacheSize. Ne pas hésiter à passer à 128M ou 256M pour absorber les pics. -
Levier 2 :
StartDBSyncers. Attention : Ne dépassez jamais 32 sans une infrastructure SQL exceptionnelle, au risque de créer des verrous (deadlocks). -
Stockage : Vérifiez les IOPS avec
iostat -x 1. Si%utilest à 100%, le problÚme est matériel (disque).
4. La Base SQL â Le pivot central
4.1 Indexation et Slow Queries
Un index accĂ©lĂšre la lecture (Dashboards) mais ralentit l’Ă©criture (Syncers).
4.2 Comment diagnostiquer
-
PostgreSQL : Installez l’extension
pg_stat_statementset exécutez :SELECT query, calls, total_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10; -
Zabbix Logs : Activez temporairement
DebugLevel=3et cherchez « slow query ».
4.3 Comment procéder au tuning (Partitionnement)
-
AccĂšs : SQL Shell (
psqloumysql). -
ProcĂ©dure : N’utilisez plus le Housekeeper natif (
HousekeepingFrequency=0dans la conf). -
Outil : Installez pg_partman pour PostgreSQL. Créez des partitions quotidiennes pour les tables
history*ettrends*. -
Bénéfice : Le nettoyage se fera par un
DROP TABLEprogrammé, supprimant des Go de données en une fraction de seconde sans impacter les syncers.
5. Optimisation des Agents â ScalabilitĂ© Ă la source
5.1 Agents Actifs : La clé du succÚs
En mode Actif, l’agent demande sa configuration au serveur puis pousse ses donnĂ©es. Le serveur devient un simple rĂ©cepteur passif.
5.2 Comment procéder
-
Configuration Agent : Dans
zabbix_agentd.conf, réglezStartAgents=0(pour désactiver le mode passif) et configurezServerActive=IP_DU_SERVEUR. -
Interface Zabbix : Changez le « Type » de tous vos items en « Zabbix agent (active) ».
-
Surveillance : Surveillez
zabbix[process,trapper,avg,busy]sur le serveur pour voir la charge de réception des agents actifs.
6. Diagnostics avancĂ©s â L’outil de dernier recours
6.1 Le Runtime Control
Lorsque le serveur semble « figé », utilisez la commande de diagnostic en temps réel.
-
Commande :
zabbix_server -R diag -
AccÚs aux résultats :
tail -f /var/log/zabbix/zabbix_server.log -
InterprĂ©tation : Le dump affichera l’utilisation prĂ©cise de chaque « Shared Memory Statistics ». C’est ici que vous verrez si le goulot est le
ValueCache, leLLD cacheou leWrite cache.
7. Limites structurelles â Savoir quand s’arrĂȘter
7.1 Ingestion massive
Zabbix n’est pas une base de donnĂ©es de sĂ©ries temporelles (TSDB) pure.
-
Diagnostic : Si votre
NVPS(New Values Per Second) dĂ©passe 15 000-20 000, le moteur SQL traditionnel (mĂȘme tunĂ©) commencera Ă souffrir. -
Action : Migrez vers TimescaleDB (extension PostgreSQL). Activez l’option de compression native dans Zabbix pour rĂ©duire l’empreinte disque de 90%.
La performance de Zabbix ne se dĂ©crĂšte pas, elle se construit. En accĂ©dant aux fichiers de configuration avec une mĂ©thodologie de mesure (zabbix[process,...]), vous quittez le monde du tĂątonnement pour celui de l’ingĂ©nierie. Gardez vos syncers fluides, vos preprocessors lĂ©gers et votre SQL partitionnĂ© : c’est la seule recette pour un monitoring qui ne s’effondre pas lors du prochain incident majeur.
