Prometheus Scrape Job kann Metriken nicht erreichen

Guter Fund, aber wenn ich versuche, auf diesen bestimmten Port zuzugreifen, erhalte ich die Meldung „Verbindung verweigert“.

Get "http://discourse_app:9405/metrics": dial tcp 172.20.0.2:9405: connect: connection refused

Ich habe es auch mit wget aus dem Prometheus-Container heraus getestet, um sicherzugehen.

/prometheus # ping discourse_app
PING discourse_app (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.223 ms
64 bytes from 172.20.0.2: seq=1 ttl=64 time=0.270 ms
^C
--- discourse_app ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.223/0.246/0.270 ms
/prometheus # wget discourse_app:9405/metrics
Connecting to discourse_app:9405 (172.20.0.2:9405)
wget: can't connect to remote host (172.20.0.2): Connection refused

Ja, ich habe es stattdessen mit wget getestet (der Prometheus-Container ist ein einfaches Busybox), aber ich habe es trotzdem zu den Metriken geschafft.

Sie sagen also, ich sollte einen Weg finden, den Prometheus-Container mit einem Eintrag in /etc/hosts zum Laufen zu bringen, der auflöst… Ich habe Sie da verloren, Entschuldigung :slight_smile:

Was ich getan habe, ist, einen weiteren Docker mit nur einem Nginx darin hinzuzufügen und eine Forward-Proxy-Konfiguration bereitzustellen, die den Header Host zu den Anfragen hinzufügt, die er empfängt. Er gibt keinen Port frei, sodass er nur über das interne virtuelle Netzwerk zugänglich ist.

Wie ändern sich die Dinge also?

Prometheus Job:

  - job_name: discourse_exporter_proxy
    scheme: http
    static_configs:
      - targets:
        - 'discourse_forward_proxy:8080'

docker-compose.yaml (nur der Teil mit dem Proxy)

version: "3"

services:
# [...]
    discourse_forward_proxy:
        image: nginx:latest
        container_name: discourse_forward_proxy
        restart: unless-stopped
        volumes:
            - ./discourse_forward_proxy/:/etc/nginx/conf.d
        networks:
            - prometheus-discourse_forward_proxy
            - discourse
# [...]

networks:
    prometheus-discourse_forward_proxy:
        internal: true
    discourse:
        external: true

Im Verzeichnis, in dem sich Ihre docker-compose.yaml befindet, haben Sie ./discourse_forward_proxy/discourse_forward_proxy.conf

server {
    listen 8080;

    location /metrics {
      proxy_set_header Host "YOUR_DOMAIN_HERE.COM";
      proxy_pass https://discourse_app/metrics;
    }
}

Da haben Sie es:

1 „Gefällt mir“