J’ai une installation Discourse en cours d’exécution (deux en fait, une en pré-production et une en production, des VM différentes et tout). Je teste sur l’environnement de pré-production. Installation via le guide officiel.
Actuellement, une pile Grafana/Prometheus/Node Exporter est déployée via docker compose sur la même VM où l’installation Discourse est déjà déployée.
Voici le docker-compose.yaml
version: "3"
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
networks:
- prometheus-cadvisor
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
networks:
- prometheus-node_exporter
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus:/app.cfg
networks:
- world
- prometheus-cadvisor
- prometheus-node_exporter
- discourse
- grafana-prometheus
command: >-
--config.file=/app.cfg/prometheus.yaml
--storage.tsdb.path=/prometheus
--web.console.libraries=/usr/share/prometheus/console_libraries
--web.console.templates=/usr/share/prometheus/consoles
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
GF_SECURITY_ADMIN_USER: [OMIS]
GF_SECURITY_ADMIN_PASSWORD: [OMIS]
GF_PATHS_PROVISIONING: '/app.cfg/provisioning'
volumes:
- ./grafana:/app.cfg
- ./grafana/provisioning:/etc/grafana/provisioning
networks:
- world
- grafana-prometheus
networks:
world:
grafana-prometheus:
internal: true
prometheus-cadvisor:
internal: true
prometheus-node_exporter:
internal: true
discourse:
external: true
J’ai reconstruit le discourse en spécifiant un réseau afin qu’il ne se déploie pas sur bridge et j’ai connecté Prometheus sur le même réseau.
docker network create -d bridge discourse
/var/discourse/launcher rebuild app --docker-args '--network discourse'
J’ai testé en entrant dans le conteneur Prometheus et en pingant le conteneur discourse en utilisant l’alias du réseau interne et il a pu l’atteindre.
Maintenant, lors de la configuration du job Prometheus pour qu’il scrape les métriques, en utilisant une adresse IP interne, je ne vois que server returned HTTP status 404 Not Found.
Voici la configuration Prometheus :
global:
scrape_interval: 30s
scrape_timeout: 10s
rule_files:
scrape_configs:
- job_name: prometheus
metrics_path: /metrics
static_configs:
- targets:
- 'prometheus:9090'
- job_name: node_exporter
static_configs:
- targets:
- 'node_exporter:9100'
- job_name: discourse_exporter
static_configs:
- targets:
- 'vmuniqueID-app:80'
vmuniqueID est un remplacement du nom réel de la VM.
Selon la documentation ici, l’accès via une adresse IP interne devrait être autorisé :
Par défaut, nous autorisons la route
metricsaux administrateurs et aux adresses IP privées.
Aidez-moi à voir ce qui me manque ![]()




