Pourquoi self-héberger Prometheus et Grafana sur un VPS
Contrairement à un outil tout-en-un, la stack Prometheus + Grafana sépare clairement la collecte (Prometheus scrape les métriques exposées par des exporters), le stockage (base de séries temporelles) et la visualisation (Grafana). Cette modularité est précisément ce qui en fait un standard : vous surveillez le VPS lui-même avec Node Exporter, vos conteneurs avec cAdvisor, votre base PostgreSQL ou MySQL avec l'exporter dédié, et vous instrumentez vos propres applications au format Prometheus. Tout cela sur un VPS que vous contrôlez, ce qui vous évite d'envoyer des métriques d'infrastructure sensibles vers un SaaS facturé à l'ingestion. Vous conservez l'historique aussi longtemps que votre disque le permet, vous construisez des dashboards spécifiques à votre stack, et vous définissez vos propres règles d'alerte via Alertmanager. C'est l'approche à privilégier quand vous dépassez le simple 'est-ce que le site répond ?' pour entrer dans l'analyse fine des tendances de charge.
Ce que cette stack apporte sur votre VPS
- Métriques système détaillées (CPU, RAM, I/O disque, réseau) via Node Exporter, historisées sur le long terme.
- Surveillance des conteneurs Docker avec cAdvisor : consommation par conteneur en temps réel.
- Dashboards Grafana sur mesure, importables depuis une bibliothèque communautaire de milliers de modèles.
- Alerting puissant via Alertmanager : seuils, regroupement, silences et routage multi-canaux.
- Langage de requête PromQL pour créer des indicateurs dérivés et des taux d'évolution.
- Instrumentation de vos propres applications au format Prometheus, sans coût d'ingestion externe.
Prérequis pour l'héberger
Cette stack est plus gourmande qu'un moniteur simple car Prometheus garde les séries temporelles en mémoire avant de les écrire sur disque. Comptez un VPS 2 vCPU et 2 à 4 Go de RAM pour superviser un à plusieurs serveurs, et davantage si vous multipliez les exporters et la fréquence de scrape. Le stockage est le point clé : prévoyez 20 à 40 Go de disque selon la durée de rétention (--storage.tsdb.retention.time). Il vous faut Docker et Docker Compose, un nom de domaine pour exposer Grafana en HTTPS, et un reverse proxy. Gardez Prometheus non expose publiquement : seul Grafana doit être accessible de l'extérieur.
Déployer la stack Prometheus + Grafana avec Docker Compose
Écrire le fichier docker-compose.yml
Définissez trois services : prometheus, grafana et node-exporter. Montez un prometheus.yml de configuration et des volumes nommés pour persister les données (prometheus_data, grafana_data). Lancez ensuite docker compose up -d.
Configurer les cibles dans prometheus.yml
Dans la section scrape_configs, ajoutez un job node pointant sur node-exporter:9100 pour les métriques système, et un job cadvisor si vous surveillez Docker. Rechargez avec docker compose restart prometheus.
Connecter Grafana à Prometheus
Ouvrez Grafana, ajoutez une source de données de type Prometheus avec l'URL http://prometheus:9090 (nom du service Docker). Testez la connexion : elle doit retourner 'Data source is working'.
Importer des dashboards prêts à l'emploi
Importez le dashboard Node Exporter Full (ID 1860) et un dashboard cAdvisor via leur identifiant. Vous obtenez instantanément des graphiques CPU, mémoire, disque et réseau sans rien construire à la main.
Sécuriser Grafana derrière un reverse proxy SSL
Exposez uniquement Grafana via Nginx ou Caddy sur grafana.mondomaine.com avec un certificat Let's Encrypt. Bloquez l'accès externe à Prometheus (port 9090) au niveau du pare-feu : il ne doit être joignable que par Grafana.
Mettre en place l'alerting
Ajoutez Alertmanager au Compose, définissez des règles dans Prometheus (par exemple CPU > 90% pendant 5 minutes) et routez les alertes vers e-mail, Slack ou Telegram. Vérifiez le déclenchement avec une règle de test.
Se connecter la première fois
Grafana s'ouvre sur un écran de connexion : saisissez les identifiants d'usine admin / admin, puis Grafana vous propose aussitôt de définir un nouveau mot de passe — faites-le immédiatement, avant toute autre action.
Surveillez l'espace disque consommé par la base de séries temporelles de Prometheus, qui grossit avec le nombre de métriques et la fréquence de scrape. Ajustez --storage.tsdb.retention.time (par exemple 30j) et, si vous avez besoin d'un historique long sans saturer le VPS, branchez un stockage distant comme Thanos ou VictoriaMetrics. Sur un VPS, réduire l'intervalle de scrape de 15s à 30s pour les métriques peu critiques divise aussi par deux le volume écrit sur disque.
La documentation officielle
Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de Grafana. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.