−25%

sur Windows en paiement annuel, jusqu'au 31/10. Voir les offres

EQVPS

VPS pour Grafana + Prometheus : supervision serveurs

Réunissez CPU, RAM, disque et métriques de services de tous vos serveurs au même endroit : Prometheus, node_exporter et Grafana sur un VPS, derrière HTTPS.

« Le serveur est lent » est un rapport de bug inutile — sauf si vous pouvez ouvrir un graphique et voir que la mémoire a grimpé pendant trois jours avant le plantage. C'est exactement ce qu'apportent Prometheus et Grafana : le CPU, la RAM, le disque et le réseau de chaque serveur, enregistrés toutes les 15 secondes et affichés en graphiques dans lesquels on peut remonter le temps. Placez-les sur leur propre petit VPS et ils continuent de surveiller même quand une machine de production tombe.

Les briques

Ce qu'il vous faut

1. node_exporter sur chaque cible

apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp

Remplacez 203.0.113.10 par l'adresse de votre VPS de supervision. Ne laissez jamais le 9100 ouvert au monde : il en dit long sur votre serveur.

2. Prometheus et Grafana sur le VPS de supervision

apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring

cat > prometheus.yml <<'EOF'
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: nodes
    static_configs:
      - targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF

cat > compose.yml <<'EOF'
services:
  prometheus:
    image: prom/prometheus
    volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
    command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
    ports: [ "127.0.0.1:9090:9090" ]
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    volumes: [ "grafana:/var/lib/grafana" ]
    ports: [ "127.0.0.1:3000:3000" ]
    restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF

docker compose up -d

HTTPS devant Grafana :

echo 'grafana.example.com {
    reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy

Connectez-vous (admin / admin, puis changez-le), ajoutez Prometheus comme source de données à http://prometheus:9090 et importez le tableau de bord communautaire « Node Exporter Full » (ID 1860). Vous obtenez un tableau de bord système complet en une minute environ.

Serveurs en offre NAT

Un serveur NAT n'accepte les connexions entrantes que sur son port SSH personnel : Prometheus ne peut donc pas interroger son exporter. Inversez le sens : lancez Prometheus en mode agent sur la machine NAT et poussez vers le serveur de supervision, qui accepte déjà les écritures distantes (l'option --web.enable-remote-write-receiver plus haut).

# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
  - job_name: self
    static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
  - url: https://prom-push.example.com/api/v1/write

Exposez ce point de réception via Caddy avec une authentification basique plutôt que d'ouvrir le port 9090 tel quel.

Remarques honnêtes

Prometheus va chercher les données lui-même : parfait pour un parc que vous maîtrisez, peu pratique pour tout ce qui est derrière du NAT — d'où l'astuce de l'agent. Son stockage local n'est pas prévu pour des années d'historique ; pour une longue rétention, on ajoute plus tard un stockage distant. Et les tableaux de bord ne font que la moitié du travail : configurez au moins trois alertes dès le premier jour (disque au-delà de 85 %, pression mémoire, cible injoignable), sinon vous ne regarderez les graphiques qu'une fois la panne arrivée.

Pour aller plus loin

Prêt à déployer ? Payez en crypto, sans KYC — en ligne en une minute environ.

Déployer →

FAQ

En quoi est-ce différent d'Uptime Kuma ?

Uptime Kuma répond à « est-ce que ça tourne ? ». Prometheus et Grafana répondent à « pourquoi c'est lent, et depuis quand ? » — CPU, mémoire, disque, réseau et métriques applicatives dans le temps. Beaucoup utilisent les deux : Kuma pour les alertes de panne, Grafana pour les tendances et la planification de capacité.

Quelle place disque occupe Prometheus ?

Environ 1 à 2 octets par échantillon après compression. Dix serveurs exposant chacun mille séries, collectées toutes les 15 secondes, donnent à peu près 60 millions d'échantillons par jour — de l'ordre de 100 Mo. Avec la rétention par défaut de 15 jours, cela fait quelques gigaoctets.

Puis-je surveiller des serveurs en offre NAT ?

Oui, mais pas par scraping : un serveur NAT n'accepte pas de connexion entrante vers son exporter. Lancez Prometheus en mode agent sur la machine NAT et poussez les métriques vers votre serveur de supervision avec remote_write. Le serveur de supervision, lui, doit être sur une offre avec IP dédiée.

Quelle offre pour le serveur de supervision ?

Un Micro-IP (2 Go de RAM, 10 $/mois) gère confortablement une à deux dizaines d'hôtes. Si vous ajoutez des métriques applicatives à forte cardinalité ou gardez des mois de données, passez au Small-IP. Une IP dédiée vous donne le HTTPS pour Grafana et une adresse stable à autoriser sur vos cibles.

Le serveur de supervision doit-il être séparé de ce qu'il surveille ?

Oui. Si Grafana tourne sur le serveur qui vient de manquer de mémoire, vous perdez la vue sur le problème au moment précis où vous en avez besoin. Un petit VPS séparé continue de fonctionner quand un serveur de production lâche.

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.