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

Prometheus目标健康状态异常:前后端服务监控无法拉起

解决Prometheus无法抓取Docker容器中前后端服务Metrics的问题

核心问题分析

报错dial tcp 172.18.0.3:5000: connect: connection refused说明Prometheus容器能解析到后端服务的IP,但无法建立连接。这不是端口映射问题(你已能本地访问服务),而是服务在容器内部未监听所有网卡,或未正确暴露/metrics端点导致的。

分步解决方案

1. 修复后端Flask服务的监听配置

Flask默认仅监听127.0.0.1,仅容器内部localhost可访问,其他容器无法连接。需强制监听所有网卡:

  • 若用flask run启动,添加参数:flask run --host=0.0.0.0
  • 若用代码启动,修改app.run():
    app.run(host='0.0.0.0', port=5000)
    
  • 也可直接在docker-compose.yml的backend服务中指定命令:
    backend:
      # 其他配置不变
      command: flask run --host=0.0.0.0
    

同时确认已集成Prometheus导出工具,例如prometheus_flask_exporter:

from flask import Flask
from prometheus_flask_exporter import PrometheusMetrics

app = Flask(__name__)
metrics = PrometheusMetrics(app)

# 你的业务路由代码...

2. 配置前端React的Metrics端点

React本身无/metrics端点,需额外搭建Node服务(如Express)暴露metrics:

const express = require('express');
const client = require('prom-client');

const app = express();
client.collectDefaultMetrics();

app.get('/metrics', async (req, res) => {
  res.set('Content-Type', client.register.contentType);
  res.send(await client.register.metrics());
});

// 监听所有网卡
app.listen(3000, '0.0.0.0', () => {
  console.log('Metrics服务运行在3000端口');
});

修改React容器的启动命令,确保该Express服务正常启动(可在package.json的scripts中添加启动脚本)。

3. 测试容器间网络连通性

进入Prometheus容器手动验证:

# 进入Prometheus容器
docker exec -it <prometheus容器名> sh

# 测试后端Metrics
curl http://backend:5000/metrics

# 测试前端Metrics
curl http://frontend:3000/metrics
  • 若返回connection refused:确认服务是否在容器内监听0.0.0.0
  • 若返回404 Not Found:确认服务是否正确配置了/metrics端点

4. 统一容器网络配置

当前grafana、loki、promtail未加入monitoring网络,虽不影响Prometheus抓前后端,但建议统一配置:

grafana:
  # 其他配置不变
  networks:
    - monitoring

loki:
  # 其他配置不变
  networks:
    - monitoring

promtail:
  # 其他配置不变
  networks:
    - monitoring

验证步骤

  1. 重启所有服务:docker-compose down && docker-compose up -d
  2. 访问Prometheus Targets页面:localhost:9090/targets
  3. 检查前后端服务状态是否变为UP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:42:15