docker 普罗米修斯- Django :连接被拒绝

xoefb8l8  于 2023-03-22  发布在  Docker
关注(0)|答案(2)|浏览(247)

(This这是我第一次使用Prometheus,我还不太擅长Docker/Django)
我在一个Docker容器中运行Django项目,而Prometheus使用docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/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时,我可以正确地看到信息。我尝试将URL替换为我的IP地址10.25.2.192,但这并不改变结果。
我不明白为什么不能连接。

bvn4nwqk

bvn4nwqk1#

这是因为你的prometheus容器在不同的网络上,对它来说“localhost”意味着不同的东西,它故意不访问主机的网络(默认情况下)。
您可以通过在两个容器都运行时运行sudo docker network ls来验证这一点。
你可以做的是确保两个容器在同一个网络上运行。
在你的docker命令中,这意味着添加--network [name],对于docker-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]
y0u0uwnf

y0u0uwnf2#

docker检查name-container

转到最后,网络-〉网关Image example - docker inspect
添加-〉prometheus.ymlImage example Prometheus.yml
目标:IP-GATEWAY:8086Image example Prometheus

相关问题