RousselTMLEARNING

Observabilité

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...), widgets reliés, dashboards de modèle, partage, diaporama et création par l'API.

1. Les dashboards Zabbix #

Ce qu'on peut construire sans outil externe.

Principe #

Un dashboard est une page de l'interface web Zabbix qui réunit des widgets : courbes, listes de problèmes, jauges, cartes, valeurs. Il peut compter plusieurs pages (onglets), affichées une à une ou en diaporama sur un écran de supervision.

Les dashboards se trouvent dans le menu Dashboards. Le dashboard Global view est livré par défaut ; chaque utilisateur peut créer les siens, qui lui appartiennent tant qu'il ne les partage pas.

Maquette d'un dashboard Zabbix de production
Un dashboard « Production » à trois pages : synthèse, réseau, bases de données.

Vocabulaire #

NotionDéfinition
DashboardEnsemble de pages, avec un propriétaire et des droits de partage
PageOnglet du dashboard ; chaque page a sa propre grille de widgets et sa durée d'affichage en diaporama
WidgetBloc de la grille : type, titre, source de données, intervalle de rafraîchissement
GrilleLes widgets se placent et se redimensionnent à la souris sur une grille (72 colonnes en 7.0)
Dashboard de modèleDashboard défini sur un modèle et affiché sur chaque hôte qui lui est lié

2. Créer un dashboard pas à pas #

De la page blanche au tableau de bord partagé.

Étapes #

Étapes de création d'un dashboard Zabbix
  1. Dashboards > All dashboards > Create dashboard.
  2. Propriétés : nom, propriétaire, durée d'affichage par défaut des pages (diaporama) et démarrage automatique du diaporama.
  3. Add widget : choisir le type, le titre, l'intervalle de rafraîchissement, puis la source (groupes d'hôtes, hôtes, éléments, tags).
  4. Placer et redimensionner le widget ; ajouter des pages avec Add page pour séparer les thèmes (réseau, bases, applications).
  5. Save changes, puis Sharing : rendre le dashboard public ou le partager avec des utilisateurs et des groupes, en lecture seule ou en lecture-écriture.
À savoir : Un widget n'affiche que les hôtes sur lesquels l'utilisateur qui consulte a au moins un droit de lecture : un même dashboard partagé montre donc des données différentes selon les droits de chacun.

Le widget Graph #

Le widget Graph trace des courbes à partir de jeux de données (data sets) définis par des motifs d'hôtes et d'éléments, avec jokers : une seule définition couvre tous les serveurs web, présents et futurs.

RéglageExempleEffet
Host patternweb-*Tous les hôtes dont le nom commence par web-
Item patternCPU utilizationL'élément de ce nom sur chaque hôte
DrawLine, Points, Staircase, BarForme de la courbe
Aggregationavg sur 5mLisse les courbes et réduit le nombre de points
Overridescouleur, axe Y droitMettre en valeur une série particulière
Time periodDashboard, ou période propreLe widget suit le sélecteur de temps ou fixe sa période
Bonne Pratique : Préférez des motifs (web-*) et des tags à une liste d'hôtes saisie à la main : le dashboard suit automatiquement l'arrivée de nouveaux serveurs.

3. Choisir les bons widgets #

Un widget par question.

Catalogue #

QuestionWidgetConseil
Qu'est-ce qui ne va pas maintenant ?Problems, Problems by severityFiltrer par tags (service, équipe) et sévérité minimale
Comment évolue cette métrique ?GraphMotifs d'hôtes et d'éléments, agrégation sur les longues périodes
Quels hôtes consomment le plus ?Top hostsColonnes calculées sur un élément, seuils de couleur
Le parc est-il sain d'un coup d'œil ?Honeycomb, Host availabilityUne cellule par hôte, couleur selon un élément ou l'état
Quelle est la valeur actuelle ?Item value, GaugeUnités et seuils de couleur
Quelle part de chaque catégorie ?Pie chartPeu de catégories, sinon préférer un classement
Où est le problème physiquement ?Map, GeomapCartes réseau ou géographiques avec état des hôtes
Tient-on nos engagements ?SLA reportNécessite le module Services et les SLA

Widgets reliés #

Depuis Zabbix 7.0, des widgets peuvent en piloter d'autres : un Host navigator, un Honeycomb ou une Geomap diffusent l'hôte sélectionné, et les widgets dont la source est réglée sur ce widget (champ Override host) se mettent à jour au clic. Le même champ peut aussi prendre la valeur Dashboard : un sélecteur d'hôte apparaît alors en haut du dashboard.

Host navigator reliant plusieurs widgets
Un clic sur web-02 met à jour la courbe, la valeur et la liste des problèmes.
Bonne Pratique : Un dashboard « exploration » avec un navigateur d'hôtes remplace des dizaines de dashboards identiques, un par serveur.

4. Les dashboards de modèle #

Définir une fois, afficher partout.

Principe #

Un dashboard peut être créé sur un modèle (Data collection > Templates > Dashboards). Ses widgets n'ont pas d'hôte : ils utilisent celui sur lequel on consulte le dashboard. Il apparaît sur chaque hôte lié au modèle, depuis Monitoring > Hosts (colonne Dashboards).

Un dashboard de modèle affiché sur chaque hôte lié

Les modèles officiels en contiennent déjà ; pour un modèle maison, le dashboard est exporté et versionné avec lui (export YAML).

5. Créer un dashboard par l'API #

Des dashboards reproductibles.

dashboard.create #

Les dashboards sont des objets de l'API JSON-RPC comme les autres : dashboard.get exporte un dashboard existant, dashboard.create et dashboard.update le recréent ailleurs. Chaque widget a un type, une position dans la grille et une liste de fields.

curl -s -X POST -H 'Content-Type: application/json-rpc' -H "Authorization: Bearer $TOKEN" \
  http://localhost:8080/api_jsonrpc.php -d '{
  "jsonrpc": "2.0", "method": "dashboard.create", "id": 1,
  "params": {
    "name": "Web - synthèse",
    "display_period": 60, "auto_start": 1,
    "pages": [{
      "widgets": [
        { "type": "problems", "name": "Problèmes web", "x": 0, "y": 0, "width": 36, "height": 5,
          "fields": [{ "type": 1, "name": "tags.0.tag", "value": "service" },
                     { "type": 1, "name": "tags.0.value", "value": "web" }] },
        { "type": "svggraph", "name": "CPU web-*", "x": 36, "y": 0, "width": 36, "height": 5,
          "fields": [{ "type": 1, "name": "ds.0.hosts.0", "value": "web-*" },
                     { "type": 1, "name": "ds.0.items.0", "value": "CPU utilization" }] }
      ]
    }],
    "userGroups": [{ "usrgrpid": "7", "permission": 2 }]
  }}' 
À savoir : Le plus simple pour connaître les noms de champs d'un widget : configurer le widget dans l'interface, puis lire le résultat de dashboard.get avec "selectPages": "extend". Les noms et la largeur de la grille peuvent changer d'une version majeure à l'autre.
Erreur Courante : permission: 2 donne la lecture seule et 3 la lecture-écriture. Ne partagez pas en écriture un dashboard affiché sur un écran de NOC : une modification accidentelle s'y verrait immédiatement.

6. Bonnes pratiques #

Des dashboards qu'on regarde vraiment.

Check-list #

  • Un dashboard par public : NOC (problèmes, disponibilité), équipe applicative (son service), direction (SLA).
  • Le widget Problems en haut à gauche : c'est la première question en incident.
  • Des motifs et des tags plutôt que des listes d'hôtes figées ; des dashboards de modèle pour les vues par hôte.
  • Pas plus d'une dizaine de widgets par page ; utiliser des pages et le diaporama pour les écrans muraux.
  • Agrégation sur les longues périodes : afficher 30 jours d'historique brut charge inutilement la base.
  • Partage en lecture seule par groupes d'utilisateurs ; export par l'API pour sauvegarder et versionner.

Articles liés

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, …

Installer Zabbix et superviser son premier hôte

Installer Zabbix avec Docker Compose (serveur, PostgreSQL, interface web), installer l'agent 2 sur un serveur…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !