وظيفة Prometheus scrape لا يمكنها الوصول إلى المقاييس

اكتشاف جيد ولكن إذا حاولت استهداف هذا المنفذ المحدد، أحصل على رسالة “تم رفض الاتصال”.

Get "http://discourse_app:9405/metrics": dial tcp 172.20.0.2:9405: connect: connection refused

تم الاختبار باستخدام wget من داخل حاوية prometheus أيضًا للتأكد.

/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 بسيطة) ولكن تم الوصول إلى المقاييس على أي حال.

إذًا، ما تقوله هو أنه يجب عليّ إيجاد طريقة لجعل الحاوية التي تشغل prometheus تحتوي على إدخال في /etc/hosts يحل… لقد فقدتك هناك آسف :slight_smile:

ما قمت به هو إضافة حاوية Docker أخرى تحتوي ببساطة على nginx وتقديم تكوين وكيل أمامي يضيف الرأس 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;
    }
}

ها أنت ذا:

إعجاب واحد (1)