감사합니다!
cloudflare.template.yml를 활성화했습니다.
하지만 제 이해가 맞다면, 그것은 Cloudflare의 IP 주소에서 오는 트래픽에 대한 속도 제한(rate limiting)을 비활성화하기 위한 것이었습니다.
현재 제 Prometheus 설정은 다음과 같습니다.
scrape_configs:
- job_name: forum
scrape_interval: 5s
scheme: https
static_configs:
- targets:
- forum-behind-cloudflare-dns-proxy.com
현재 제가 겪고 있는 문제는, Discourse가 요청의 실제 IP 주소를 확인할 수 없다는 것입니다. 따라서 허용 목록(allow list) 방식이 작동하도록 하기 위해 다음을 시도했습니다.
-
app.yml의DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX환경 변수에 제 Prometheus 서버의 IPv6 주소를 추가했습니다. -
Prometheus 서버의
/etc/hosts에 포럼의 실제 IPv6 주소를 하드코딩했습니다. 이제 포럼은 제 Prometheus 서버의 IP 주소를 보고 액세스를 허용합니다.
아직 다른 문제들도 있습니다. 예를 들어, 저는 컨테이너에서 Prometheus를 실행하고 있습니다. 호스트의 /etc/hosts가 컨테이너 내부와 공유되지 않습니다. 그래서 포럼 주소를 Cloudflare IP로 계속 해석하고 인증 중에 실패합니다.
Prometheus를 시작할 때 -v /etc/hosts:/etc/hosts와 같이 호스트의 /etc/hosts를 Docker 컨테이너에 공유할 수 있지만, 그러면 다음과 같은 오류가 발생합니다.
Get "https://forum-behind-cloudflare-dns-proxy.com:443/metrics": dial tcp [<ipv6-address>]:443: connect: cannot assign requested address
이제 이 문제를 해결해야 합니다.
수정 #1: 이 부분도 해결했습니다. Docker 컨테이너 내부에서 IPv6가 비활성화되어 있었습니다. Docker 컨테이너에서 IPv6를 활성화하거나 단순히 --net=host를 사용하면 해결할 수 있습니다.