見つけましたが、その特定のポートをターゲットにしようとすると、「接続拒否」メッセージが表示されます。
Get "http://discourse_app:9405/metrics": dial tcp 172.20.0.2:9405: connect: connection refused
念のため、Prometheusコンテナ内からwgetでテストしました。
/prometheus # ping discourse_app
PING discourse_app (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.223 ms
64 bytes from 172.20.0.2: seq=1 ttl=64 time=0.270 ms
^C
--- discourse_app ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.223/0.246/0.270 ms
/prometheus # wget discourse_app:9405/metrics
Connecting to discourse_app:9405 (172.20.0.2:9405)
wget: can't connect to remote host (172.20.0.2): Connection refused
はい、wgetでテストしました(prometheusコンテナは最小限のbusyboxです)が、それでもmetricsには到達しました。
つまり、Prometheusを実行しているコンテナに/etc/hostsエントリがあり、それが解決されるようにする方法を見つける必要があるということですか?すみません、そこまではわかりませんでした ![]()
私がやったことは、単にnginxを含む別のDockerを追加し、受信したリクエストにHostヘッダーを追加するフォワードプロキシ設定を提供することです。ポートは公開されていないため、内部仮想ネットワークからのみアクセスできます。
では、どのように変更されますか?
Prometheus Job:
- job_name: discourse_exporter_proxy
scheme: http
static_configs:
- targets:
- 'discourse_forward_proxy:8080'
docker-compose.yaml(プロキシの部分のみ)
version: "3"
services:
# [...]
discourse_forward_proxy:
image: nginx:latest
container_name: discourse_forward_proxy
restart: unless-stopped
volumes:
- ./discourse_forward_proxy/:/etc/nginx/conf.d
networks:
- prometheus-discourse_forward_proxy
- discourse
# [...]
networks:
prometheus-discourse_forward_proxy:
internal: true
discourse:
external: true
docker-compose.yamlがあるディレクトリに、./discourse_forward_proxy/discourse_forward_proxy.confを配置してください。
server {
listen 8080;
location /metrics {
proxy_set_header Host "YOUR_DOMAIN_HERE.COM";
proxy_pass https://discourse_app/metrics;
}
}
どうぞ:
