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

.NET Core 3.1应用仅启用HTTP2时Prometheus探测失败如何解决?

问题根因

Prometheus默认抓取指标时使用HTTP/1.1协议,不会主动发起HTTP/2请求,你日志中出现的http2=false就是指本次抓取没有使用HTTP/2协议,发往仅支持HTTP/2的Kestrel服务端的HTTP/1.1请求会被直接拒绝,所以会出现探测失败的情况。

解决步骤
  • 修改Prometheus的抓取任务配置,主动开启HTTP/2支持
    在你的prometheus.yml对应job配置中新增enable_http2: true字段,修改后完整配置如下:
    - job_name: "service"
      # metrics_path defaults to '/metrics'
      scheme: https
      enable_http2: true # 新增此行开启HTTP2抓取
      tls_config:
        insecure_skip_verify: true    
      static_configs:
        - targets: 
          - localhost:5001
    
  • 确认Kestrel配置符合纯HTTP/2的要求
    .NET Core 3.1的Kestrel开启纯HTTP/2模式时,默认要求必须走TLS加密,你配置的scheme: https是符合要求的,开发环境用自签名证书配合insecure_skip_verify: true可以正常运行,生产环境建议替换为正规可信证书。
  • 重启Prometheus服务生效配置
    配置修改完成后重启Prometheus,再到UI查询up指标即可看到服务状态为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:27:02