RousselTMLEARNING

Article · Grafana : de la découverte à l'expertise

Bonnes pratiques Grafana

1. Concevoir des dashboards utiles #

Répondre à une question précise.

Principes #

Disponible dans : ✓ OSS ✓ Enterprise ✓ Cloud

Bonnes pratiques Grafana
Un dashboard qui n'aide à aucune décision doit être supprimé.
  • Une question par dashboard (« le service est-il en bonne santé ? »), du plus général (haut) au plus détaillé (bas).
  • Méthodes RED (services) et USE (ressources) pour structurer les panneaux.
  • Titres explicites, unités et seuils colorés, légendes lisibles ; pas plus de 20 panneaux par page.
  • Variables ($cluster, $namespace, $service) pour réutiliser un même dashboard.
# Variables chaînées (Dashboard settings > Variables)
label_values(up, cluster)                                  # $cluster
label_values(kube_pod_info{cluster="$cluster"}, namespace) # $namespace
# Requête de panneau
sum by (pod) (rate(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$namespace"}[$__rate_interval]))

2. Dashboards et configuration as code #

Reproductible et versionné.

Provisioning #

# provisioning/dashboards/equipes.yml
apiVersion: 1
providers:
  - name: equipes
    orgId: 1
    folder: Équipes
    type: file
    disableDeletion: true
    allowUiUpdates: false             # l'interface ne peut plus diverger de Git
    options: { path: /var/lib/grafana/dashboards, foldersFromFilesStructure: true }
# Exporter / importer via l'API
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" https://grafana.exemple.fr/api/dashboards/uid/abc123 | jq '.dashboard' > dashboards/api.json
curl -s -X POST -H "Authorization: Bearer $GRAFANA_TOKEN" -H 'Content-Type: application/json' \
  -d "{\"dashboard\": $(cat dashboards/api.json), \"overwrite\": true, \"folderUid\": \"equipes\"}" https://grafana.exemple.fr/api/dashboards/db
# Générer en code : grafonnet (Jsonnet), Grafana Foundation SDK ou Terraform
Bonne Pratique : Versionnez dashboards, sources de données, règles d'alerte et contact points dans Git : un déploiement de Grafana doit pouvoir être recréé de zéro.

3. Performances #

Des dashboards rapides.

Réduire la charge #

  • Rafraîchissement raisonnable (30 s – 1 min) ; évitez les plages de plusieurs mois sur des données brutes.
  • Utilisez des recording rules pour les requêtes lourdes et $__rate_interval pour les fenêtres.
  • Limitez la cardinalité affichée (topk) et le nombre de points (Max data points).
  • Mode Instant pour les panneaux Stat/Table, Range pour les séries.
# Panneaux lents : onglet Query inspector > Stats ; côté serveur
curl -s http://grafana:3000/metrics | grep -E 'grafana_api_dataproxy_request_all_milliseconds|grafana_alerting_rule_evaluation_duration'
# grafana.ini
[dashboards]
min_refresh_interval = 15s
[dataproxy]
timeout = 60
max_idle_connections = 100

4. Sécurité et exploitation #

Qui voit quoi, et comment durer.

Accès #

# grafana.ini : SSO OIDC et rôles par groupe
[auth.generic_oauth]
enabled = true
name = Entreprise
client_id = grafana
scopes = openid profile email groups
role_attribute_path = contains(groups[*], 'grafana-admins') && 'Admin' || contains(groups[*], 'sre') && 'Editor' || 'Viewer'
auto_login = false
[security]
admin_password = $__file{/run/secrets/admin_password}
disable_gravatar = true
cookie_secure = true
[users]
viewers_can_edit = false
  • Dossiers par équipe avec permissions Viewer par défaut et Editor limité.
  • Jetons de comptes de service à portée limitée et expiration, jamais de clés d'API personnelles dans la CI.
  • Désactivez l'inscription libre et l'accès anonyme en production.

Sauvegarde et mises à jour #

# Base SQLite : sauvegarde à chaud ; sinon PostgreSQL avec pg_dump
sqlite3 /var/lib/grafana/grafana.db ".backup '/backup/grafana-$(date +%F).db'"
docker run --rm grafana/grafana:11.2.0 grafana --version
# Tester la montée de version sur une copie avant la production
grafana-cli plugins ls && grafana-cli plugins update-all
Erreur Courante : Une mise à jour majeure sans test peut casser des plugins et des panneaux. Lisez les notes de version, testez sur une instance de recette avec une copie de la base.

Schéma de référence et vérification rapide #

Visualiser le principe et le contrôler en ligne de commande.

Schéma de référence #

Dashboards as code
Les modifications manuelles en production sont désactivées.
grafana-cli admin data-migration encrypt-datasource-passwords
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" https://grafana.exemple.fr/api/health

📄 Bonnes pratiques Grafana : dashboards, provisioning, performances et sécurité →

Mon suivi

  • ⏱ Durée estimée : ≈ 10 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

Poser une question sur cette leçon →Voir toutes les discussions de la formation

Glossaire de la formation

Observabilité

La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...

Grafana

Plateforme open source de visualisation de données et d'analyse de métriques interactives.

Prometheus

Système open source de surveillance et d'alerte, particulièrement adapté pour la collecte de métriques dans des environnements dynamiques (comme Kuber...

APM (Application Performance Monitoring)

Surveillance des performances applicatives pour identifier, diagnostiquer et résoudre les problèmes complexes liés aux performances et à la disponibil...

k6

Outil open source de test de charge (load testing) conçu pour l'ingénierie de performance, permettant d'évaluer la fiabilité et la scalabilité des sys...

Traces distribuées

Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

Alerting

Processus consistant à notifier les équipes (via email, Slack, Teams) lorsqu'un événement spécifique, un dépassement de seuil ou une anomalie est déte...

HTTP Code

Codes de statut HTTP standardisés indiquant le résultat du traitement d'une requête.1xx (Information) : 100 Continue, 101 Switching Protocols.2xx (Suc...

Access Log

Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...

Client IP

L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...

Timestamp

La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.

Request

La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...

Status Code

Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...

Size

Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...

Referrer

L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...

User-Agent

Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...

Response Time

La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...

Grafana Loki

Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...

Articles recommandés

Grafana Provisioning : Automatisez la gestion de vos tableaux de bord et sources de données

Découvrez comment utiliser le provisioning de Grafana pour gérer vos configurations (dashboards, ...

Cross-dashboard variables Grafana : partager des variables entre dashboards

Créez une fois vos variables Grafana et réutilisez-les partout : portée globale ou par dossier, a...

La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place

Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...

Maîtriser les Variables dans Grafana : Dynamisez vos Tableaux de Bord

Apprenez à utiliser les variables pour créer des tableaux de bord interactifs et réutilisables. D...

Grafana Alerting et gestion des astreintes

Créer des alertes dans Grafana (règles, points de contact, politiques de notification), les provi...

Prometheus : visualiser ses métriques (UI, Grafana et dashboards)

Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...

Bonnes pratiques Grafana Loki : labels, requêtes, stockage et coûts

Bonnes pratiques Loki : choix des labels et cardinalité, structured metadata, requêtes LogQL perf...

Grafana : maîtriser les requêtes (PromQL, LogQL, SQL et expressions)

Construire des requêtes efficaces dans Grafana : éditeur de requêtes, Query Inspector, PromQL, Lo...

Grafana Assistant : L'IA au service de l'observabilité

Découvrez Grafana Assistant, l'intelligence artificielle intégrée à Grafana Cloud. Apprenez comme...

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 !