Prometheus Scrape Job kann Metriken nicht erreichen

Was Jay hier meinte, ist, dass Sie den konfigurierten Hostnamen (DISCOURSE_HOSTNAME in Ihrer Container-.yml-Definition) verwenden müssen und nicht einen beliebigen Hostnamen, der auf die richtige IP-Adresse aufgelöst wird.

Dies ist beabsichtigt, damit Sie eine öffentliche Instanz nicht einfach von überall aus per Reverse-Proxy erreichen können und nur der konfigurierte Hostname akzeptiert wird:

$ curl -I https://try.discourse.org/about.json
HTTP/2 200
server: nginx
date: Mon, 15 May 2023 16:25:05 GMT
content-type: application/json; charset=utf-8
[... ]

# Das Folgende entspricht der Erstellung eines DNS-Eintrags unter
# try.somebogusreverseproxy.com, der auf dieselbe IP-Adresse wie try.discourse.org zeigt,
# und dann die Anforderung von https://try.somebogusreverseproxy.com/about.json
$ curl -H 'Host: try.somebogusreverseproxy.com' -I https://try.discourse.org/about.json
HTTP/2 404
cache-control: no-cache
content-length: 1427
content-type: text/html
cdck-proxy-id: app-router-tiehunter02.sea1
cdck-proxy-id: app-balancer-tieinterceptor1b.sea1

Umgekehrt, wenn Sie dies versuchen:

curl -H 'Host: YOUR_CONFIGURED_HOSTNAME' -I https://discourse_app/metrics

sollte es funktionieren, ist aber ein Hack. Es wird erwartet, dass Sie DNS nach Bedarf einrichten, damit Discourse über seinen konfigurierten Hostnamen transparent erreichbar ist:

curl -I https://YOUR_CONFIGURED_HOSTNAME/metrics

Wie Sie das tun, hängt stark von Ihren Anforderungen ab, aber die einfachste Option ist die Einrichtung eines Alias in /etc/hosts von dort, wo Ihre HTTP-Anfragen ausgehen.

3 „Gefällt mir“