Discourse dazu bringen, die Prometheus-Server-IP zu erkennen

Danke!

cloudflare.template.yml aktiviert. :slight_smile: Aber wenn ich das richtig verstehe, diente das nur dazu, die Ratenbegrenzung für den Datenverkehr von Cloudflare-IP-Adressen zu deaktivieren.

Momentan sieht meine Prometheus-Konfiguration so aus:

scrape_configs:
        - job_name: forum
          scrape_interval: 5s
          scheme: https
          static_configs:
                  - targets:
                          - forum-behind-cloudflare-dns-proxy.com

Das Problem, das ich derzeit habe, ist, dass Discourse die tatsächliche IP-Adresse einer Anfrage nicht sieht. Damit der Ansatz mit der Zulassungsliste funktioniert, habe ich Folgendes versucht:

  1. Ich habe die IPv6-Adresse meines Prometheus-Servers zur Umgebungsvariable DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX in app.yml hinzugefügt.

  2. Ich habe die tatsächliche IPv6-Adresse des Forums in /etc/hosts auf dem Prometheus-Server hart kodiert. Jetzt kann das Forum die IP-Adresse meines Prometheus-Servers sehen und den Zugriff darauf zulassen. :slight_smile:

Ich habe jedoch noch einige andere Probleme. Da Prometheus in einem Container läuft, wird /etc/hosts vom Host nicht innerhalb des Containers geteilt. Daher wird die Forum-Adresse weiterhin auf eine Cloudflare-IP aufgelöst, und die Authentifizierung schlägt fehl.

Ich könnte /etc/hosts vom Host im Docker-Container freigeben, z. B. mit -v /etc/hosts:/etc/hosts beim Start von Prometheus. Das führt jedoch zu einem Fehler wie:

Get "https://forum-behind-cloudflare-dns-proxy.com:443/metrics": dial tcp [<ipv6-address>]:443: connect: cannot assign requested address

Jetzt muss ich nur noch dieses Problem lösen.

Bearbeitung #1: Das habe ich auch herausgefunden. IPv6 war im Docker-Container deaktiviert. Ich kann das beheben, indem ich IPv6 im Docker-Container aktiviere oder einfach --net=host verwende.