Introduction
Grafana est devenu l'outil de référence pour la visualisation de métriques en 2026. Couplé à Prometheus, il permet de surveiller des infrastructures complexes en temps réel. Ce tutoriel intermédiaire vous guide pas à pas dans le déploiement d'une stack complète, la configuration du provisioning automatique et la mise en place d'alertes. Vous apprendrez à créer des dashboards réutilisables et à éviter les pièges courants en production.
Prérequis
- Docker et Docker Compose v2
- Connaissances de base en Prometheus
- Accès à un terminal Linux/macOS
- Notions de YAML et JSON
Déploiement de la stack
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
volumes:
- grafana-storage:/var/lib/grafana
- ./provisioning:/etc/grafana/provisioning
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
grafana-storage:Ce fichier docker-compose déploie Prometheus et Grafana avec des volumes persistants. Le dossier provisioning permet la configuration automatique des datasources et dashboards au démarrage.
Configuration de Prometheus
Prometheus collecte les métriques. Nous allons maintenant créer sa configuration principale pour scraper les cibles.
Configuration Prometheus
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']Ce fichier définit les jobs de scraping. L'intervalle de 15 secondes est adapté à la plupart des cas intermédiaires. Ajoutez vos propres targets selon vos services.
Provisioning Grafana
Le provisioning permet de configurer automatiquement les datasources et dashboards sans interface manuelle.
Datasource provisioning
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
isDefault: true
editable: falseCe fichier YAML est chargé automatiquement par Grafana au démarrage. Il crée la connexion Prometheus sans intervention manuelle.
Dashboard JSON complet
{
"dashboard": {
"title": "CPU & Mémoire",
"panels": [
{
"title": "CPU Usage",
"type": "timeseries",
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"refId": "A"
}
]
}
],
"time": {
"from": "now-1h",
"to": "now"
}
}
}Ce dashboard JSON affiche l'utilisation CPU. Placez-le dans le dossier provisioning/dashboards pour qu'il apparaisse automatiquement dans Grafana.
Règles d'alerte
groups:
- name: cpu_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU élevée sur {{ $labels.instance }}"Ces règles définissent une alerte quand le CPU dépasse 80% pendant 5 minutes. Intégrez ce fichier dans la configuration Prometheus pour activer l'alerting.
Bonnes pratiques
- Utilisez toujours le provisioning pour les environnements reproductibles
- Limitez les droits des dashboards partagés
- Activez l'authentification OAuth ou LDAP en production
- Archivez vos dashboards JSON dans Git
- Testez les alertes avec des seuils réalistes
Erreurs courantes à éviter
- Oublier de monter le volume provisioning dans Docker Compose
- Utiliser des expressions PromQL trop coûteuses sans agrégation
- Ne pas configurer les règles de rétention Prometheus
- Ignorer les permissions des volumes Grafana (erreurs 403)
Pour aller plus loin
Explorez les plugins Grafana Enterprise et les intégrations avec Loki et Tempo. Rejoignez nos formations avancées sur Learni Group.