RousselTMLEARNING

Observabilité

Collecter avec Zabbix : éléments, prétraitement, découverte et modèles

Les types d'éléments (agent, SNMP, agent HTTP, calculés, dépendants), le prétraitement (JSONPath, expressions régulières, Prometheus), la découverte de bas niveau (LLD), les macros et la création de modèles.

1. Les types d'éléments #

Collecter n'importe quoi.

Types #

TypeExemple de clé ou d'usage
Zabbix agent (passif/actif)system.cpu.util, vfs.fs.size[/,pused], proc.num[nginx]
SNMP agentInterfaces réseau d'un commutateur (OID)
HTTP agentAppeler une API ou une page /metrics
Simple checkicmpping, net.tcp.service[https]
CalculatedFormule à partir d'autres éléments
Dependent itemExtraire une valeur d'un élément maître (sans nouvelle collecte)
Loglog[/var/log/app.log,ERROR] (agent actif)

2. Prétraitement et éléments dépendants #

Une collecte, plusieurs valeurs.

Principe #

Un élément maître collecte une réponse complète (JSON, page Prometheus) ; des éléments dépendants en extraient chacun une valeur par prétraitement. Une seule requête alimente des dizaines d'éléments.

Étape de prétraitementExemple
JSONPath$.connections.active
Prometheus patternnode_load1 ou http_requests_total{code="500"}
Regular expressionExtraire une version d'une chaîne
Change per secondTransformer un compteur en débit
Discard unchanged with heartbeatNe stocker que les changements (avec une valeur toutes les heures)
JavaScriptTransformation libre
Bonne Pratique : « Discard unchanged with heartbeat » divise souvent par dix le volume d'historique des éléments qui changent rarement (états, versions).
Élément maître alimentant trois éléments dépendants
Les éléments dépendants ne refont aucune requête : ils découpent la réponse de l'élément maître.

3. Découverte de bas niveau (LLD) #

S'adapter automatiquement.

Principe #

Fonctionnement de la découverte de bas niveau
Un nouveau système de fichiers est supervisé au cycle de découverte suivant, sans intervention.

Une règle de découverte renvoie une liste d'objets (systèmes de fichiers, interfaces, conteneurs, bases) sous forme de macros ({#FSNAME}) ; des prototypes créent automatiquement éléments, déclencheurs et graphes pour chacun.

Règle de découverte : vfs.fs.discovery
  Filtre : {#FSTYPE} correspond à ^(ext4|xfs|btrfs)$
  Prototype d'élément : vfs.fs.size[{#FSNAME},pused]
  Prototype de déclencheur : last(/Mon modèle/vfs.fs.size[{#FSNAME},pused])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}
À savoir : La macro contextuelle {$VFS.FS.PUSED.MAX.CRIT:"/var"} permet un seuil différent pour un seul système de fichiers.

Modèles et macros #

  • Partir des modèles officiels (plus de 300) et les surcharger par macros plutôt que les modifier.
  • Créer ses modèles pour les applications maison ; les exporter en YAML et les versionner.
  • Utiliser des modèles imbriqués (un modèle « Application X » qui inclut « Linux » et « Nginx »).

Articles liés

Créer des tableaux de bord dans Zabbix : dashboards, widgets et pages

Construire des dashboards Zabbix utiles : pages, widgets (Graph, Problems, Top hosts, Honeycomb, Gauge...), w…

Tableaux de bord Grafana avec la source de données Zabbix

Afficher Zabbix dans Grafana : installer le plugin, créer un utilisateur et un jeton d'API, configurer et pro…

Zabbix : architecture et concepts de la supervision

Comprendre Zabbix : serveur, base de données, interface web, agents et proxies, et les concepts clés (hôtes, …

Pour aller plus loin