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

本地Prometheus无法访问IDE中运行的Spring Boot应用求助

问题解决:Docker Compose启动的Prometheus无法连接Spring Boot的/actuator/prometheus端点

核心原因是Docker容器内的127.0.0.1指向容器自身,而非宿主机,所以Prometheus用127.0.0.1:8080访问时,找不到宿主机上的Spring Boot应用。下面是几种可行的解决方法:

方法1:使用Docker宿主机别名访问(推荐)

修改prometheus.yml里的targets为host.docker.internal:8080,这个是Docker官方提供的宿主机别名,在Windows、macOS和大部分Linux环境下可用:

scrape_configs:
  - job_name: 'backend'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 3s
    static_configs:
      - targets: ['host.docker.internal:8080']
        labels:
          application: 'app'

如果是部分Linux发行版不支持host.docker.internal,可以在docker-compose.yml的prometheus服务里添加额外主机映射:

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:将Spring Boot应用也加入Docker Compose网络

如果你的Spring Boot应用也打算用Docker部署,直接把它放进和Prometheus同一个Docker网络,用服务名访问更稳定:

  1. 修改docker-compose.yml,添加Spring Boot服务和共享网络:
version: '3.8'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      - app-network

  backend:
    image: 你的Spring Boot镜像名称:版本号
    container_name: backend
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=prod # 根据你的需求设置环境变量
    networks:
      - app-network

networks:
  app-network:
    driver: bridge
  1. 对应修改prometheus.yml的targets为服务名backend:8080:
scrape_configs:
  - job_name: 'backend'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 3s
    static_configs:
      - targets: ['backend:8080']
        labels:
          application: 'app'

方法3:使用宿主机的局域网IP

如果上述方法都不行,直接用宿主机的局域网IP(比如192.168.x.x)替换127.0.0.1:

scrape_configs:
  - job_name: 'backend'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 3s
    static_configs:
      - targets: ['192.168.1.100:8080'] # 替换成你的宿主机真实IP
        labels:
          application: 'app'

额外检查

确保你的Spring Boot应用已经正确配置Actuator:

  • application.yml或application.properties里已经设置management.endpoints.web.exposure.include=prometheus
  • 没有防火墙或安全组阻止8080端口的访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:54:55