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

Azure Container Apps中Prometheus收集/metrics并计算实例平均值方法咨询

在Azure Container Apps中整合Prometheus指标并计算实例平均值

要解决负载均衡导致每次只抓取单个实例metrics的问题,核心是让Prometheus能直接访问每个Container App实例的独立metrics端点,再通过PromQL计算平均值,具体操作如下:

1. 获取每个实例的专属访问地址

Azure Container Apps的每个运行实例都有唯一的专属域名,格式为:
https://<你的应用名>--<实例ID>.<环境名>.azurecontainerapps.io

你可以在Azure Portal的Container Apps详情页→「实例」标签下找到每个实例的ID,拼接成完整的metrics地址(比如https://myapp--abc123.myenv.azurecontainerapps.io/metrics),直接访问就能拿到对应实例的指标数据。

2. 配置Prometheus抓取所有实例

静态配置(适合实例数固定的场景)

在Prometheus配置文件prometheus.yml中,添加静态抓取目标,把所有实例的地址列进去:

scrape_configs:
  - job_name: 'azure-container-apps-myapp'
    static_configs:
      - targets: [
          "myapp--abc123.myenv.azurecontainerapps.io:443",
          "myapp--def456.myenv.azurecontainerapps.io:443",
          "myapp--ghi789.myenv.azurecontainerapps.io:443",
          "myapp--jkl012.myenv.azurecontainerapps.io:443",
          "myapp--mno345.myenv.azurecontainerapps.io:443"
        ]
    scheme: https
    metrics_path: '/metrics'

保存配置后重启Prometheus,即可抓取所有实例的指标。

动态配置(适合实例自动扩缩容的场景)

如果应用会自动增减实例,静态配置维护麻烦,可以写脚本调用Azure CLI获取当前实例列表,动态生成Prometheus的targets配置:

  1. 用Azure CLI命令获取实例ID:
    az containerapp replica list --name <你的应用名> --resource-group <资源组名> --query "[].name" -o tsv
    
  2. 把返回的实例ID拼接成完整的targets地址,生成临时配置文件(比如acr_targets.yml)
  3. 在主prometheus.yml中通过file_sd_configs加载这个动态配置:
    scrape_configs:
      - job_name: 'azure-container-apps-myapp'
        file_sd_configs:
          - files:
              - './acr_targets.yml'
        scheme: https
        metrics_path: '/metrics'
    
  4. 定时运行脚本更新acr_targets.yml,Prometheus会自动加载新的目标。

3. 用PromQL计算实例指标平均值

当Prometheus拿到所有实例的指标后,即可用聚合函数计算平均值,举几个常见场景:

  • 计算所有实例app_requests_total指标的1分钟平均增长率:
    avg(rate(app_requests_total[1m]))
    
  • 按endpoint标签分组,计算每个端点的平均请求率:
    avg(rate(app_requests_total[1m])) by (endpoint)
    
  • 计算所有实例当前内存使用率的平均值:
    avg(app_memory_usage_bytes / app_memory_limit_bytes) * 100
    

注意事项

  • 确保Prometheus所在网络能访问实例的专属域名,如果是VNet内部的Prometheus,需配置Container Apps的VNet集成打通网络。
  • 如果应用启用了身份验证,需在Prometheus抓取配置中添加对应认证参数(比如Bearer Token)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:40:28