Tenho uma instalação do Discourse em funcionamento (duas, na verdade, uma em staging e outra em produção, VMs diferentes e tudo mais). Estou testando no ambiente de staging. Instalação através do guia oficial.
Atualmente, há uma pilha Grafana/Prometheus/Node Exporter implantada via docker compose na mesma VM onde a instalação do Discourse já está implantada.
Aqui está o 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: [OMITTED]
GF_SECURITY_ADMIN_PASSWORD: [OMITTED]
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
Reconstruí o discourse especificando uma rede para que ele não fosse implantado em bridge e conectei o Prometheus na mesma rede.
docker network create -d bridge discourse
/var/discourse/launcher rebuild app --docker-args '--network discourse'
Testei entrando no container do Prometheus e pingando o container do Discourse usando o alias da rede interna e ele conseguiu alcançá-lo.
Agora, ao configurar o job do Prometheus para que ele colete as métricas, usando um IP interno, só consigo ver server returned HTTP status 404 Not Found.
Esta é a configuração do 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 é uma substituição do nome real da VM.
De acordo com a documentação aqui, o acesso via IP interno deveria ser permitido:
Por padrão, permitimos a rota
metricspara administradores e IPs privados.
Por favor, ajude-me a ver o que estou perdendo ![]()




