2 回答
TA贡献1828条经验 获得超3个赞
您没有配置prometheus容器|服务来使用prometheus.yml您定义的。
你想要这样的东西:
prometheus:
restart: always
depends_on:
- gcp-exporter
image: prom/prometheus:latest
container_name: prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
# Permits `curl --request POST http://localhost:9090/-/reload`
- --web.enable-lifecycle
volumes:
- ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml
expose:
- "9090"
ports:
- 9090:9090
在此配置中,您运行docker-compose
( ${PWD}
) 的文件夹还包含${PWD}/prometheus.yml
.
YAML 指定:
配置文件(使用
--config-file
)位于容器中的(默认?)位置/etc/prometheus/prometheus.yml
。这一行是多余的,但有助于文档。主机的
prometheus.yml
(in${PWD}
)被映射到容器的/etc/prometheus.prometheus.yml
(匹配上面的配置)。如果您的文件夹结构不同,请修改--volume={source}/prometheus.yml:/etc/prometheus/prometheus.yml
.
您可以通过检查 Prometheus 服务器的目标来验证这一点,以确保它通过检查进行抓取my_server:8080
:http://localhost:9090/targets
值得my_service
通过检查以下内容来确保正确发布指标:http://localhost:8080/metrics
注意从您的主机,
my_service
只能访问,localhost:8080
但是,您在Docker Compose 网络中prometheus.yml
正确地引用了它。my_service
我鼓励您在引用容器时不要使用标签。具有误导性。它可能不会引用最新的图像,并且您几乎无法控制正在使用的图像。参见Understanding Docker's "latest" taglatest
latest
TA贡献1860条经验 获得超8个赞
所以我找到了。我必须使用容器名称设置我的抓取配置。像这样的
scrape_configs:
- job_name: my-service
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
static_configs:
- targets:
- 'prometheus:9090'
- 'my-service:8080'
将 Prometheus 卷修复到数据后,您将看到您的服务已启动并正在运行http://localhost:9090/targets
- 2 回答
- 0 关注
- 182 浏览
添加回答
举报