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配置:
- 用Azure CLI命令获取实例ID:
az containerapp replica list --name <你的应用名> --resource-group <资源组名> --query "[].name" -o tsv - 把返回的实例ID拼接成完整的targets地址,生成临时配置文件(比如
acr_targets.yml) - 在主
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' - 定时运行脚本更新
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
相关产品推荐
相关产品推荐

