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

无法将.NET指标接入Docker Prometheus容器问题求助

解决Docker部署的Prometheus无法连接Mac本地.NET应用指标的问题

问题根源

你的.NET应用仅监听了localhost(即127.0.0.1),这意味着它只接受来自本机回环接口的请求,而Docker容器属于独立的网络环境,即使使用旧的docker.for.mac.localhost也无法访问绑定在127.0.0.1上的端口。另外,docker.for.mac.localhost已被Docker官方弃用,推荐使用host.docker.internal作为宿主机的标准访问别名。

修复步骤

1. 修改.NET应用的监听地址

将代码中的UriPrefixes改为监听所有网络接口的地址,这样容器就能通过宿主机IP访问到指标端口:

using MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
                .AddMeter("HatCo.HatStore")
                .AddPrometheusHttpListener(options => options.UriPrefixes = new string[] { "http://*:9184/" })
                .Build();

也可以用0.0.0.0明确指定监听所有接口:

options.UriPrefixes = new string[] { "http://0.0.0.0:9184/" }

2. 更新Prometheus配置文件

将OpenTelemetryTest任务的目标替换为host.docker.internal:9184:

- job_name: 'OpenTelemetryTest'
  scrape_interval: 1s # poll very quickly for a more responsive demo
  static_configs:
    - targets: ["host.docker.internal:9184"]

3. 验证本地指标可达性

在Mac终端执行以下命令,确认.NET应用的metrics接口能正常返回数据:

curl http://localhost:9184/metrics

如果返回指标内容,说明本地服务正常;如果失败,检查.NET应用是否正常启动,端口是否被其他程序占用。

4. 检查Mac防火墙设置

确保Mac的防火墙没有阻止9184端口的入站请求:

  • 打开「系统设置」→「网络」→「防火墙」
  • 点击「选项」,确认是否允许你的.NET应用接收连接,或者临时关闭防火墙测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:00:13