Danke!
cloudflare.template.yml aktiviert.
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:
-
Ich habe die IPv6-Adresse meines Prometheus-Servers zur Umgebungsvariable
DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEXinapp.ymlhinzugefügt. -
Ich habe die tatsächliche IPv6-Adresse des Forums in
/etc/hostsauf dem Prometheus-Server hart kodiert. Jetzt kann das Forum die IP-Adresse meines Prometheus-Servers sehen und den Zugriff darauf zulassen.
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.