Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1012 minIntermédiaire

Tableaux de bord : Zabbix et Grafana

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • construire un tableau de bord Zabbix avec ses widgets ;
  • installer Grafana et le plugin Zabbix ;
  • connecter Grafana à Zabbix avec un compte en lecture seule ;
  • concevoir un tableau de bord lisible pour chaque public.

3 exercices corrigés

Un tableau de bord rassemble sur un écran les indicateurs utiles à un public : les problèmes en cours pour les techniciens, la disponibilité des services pour la direction, les tendances de capacité pour le responsable. Zabbix a ses propres tableaux de bord ; Grafana, logiciel libre de visualisation, s'y connecte par un plugin et produit des tableaux plus souples et plus soignés. Ce chapitre construit un tableau de bord Zabbix, installe Grafana 13 et son plugin Zabbix avec un compte en lecture seule, puis donne les règles d'un tableau de bord lisible.

Les tableaux de bord de Zabbix

Dashboards, bouton Create dashboard (ou Edit dashboard sur celui qui existe). Un tableau de bord a une ou plusieurs pages (qui peuvent défiler en diaporama) et des widgets, placés sur une grille. Les plus utiles en version 7.0 :

WidgetCe qu'il montrePour qui
ProblemsLa liste des problèmes en cours, filtrée par groupe, gravité, tagTechniciens
Problems by severityLe nombre de problèmes par gravité et par groupeTous
Host availabilityCombien d'hôtes sont joignables, par type d'interfaceTechniciens
GraphUne ou plusieurs courbes, avec seuilsTechniciens, responsable
Item valueUne valeur en grand, colorée selon des seuilsÉcran mural
Gauge (nouveau en 7.0)Une jauge, par exemple l'occupation d'un disqueÉcran mural
Top hostsLes hôtes classés selon une mesure : les dix plus chargés, les dix disques les plus pleinsResponsable
Honeycomb (nouveau en 7.0)Une alvéole par hôte ou par élément, colorée selon sa valeurVue d'ensemble d'un parc
MapUne carte réseau (chapitre 8)Écran mural
SLA reportLe SLI de chaque service sur les dernières périodesDirection
Web monitoringL'état des scénarios webTous

Un tableau de bord peut être privé ou partagé avec des utilisateurs et des groupes (bouton Sharing), en lecture ou en écriture. Un modèle peut aussi contenir ses propres tableaux de bord : chaque hôte lié en hérite, dans Monitoring > Hosts, lien Dashboards.

Pour un usage interne, ces tableaux de bord suffisent souvent. Grafana prend le relais quand on veut mélanger plusieurs sources (Zabbix, une base de données métier, Prometheus), des visualisations plus riches, ou des tableaux de bord pour des publics qui n'ont pas de compte Zabbix.

Comment Grafana lit Zabbix

Grafana ne collecte rien : il interroge l'API de Zabbix (api_jsonrpc.php, servie par l'interface web) au moment où l'on affiche un tableau de bord. Les données restent dans Zabbix, la configuration des tableaux de bord dans Grafana.

Installer Grafana sur Debian 13

Chez Sorbier, Grafana s'installe sur srv-journaux, à côté de Zabbix. Depuis le dépôt officiel de Grafana Labs :

bash
sudo apt-get install -y apt-transport-https wget gnupg
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

Grafana écoute sur le port TCP 3000. Ouvre http://192.168.10.180:3000 depuis le poste d'administration, connecte-toi avec admin / admin : Grafana impose aussitôt un nouveau mot de passe. Le paquet grafana installe l'édition libre (OSS) ; en novembre 2026, c'est la branche 13.

Côté pare-feu : 192.168.10.208/28 (ADMIN) vers 192.168.10.180, TCP 3000. Ajoute aussi apt.grafana.com à l'alias DEPOTS_MAJ du chapitre 4, sinon srv-journaux ne pourra pas télécharger Grafana ni ses mises à jour. Comme pour Zabbix, passe Grafana en HTTPS avant la mise en production (réglages protocol, cert_file et cert_key de la section [server] de /etc/grafana/grafana.ini, ou un proxy inverse Apache devant Grafana).

Installer et activer le plugin Zabbix

bash
sudo grafana cli plugins install alexanderzobnin-zabbix-app
sudo systemctl restart grafana-server

Le plugin (version 6.10 en novembre 2026, pour Grafana 11.6 et plus récent) est une application : il faut l'activer. Dans Grafana, Administration > Plugins and data > Plugins, cherche Zabbix, ouvre-le et clique sur Enable.

Un compte Zabbix en lecture seule pour Grafana

Grafana n'a besoin que de lire. Donne-lui le moins de droits possible.

  1. Users > User groups, Create user group : Grafana (lecture). Onglet Host permissions : groupes Serveurs Linux, Serveurs Windows, Réseau, Services web, droit Read.
  2. Users > Users, Create user : grafana, membre de ce groupe, rôle User role (le rôle prédéfini sans droit de configuration, qui autorise l'accès à l'API), un mot de passe long que personne n'utilisera.
  3. Users > API tokens, Create API token : nom grafana-srv-journaux, utilisateur grafana, une date d'expiration (un an, avec un rappel de renouvellement). Zabbix affiche le jeton une seule fois : copie-le.

La source de données

Dans Grafana, Connections > Add new connection, cherche Zabbix, Add new data source :

ChampValeur
URLhttps://srv-journaux.ad.sorbier.example/zabbix/api_jsonrpc.php (l'adresse complète de l'API)
AuthenticationAPI token, puis le jeton copié
Trends (dans Additional settings)Activé, After 7d, Range 4d : au-delà de 7 jours, Grafana lit les tendances, plus légères que l'historique
Cache TTLLa valeur par défaut

Save & test doit afficher la version de l'API de Zabbix. Une erreur de certificat signifie que srv-journaux ne fait pas confiance au certificat de sa propre interface : installe le certificat de l'autorité interne dans le système, ou, si Grafana est sur la même machine, utilise http://localhost/zabbix/api_jsonrpc.php (le flux ne quitte pas le serveur). Le plugin propose aussi une connexion directe à la base (Direct DB Connection), plus rapide sur de longues périodes : elle passe par une source de données MySQL de Grafana avec un compte MariaDB limité à la lecture des tables history, history_uint, trends et trends_uint.

Construire un tableau de bord

Dashboards > New > New dashboard > Add visualization, choisis la source Zabbix. Dans l'éditeur de requête, Query type Metrics, puis quatre filtres : Group, Host, Item tag et Item. Chaque filtre accepte un nom exact ou une expression régulière entre barres obliques :

PanneauRequêteVisualisation
Processeur des serveurs LinuxGroup Serveurs Linux, Host /.*/, Item CPU utilizationTime series, une courbe par hôte
Disques les plus pleinsGroup /Serveurs.*/, Host /.*/, Item /Space: Used, in %/Bar gauge, seuils à 80 (orange) et 90 (rouge)
Disponibilité du site de suiviHost site-public, Item /Failed step of scenario/Stat avec correspondance de valeurs : 0 = « En ligne » (vert), autre = « En panne » (rouge)
Débit du lien de MarseilleHost R-MARSEILLE, Item `/Bits receivedBits sent/`
Problèmes en coursQuery type Problems, gravité ≥ AveragePanneau Zabbix Problems fourni par le plugin

Les variables rendent un tableau de bord réutilisable : dans Dashboard settings > Variables, crée $groupe (requête Zabbix de type Group) et $hote (type Host, dans $groupe), puis utilise $groupe et $hote dans les requêtes. En haut du tableau de bord, deux listes déroulantes permettent de passer d'un serveur à l'autre sans dupliquer les panneaux.

Un tableau de bord lisible

Un bon tableau de bord répond à une question pour un public. Avant de dessiner, écris la question.

PublicQuestionContenu
Techniciens (écran du bureau)« Qu'est-ce qui ne va pas, maintenant ? »Problèmes en cours par gravité, carte, disponibilité des hôtes, scénarios web
Responsable informatique« Où vais-je manquer de ressources ? »Disques les plus pleins et leur prévision, charge des hyperviseurs, débit des liens sur 90 jours
Direction« Les engagements sont-ils tenus ? »SLA de chaque service sur le mois et les douze derniers mois, nombre d'incidents, durée moyenne de rétablissement

Quelques règles :

  • l'information la plus importante en haut à gauche, là où l'œil commence ;
  • moins de panneaux : une dizaine au plus par écran. Un tableau de bord où tout clignote ne montre rien ;
  • des unités et des seuils cohérents partout (le rouge signifie toujours la même chose) ;
  • une période adaptée : les dernières heures pour l'exploitation, des mois pour la capacité ;
  • pour la direction, des pourcentages et des tendances, pas des courbes de processeur ;
  • pas de couleur comme seule information : ajoute un libellé (« En panne ») pour les daltoniens et les impressions en noir et blanc.

Exercices

Exercice 1 sur 3 Les droits de Grafana Réussi À revoir

Un stagiaire a configuré la source Zabbix de Grafana avec le compte Admin et son mot de passe, et le test réussit.

  1. Pourquoi est-ce une mauvaise configuration, même si « ça marche » ?
  2. Décris la configuration correcte, côté Zabbix et côté Grafana.
  3. Le jeton expire dans un an. Comment éviter que les tableaux de bord s'éteignent ce jour-là sans prévenir ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. Grafana stocke un secret qui donne tous les droits sur Zabbix : modifier les actions et les médias, créer des comptes, supprimer des hôtes, exécuter des scripts sur les machines supervisées si les scripts globaux sont activés. Une faille de Grafana devient une compromission de la supervision. Et changer le mot de passe d'Admin casserait Grafana.
  2. Côté Zabbix : un groupe d'utilisateurs avec le droit Read sur les seuls groupes d'hôtes utiles ; un utilisateur grafana avec le rôle User role ; un jeton d'API avec date d'expiration. Côté Grafana : source Zabbix, URL complète de api_jsonrpc.php en HTTPS, authentification par jeton.
  3. Un déclencheur sur l'expiration du jeton (Zabbix affiche la date d'expiration dans Users > API tokens), ou au minimum un rappel dans le calendrier de l'équipe un mois avant ; et un panneau de test dans Grafana, dont l'échec se voit tout de suite. Le renouvellement figure dans la procédure d'exploitation.

Tu avais trouvé ?

Exercice 2 sur 3 Le tableau de bord de la direction Réussi À revoir

Antoine Mercier présente chaque mois la qualité du service informatique au comité de direction. Propose quatre panneaux pour ce tableau de bord, avec leur source et leur visualisation.

Voir la réponseMasquer la réponse de l'exercice 2

Par exemple :

  1. Disponibilité du mois par service (application de gestion, site de suivi, messagerie, partages) : widget SLA report de Zabbix, ou dans Grafana une requête Services du plugin, en Stat avec le SLO en seuil (vert au-dessus, rouge en dessous).
  2. Évolution sur douze mois de la disponibilité de l'application de gestion : Time series ou Bar chart mensuel, avec une ligne de seuil à 99,5 %.
  3. Nombre d'incidents et durée moyenne de rétablissement du mois : depuis GLPI (une source de données MySQL en lecture sur la base de GLPI, ou les statistiques de GLPI), en Stat.
  4. Capacité : la prévision de remplissage des stockages et la charge moyenne des hyperviseurs, en Bar gauge, pour annoncer les investissements à venir.

Pas de courbe de processeur ni de liste de problèmes techniques : la direction a besoin de savoir si les engagements sont tenus et ce qui demandera un budget.

Tu avais trouvé ?

Exercice 3 sur 3 Une requête qui ne renvoie rien Réussi À revoir

Dans Grafana, un panneau avec Group Serveurs Windows, Host /.*/, Item CPU utilization n'affiche aucune donnée, alors que le même panneau sur le groupe Serveurs Linux fonctionne. Donne deux causes possibles et leur vérification.

Voir la réponseMasquer la réponse de l'exercice 3
  • Les droits : le groupe d'utilisateurs Grafana (lecture) n'a pas le droit Read sur le groupe d'hôtes Serveurs Windows. Vérification : Users > User groups, onglet Host permissions. L'API ne renvoie que ce que l'utilisateur a le droit de voir, sans erreur.
  • L'absence de valeurs dans Zabbix : l'élément existe mais ne reçoit rien (agent injoignable, élément Not supported, ou serveurs liés au modèle actif alors que leurs agents n'ont pas ServerActive=). Vérification : Monitoring > Latest data sur un serveur Windows, colonne Last check ; si Zabbix n'a pas de valeur, Grafana n'en aura pas.

On peut aussi trouver une faute de frappe dans le nom du groupe (un espace, une majuscule) : le filtre Group propose les noms existants dans sa liste, choisis-le plutôt que de le taper.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Métriques, journaux et métrologie réseauRevoir le sommaire du cours