我有一个正在运行的 Spring Boot 应用程序,我向其中添加了执行器和 micrometer-prometheus 依赖项。
使用Postman时,我可以成功到达Prometheus端点
/actuator/prometheus
。
Prometheus 使用我在下面复制的 docker-compose 文件启动。
问题: 通过使用 UI,我发现 Prometheus 无法访问端点。
docker-compose.yml
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
普罗米修斯.yml
scrape_configs:
- job_name: 'backend'
metrics_path: '/actuator/prometheus'
scrape_interval: 3s
static_configs:
- targets: ['127.0.0.1:8080']
labels:
application: 'app'
以及使用Postman时的响应
Spring Boot 应用程序在您的 ide 中运行,并且可由本地主机访问,如果我们将 Prometheus 配置为使用本地主机与 Spring Boot 应用程序进行通信,它将无法工作,因为 Prometheus 容器在运行时有自己的本地主机在 Docker 中。它给出了错误。您可以对 docker-compose.yml 和 prometheus.yml 进行以下更改
1.docker-compose.yml
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
extra_hosts:
- 'host.docker.internal:host-gateway'
2.普罗米修斯.yml
scrape_configs:
- job_name: 'backend'
metrics_path: '/actuator/prometheus'
scrape_interval: 3s
static_configs:
- targets: [ 'host.docker.internal:8080']
labels:
application: 'app'