Prometheus Exporter Azure无法采集Azure资源指标求助
排查Azure资源指标采集问题(Alloy + Prometheus-Mimir)
1. 验证服务主体权限有效性
- 确认「Monitoring Reader」权限覆盖目标资源所在层级:若VM不在已授权资源组,或订阅/租户层面有额外权限限制,会导致指标读取失败。用Azure CLI直接测试权限:
若命令报错,需将权限范围调整至订阅级别,或确保目标VM在已授权资源组内。az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id> az monitor metrics list --resource <vm-resource-id> --metric "CPU Percentage" --interval PT1M
2. 检查Alloy的Azure资源发现配置
- 打开
config.alloy,确认prometheus.targets.azure块配置正确:- 必须指定正确的
environment、tenant_id、client_id、client_secret,以及包含目标资源的subscription_id或resource_groups。 - 检查
resource_types是否包含Microsoft.Compute/virtualMachines等目标资源类型,避免被遗漏。 - 确认
relabel_configs未错误过滤VM资源:比如action: keep规则需匹配VM的资源类型标识。
示例有效配置片段:
prometheus.scrape "azure_vms" { targets = prometheus.targets.azure "vms" forward_to = [prometheus.remote_write "mimir"] } prometheus.targets.azure "vms" { environment = "AzurePublicCloud" tenant_id = "<你的租户ID>" client_id = "<你的客户端ID>" client_secret = "<你的客户端密钥>" subscription_id = "<你的订阅ID>" resource_groups = ["<目标资源组>"] resource_types = ["Microsoft.Compute/virtualMachines"] } - 必须指定正确的
3. 确认Azure端指标可用性
- 登录Azure门户,进入目标VM的「监控」>「指标」页面,检查要采集的指标(如CPU使用率)是否有数据生成。若Azure本身未生成指标,Alloy无法采集到。
- 检查VM是否启用诊断设置:部分操作系统级指标(非主机指标)需启用Azure诊断扩展才能被采集。
4. 查看Alloy运行日志排查错误
- 通过Docker Compose查看Alloy容器日志:
查找docker-compose logs alloyazure_sd_configs相关报错,比如认证失败、资源发现超时、权限不足等信息。若有认证错误,核对服务主体的client_id、client_secret、tenant_id是否正确。
5. 验证Mimir的指标接收环节
- 确认Alloy中
prometheus.remote_write配置正确指向Mimir端点,且Mimir的distributor组件未过滤Azure指标。 - 在Mimir查询界面执行
{job="azure_vms"},若没有实例返回,说明资源发现失败;有实例但无指标,说明指标采集或传输环节存在问题。
6. 核对资源类型与指标命名空间匹配
- Azure不同资源的指标命名空间不同,比如VM主机指标对应
Microsoft.Compute/virtualMachines,操作系统指标对应Microsoft.Insights/metrics。确保Alloy配置中resource_types和metric_namespaces(若配置)与目标指标匹配。
内容的提问来源于stack exchange,提问作者tbsm4l
相关产品推荐
相关产品推荐

