You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Prometheus抓取本地Spring服务报no route to host如何解决

Prometheus容器抓取本地Spring服务异常解决

问题现象

Prometheus targets页面对应Spring服务的目标状态为down,报错connect: no route to host,但本地浏览器可正常访问该服务的指标端点,临时关闭Windows防火墙后问题仍存在。

环境说明

  • 技术栈:Docker + Spring Boot
  • 被监控的Spring Boot服务运行在本地主机,http://<myIp>:8080/actuator/prometheus可正常返回指标数据,<myIp>为本地主机IP。

相关配置

docker-compose.yml配置

# Use root/example as user/password credentials
version: '3.8'
services:
  mysql:
    image: mysql:8.0.22
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_USER: atendente
      MYSQL_PASSWORD: atendente
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: plano_saude_db
  jaeger:
    image: jaegertracing/all-in-one:1.21
    container_name: jaeger
    ports:
      - 5775:5775/udp
      - 6831:6831/udp
      - 5778:5778
      - 16686:16686
      - 14268:14268
      - 14250:14250
      - 9411:9411
  prometheus:
    image: prom/prometheus:v2.24.1
    container_name: prometheus
    ports:
      - 9090:9090
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      '--config.file=/etc/prometheus/prometheus.yml'

prometheus.yml初始配置

global:
  scrape_interval:     15s # 默认每15秒抓取一次目标
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'planosaude-sys'
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['<myIp>:8080']

无效尝试

将target地址替换为docker.for.win.localhost后,出现新报错:dial tcp: lookup docker.for.win.localhost on 127.0.0.11:53: no such host。

最终解决方案

修改prometheus.yml中planosaude-sys任务的target配置,将地址替换为Docker提供的宿主机访问域名即可:

static_configs:
  - targets: ['host.docker.internal:8080']

修改后重启Prometheus容器,即可正常抓取本地Spring服务的指标数据。


内容的提问来源于stack exchange,提问作者Siqueira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:09:04