[英]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.