Docker容器中的Prometheus无法访问Spring Boot应用程序

kbo*_*kbo 6 docker spring-boot prometheus

我有一个在本地(不在容器中)9000 端口上运行的 Spring Boot 应用程序。该应用程序已使用 Prometheus 千分尺配置执行器,并且可以通过 URL localhost:9000/actuator/prometheus 获取整个统计数据。

\n\n

我使用以下命令在 Docker 容器中运行 Prometheus:

\n\n
docker run --name spring_boot_prometheus -p 9090:9090 -p 9000:9000 -v /Users/xyz/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus\n
Run Code Online (Sandbox Code Playgroud)\n\n

普罗米修斯.yml

\n\n
global:\n  scrape_interval:     5s\n  evaluation_interval: 5s\nscrape_configs:\n- job_name: \'users-app\'\n  metrics_path: \'/actuator/prometheus\'\n  static_configs:\n  - targets: [\'localhost:9000\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

该命令docker ps返回以下内容:

\n\n
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES\n1568ec9e8353        prom/prometheus     "/bin/prometheus --c\xe2\x80\xa6"   10 seconds ago      Up 9 seconds        0.0.0.0:9000->9000/tcp, 0.0.0.0:9090->9090/tcp   spring_boot_prometheus\n
Run Code Online (Sandbox Code Playgroud)\n\n

UI 表示 prometheus 无法连接到 spring boot 端点,但它可用。如果我单击端点,它会将我重定向到1568ec9e8353:9000而不是localhost:9000\n在此输入图像描述

\n\n

我该如何解决这个问题?

\n\n

感谢您的帮助!

\n

Iva*_*cki 3

prometheus.yml中,不要localhost:9000 输入容器的具体名称:spring_boot_prometheus:9000

Docker 最佳实践是使用容器名称而不是容器 IP 地址。