Pourquoi self-heberger Prometheus et Grafana sur un VPS
Contrairement a un outil tout-en-un, la stack Prometheus + Grafana separe clairement la collecte (Prometheus scrape les metriques exposees par des exporters), le stockage (base de series temporelles) et la visualisation (Grafana). Cette modularite est precisement ce qui en fait un standard : vous surveillez le VPS lui-meme avec Node Exporter, vos conteneurs avec cAdvisor, votre base PostgreSQL ou MySQL avec l'exporter dedie, et vous instrumentez vos propres applications au format Prometheus. Tout cela sur un VPS que vous controlez, ce qui vous evite d'envoyer des metriques d'infrastructure sensibles vers un SaaS facture a l'ingestion. Vous conservez l'historique aussi longtemps que votre disque le permet, vous construisez des dashboards specifiques a votre stack, et vous definissez vos propres regles d'alerte via Alertmanager. C'est l'approche a privilegier quand vous depassez le simple 'est-ce que le site repond ?' pour entrer dans l'analyse fine des tendances de charge.
Ce que cette stack apporte sur votre VPS
- Metriques systeme detaillees (CPU, RAM, I/O disque, reseau) via Node Exporter, historisees sur le long terme.
- Surveillance des conteneurs Docker avec cAdvisor : consommation par conteneur en temps reel.
- Dashboards Grafana sur mesure, importables depuis une bibliotheque communautaire de milliers de modeles.
- Alerting puissant via Alertmanager : seuils, regroupement, silences et routage multi-canaux.
- Langage de requete PromQL pour creer des indicateurs derives et des taux d'evolution.
- Instrumentation de vos propres applications au format Prometheus, sans cout d'ingestion externe.
Prerequis pour l'heberger
Cette stack est plus gourmande qu'un moniteur simple car Prometheus garde les series temporelles en memoire avant de les ecrire sur disque. Comptez un VPS 2 vCPU et 2 a 4 Go de RAM pour superviser un a plusieurs serveurs, et davantage si vous multipliez les exporters et la frequence de scrape. Le stockage est le point cle : prevoyez 20 a 40 Go de disque selon la duree de retention (--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 etre accessible de l'exterieur.
Deployer la stack Prometheus + Grafana avec Docker Compose
Ecrire le fichier docker-compose.yml
Definissez trois services : prometheus, grafana et node-exporter. Montez un prometheus.yml de configuration et des volumes nommes pour persister les donnees (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 metriques systeme, et un job cadvisor si vous surveillez Docker. Rechargez avec docker compose restart prometheus.
Connecter Grafana a Prometheus
Ouvrez Grafana, ajoutez une source de donnees 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 prets a l'emploi
Importez le dashboard Node Exporter Full (ID 1860) et un dashboard cAdvisor via leur identifiant. Vous obtenez instantanement des graphiques CPU, memoire, disque et reseau sans rien construire a la main.
Securiser Grafana derriere un reverse proxy SSL
Exposez uniquement Grafana via Nginx ou Caddy sur grafana.mondomaine.ma avec un certificat Let's Encrypt. Bloquez l'acces externe a Prometheus (port 9090) au niveau du pare-feu : il ne doit etre joignable que par Grafana.
Mettre en place l'alerting
Ajoutez Alertmanager au Compose, definissez des regles dans Prometheus (par exemple CPU > 90% pendant 5 minutes) et routez les alertes vers e-mail, Slack ou Telegram. Verifiez le declenchement avec une regle de test.
Surveillez l'espace disque consomme par la base de series temporelles de Prometheus, qui grossit avec le nombre de metriques et la frequence 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, reduire l'intervalle de scrape de 15s a 30s pour les metriques peu critiques divise aussi par deux le volume ecrit 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.