Grafana : visualisez et supervisez vos données, installation pas à pas avec Docker
Vous avez des serveurs, une box domotique, un NAS ou quelques conteneurs Docker, et vous voulez voir d’un coup d’œil ce qui s’y passe : charge CPU, mémoire, températures, consommation électrique, logs ? Grafana est l’outil de référence pour ça. Dans cet article, je vous explique à quoi il sert, pourquoi il vaut le coup, et comment l’installer en quelques minutes avec Docker.
Qu’est-ce que Grafana ?
Grafana est une application web libre (open source) de visualisation de données et de supervision. Elle ne stocke pas vraiment vos données : elle se branche sur des sources de données (Prometheus, InfluxDB, Loki, MySQL/MariaDB, PostgreSQL, Elasticsearch, etc.) et vous permet de construire des tableaux de bord composés de graphiques, jauges, tableaux, cartes ou indicateurs.
Pourquoi utiliser Grafana ?
- Un seul outil pour plusieurs sources : vous pouvez afficher sur la même page des métriques Prometheus, des données d’une base SQL et des logs Loki.
- Des tableaux de bord prêts à l’emploi : la communauté en partage des milliers sur grafana.com. Un import par identifiant et vous obtenez un tableau de bord complet.
- Des alertes : Grafana peut vous prévenir (e-mail, Telegram, webhook, etc.) quand un disque est plein ou qu’un service ne répond plus.
- Gratuit et auto-hébergeable : l’édition open source suffit amplement pour un usage personnel, un homelab ou une petite structure.
- Extensible : de nombreux plugins ajoutent des types de graphiques et des sources de données.
- Léger à déployer avec Docker : une image officielle, un volume pour les données, et c’est parti.
Quelques exemples d’usage
- Surveiller la santé d’un serveur ou d’un NAS (CPU, RAM, disques, réseau).
- Suivre des conteneurs Docker (avec cAdvisor).
- Visualiser une consommation électrique ou des températures issues de la domotique.
- Analyser des logs applicatifs ou de pare-feu.
Installer Grafana avec Docker
Prérequis
- Un serveur ou une machine Linux (un mini-PC, un Raspberry Pi 4/5, une VM…).
- Docker Engine et le plugin Docker Compose installés. Vérifiez avec :
docker --version
docker compose version
Méthode 1 : un essai rapide en une commande
Pour tester Grafana sans rien configurer :
docker run -d -p 3000:3000 --name=grafana grafana/grafana
Le conteneur démarre en arrière-plan (-d) et publie le port 3000 (-p 3000:3000). Attention : sans volume, vos tableaux de bord sont perdus si vous supprimez le conteneur. Pour un vrai usage, passez à la méthode 2.
Méthode 2 : Docker Compose (recommandée)
Étape 1 – Créer le dossier du projet
mkdir -p ~/grafana && cd ~/grafana
Étape 2 – Créer le fichier .env (il contient le mot de passe administrateur, à ne pas partager) :
GRAFANA_ADMIN_PASSWORD=ChoisissezUnMotDePasseSolide
Étape 3 – Créer le fichier docker-compose.yaml
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
- GF_USERS_ALLOW_SIGN_UP=false
- GF_PLUGINS_PREINSTALL=grafana-clock-panel
- TZ=Europe/Paris
volumes:
- grafana-storage:/var/lib/grafana
volumes:
grafana-storage:
Ce que fait ce fichier :
image: l’image officielle de Grafana (édition open source) ;restart: unless-stopped: Grafana redémarre tout seul après un reboot du serveur ;GF_SECURITY_ADMIN_PASSWORD: définit le mot de passe du compteadminau premier démarrage ;GF_PLUGINS_PREINSTALL: installe automatiquement un plugin (ici le panneau horloge, à titre d’exemple ; plusieurs plugins se séparent par des virgules) ;grafana-storage: un volume Docker nommé qui conserve vos tableaux de bord et réglages, même si vous recréez le conteneur.
Étape 4 – Démarrer Grafana
docker compose up -d
Vérifiez que le conteneur tourne, et consultez les logs si besoin :
docker compose ps
docker compose logs -f grafana
Étape 5 – Se connecter
Ouvrez votre navigateur sur http://ADRESSE_IP_DU_SERVEUR:3000 (ou http://localhost:3000 en local) et connectez-vous avec l’utilisateur admin et le mot de passe défini dans le fichier .env.
Note : si vous utilisez un dossier local (« bind mount ») plutôt qu’un volume nommé, le conteneur tourne avec l’utilisateur 472 : le dossier doit lui appartenir (
sudo chown -R 472:472 ./data), sinon Grafana ne pourra pas écrire ses données.
Aller plus loin : ajouter Prometheus pour superviser votre serveur
Grafana seul est une coquille vide : il lui faut des données. Le duo classique est Prometheus (qui collecte les métriques) et node_exporter (qui expose celles de la machine). Remplacez votre docker-compose.yaml par ceci :
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
- GF_USERS_ALLOW_SIGN_UP=false
- TZ=Europe/Paris
volumes:
- grafana-storage:/var/lib/grafana
depends_on:
- prometheus
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus-data:/prometheus
extra_hosts:
- "host.docker.internal:host-gateway"
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
pid: host
network_mode: host
volumes:
- /:/host:ro,rslave
command:
- "--path.rootfs=/host"
volumes:
grafana-storage:
prometheus-data:
Puis créez le fichier prometheus.yml à côté. Comme node_exporter tourne sur le réseau de l’hôte, Prometheus l’atteint via host.docker.internal (déclaré par extra_hosts dans le compose ci-dessus) :
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: node
static_configs:
- targets: ["host.docker.internal:9100"]
Appliquez la configuration :
docker compose up -d
Connecter Prometheus à Grafana
- Dans Grafana, ouvrez Connections → Data sources → Add data source.
- Choisissez Prometheus.
- Dans Prometheus server URL, saisissez
http://prometheus:9090(les conteneurs d’un même compose se joignent par leur nom). - Cliquez sur Save & test : un message vert confirme la connexion.
Importer un tableau de bord tout fait
Allez dans Dashboards → New → Import, saisissez l’identifiant 1860 (« Node Exporter Full », un classique de la communauté), choisissez votre source Prometheus et validez. Vous obtenez immédiatement un tableau de bord complet de votre machine.
Maintenance : mise à jour et sauvegarde
Mettre à jour Grafana :
cd ~/grafana
docker compose pull
docker compose up -d
docker image prune -f
Sauvegarder le volume de données (archive dans le dossier courant) :
docker run --rm -v grafana_grafana-storage:/data -v "$PWD":/backup alpine \
tar czf /backup/grafana-backup-$(date +%F).tar.gz -C /data .
Le nom du volume est préfixé par celui du dossier du projet (ici grafana_grafana-storage). Vérifiez-le avec docker volume ls.
Quelques conseils de sécurité
- Ne laissez jamais le mot de passe par défaut
admin/admin. - N’exposez pas directement le port 3000 sur Internet : placez Grafana derrière un reverse proxy en HTTPS (Nginx, Apache, Traefik, Caddy…) ou derrière un VPN.
- Pour n’autoriser que l’accès local (par exemple derrière un reverse proxy sur la même machine), remplacez
"3000:3000"par"127.0.0.1:3000:3000". - Mettez à jour régulièrement l’image.
Conclusion
En quelques minutes, Docker vous permet d’avoir un Grafana fonctionnel, persistant et facile à mettre à jour. Reliez-le à Prometheus, InfluxDB ou à votre base de données, importez quelques tableaux de bord de la communauté, et vous disposez d’un véritable centre de supervision pour votre infrastructure personnelle ou professionnelle.
Sources
- Documentation officielle : Run Grafana Docker image
- Grafana Labs : présentation du produit
- Tableau de bord communautaire « Node Exporter Full »
Grafana et le logo Grafana sont des marques de Grafana Labs. Les captures d’écran proviennent du site grafana.com.