지금까지 제가 이해한 바로는, Prometheus 인스턴스가 /metrics 엔드포인트에서 데이터를 수집(scrape)할 수 있도록 하려면 DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX를 편집하여 해당 머신의 IP 주소를 허용 목록에 추가해야 합니다.
이것을 수행할 다른 방법이 있을까요? 저희 Discourse 인스턴스는 Cloudflare의 DNS 프록시 뒤에 위치해 있어 최종 사용자의 실제 IP 주소를 확인할 수 없습니다. Prometheus의 데이터 수집 제한 사항 때문에 가능성이 낮을 것 같지만, API 키를 사용하여 이 문제를 해결할 방법을 찾을 수 있다면 정말 좋겠습니다.
그렇게 하면 작동할 것 같습니다. 시도해 보셨나요? 아, 하지만 grafana가 키를 헤더에 넣도록 할 수 없다고 생각하는데, 그래서 제가 이 기능을 처음 추가한 이유입니다.
네, 시도해 보았습니다. Prometheus는 여전히 스크레이퍼 구성에서 임의의 헤더를 허용하지 않습니다. 따라서 제 경우 Prometheus 서버의 IP 주소를 화이트리스트에 추가할 수 없으므로, Prometheus에서 Discourse 메트릭을 수집하는 방법이 없습니다.
Cloudflare와 같은 프록시 뒤에 Discourse 인스턴스를 실행하는 다른 사용자들도 있을 것입니다. 이 점을 고려할 때, 익스포터(exporter)를 약간 조정해야 할 것 같습니다.
Discourse API는 Prometheus 스크레이퍼 서브시스템이 지원하는 http basic auth와 같은 어느 정도 표준화된 방식 대신 자체 Api-Key 및 Api-Username 헤더를 사용합니다. 그래서 제 환경에서 이 기능을 사용할 수 있는 방법이 전혀 없습니다.
Discourse 인스턴스가 실제로는 리버스 프록시 뒤에 실행되고 있습니다. 리버스 프록시는 Cloudflare에서 제공되며, 우리는 Pro 플랜만 사용 중이므로 Cloudflare에서 실제 클라이언트 IP를 Discourse 인스턴스로 전달할 수 있는 옵션이 없습니다. 어쨌든, 제 문제는 이미 해결되었습니다.
Grafana 대시보드는 이 시점에 업데이트되어야 할 것 같습니다. 시간이 지나면서 Prometheus 익스포터가 업데이트되어 특정 메트릭을 더 이상 보내지 않게 되었지만, Grafana 대시보드는 여전히 해당 (이제 존재하지 않는) 메트릭의 값을 읽도록 구성되어 있습니다.