O job de scrape do Prometheus não consegue alcançar as métricas

O que Jay quis dizer aqui é que você precisa usar o nome do host configurado (DISCOURSE_HOSTNAME na sua definição de contêiner .yml) em oposição a qualquer nome de host que por acaso resolva para o IP correto.

Isso é deliberado, para que você não possa facilmente fazer proxy reverso de uma instância pública de qualquer lugar, e para que apenas o nome do host configurado seja aceito:

$ 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
[...]

# o seguinte é equivalente a criar um registro DNS em
# try.somebogusreverseproxy.com apontando para o mesmo endereço IP de try.discourse.org,
# e então solicitar 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

Inversamente, se você tentar isto:

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

deve funcionar, mas é um hack. A expectativa é que você configure o DNS conforme necessário para que o Discourse possa ser alcançado em seu nome de host configurado de forma transparente:

curl -I https://YOUR_CONFIGURED_HOSTNAME/metrics

Como fazer isso depende muito de seus requisitos, mas a opção mais simples é configurar um alias em /etc/hosts de onde suas requisições HTTP se originam.

3 curtidas