Far sì che Discourse veda l'indirizzo IP del server Prometheus

Grazie!

Abilitato cloudflare.template.yml. :slight_smile: Ma se ho capito correttamente, questo serve solo a disabilitare il rate limiting per il traffico proveniente dagli indirizzi IP di Cloudflare.

Per ora, questa è la configurazione del mio Prometheus:

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

Ora, il problema che sto affrontando è che Discourse non riesce a vedere l’indirizzo IP reale della richiesta. Quindi, per far funzionare l’approccio basato sulla whitelist, ho provato quanto segue:

  1. Ho aggiunto l’indirizzo IPv6 del mio server Prometheus alla variabile d’ambiente DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX in app.yml.

  2. Ho hardcodato l’indirizzo IPv6 reale del forum nel file /etc/hosts sul server Prometheus. Ora, il forum può vedere l’indirizzo IP del mio server Prometheus e consentirne l’accesso. :slight_smile:

Rimangono però altri problemi. Ad esempio, sto eseguendo Prometheus in un contenitore. Il file /etc/hosts dell’host non viene condiviso all’interno del contenitore. Di conseguenza, continua a risolvere l’indirizzo del forum su un IP di Cloudflare e fallisce durante l’autenticazione.

Potrei condividere /etc/hosts dall’host nel contenitore Docker, ad esempio con -v /etc/hosts:/etc/hosts all’avvio di Prometheus, ma questo provoca un errore come:

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

Ora devo solo risolvere questo problema.

Modifica #1: Ho risolto anche questo. IPv6 era disabilitato all’interno del contenitore Docker. Posso correggere il problema abilitando IPv6 nel contenitore o semplicemente usando --net=host.