簡體   English   中英

Prometheus - Django:連接被拒絕

[英]Prometheus - Django : connection refused

(這是我第一次使用 Prometheus,我對 Docker/Django 還不是很好)

我正在docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus容器中運行 Django 項目,並使用docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus Prometheus

在我docker-compose.yml我有:

...
nginx-proxy:
        build:
            context: ./dockerfiles/nginx-proxy/
            args:
                - DOMAIN_NAME=local.my.url
        ports:
            - "80:80"
        depends_on:
            - api
            - ...
        volumes:
            - ./volumes/nginx-front/log/:/var/log/nginx

api:
        build:
            context: ./dockerfiles/api/
            args:
                - GUNICORN_WORKERS=20
        restart: always
        volumes:
            - ./volumes/api/src/:/usr/src/app
...

/tmp/prometheus.yml我有:

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  external_labels:
      monitor: 'my-project-monitor'

rule_files:

scrape_configs:
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'api'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['api.local.my.url']

prometheus工作似乎工作正常(但那些不是我感興趣的指標), api從 Promotheus UI 給出以下錯誤: Get http://api.local.my.url:80/metrics: dial tcp 127.0.0.1:80: connect: connection refused

但是,當我在瀏覽器中輸入http://api.local.my.url:80/metrics ,我可以正確地看到信息。 我試過用我的 IP 地址10.25.2.192替換 URL,但這並沒有改變結果。

我不明白為什么它無法連接。

這是因為您的 prometheus 容器位於不同的網絡上,因此 'localhost' 意味着不同的東西。 它故意無法訪問主機的網絡(默認情況下)。

您可以通過在兩個容器運行時運行sudo docker network ls來驗證這一點。

您可以做的是確保兩個容器在同一網絡上運行。

在您的--network [name]命令中,這意味着添加--network [name]而對於--network [name] -compose,則意味着添加network:屬性。 如果您在文件底部添加以下內容,則可以對 docker-compose 文件中的所有服務執行此操作:

networks:
  default:
    external:
      name: [name]

來源: https : //docs.docker.com/compose/networking/#use-a-pre-existing-network

要在 docker-compose 之外實際創建網絡,您可以使用

sudo docker network create -d bridge [name]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM