Azure是否有可获取Application Gateway资源健康的REST API或SDK?
获取Azure Application Gateway资源健康状态的可行方案
你之前调用接口失败的核心原因
- 请求URI开头多了冗余斜杠:
https://management.azure.com//subscriptions/里的双斜杠会直接导致路由匹配失败 - 接口路径规则和API版本用错:资源健康能力不属于Network资源提供程序的直接子资源,你拼接的路径不符合Resource Health服务的路由规则,且2018-01-01属于已淘汰的旧预览版API,本身就存在兼容性问题。
可用REST API
所有接口调用前都需要先获取Azure AD签发的具有对应资源读取权限的Bearer Token,调用身份只要持有订阅/资源组的读者角色,默认就有资源健康状态的读取权限,不需要额外配置特殊权限。
- 单应用网关健康查询
请求方法:GET
请求URI格式:
返回结果中https://management.azure.com/subscriptions/{你的订阅ID}/resourceGroups/{资源组名称}/providers/Microsoft.Network/applicationGateways/{网关名称}/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2022-05-01properties.availabilityState字段就是核心可用性状态,枚举值为Available/Unavailable/Degraded/Unknown,可直接映射为仪表盘的不同状态色值。 - 订阅下全量应用网关批量健康查询
做全局监控仪表盘不需要逐个遍历资源组、逐个请求单网关接口,直接调用批量查询接口即可一次拉全数据:
请求方法:GET
请求URI格式:
返回结果会包含每个网关的资源ID、所属资源组、部署区域、健康状态、异常原因摘要,不需要额外发二次请求补全元数据。https://management.azure.com/subscriptions/{你的订阅ID}/providers/Microsoft.ResourceHealth/availabilityStatuses?$filter=resourceType eq 'Microsoft.Network/applicationGateways'&api-version=2022-05-01
Python SDK调用方案
不用手写HTTP请求封装鉴权逻辑,直接用官方维护的SDK即可,适配你用Python+Plotly搭建仪表盘的技术栈:
- 先安装所需依赖:
pip install azure-mgmt-resourcehealth azure-identity pandas plotly - 核心拉取代码参考:
from azure.identity import DefaultAzureCredential from azure.mgmt.resourcehealth import ResourceHealthMgmtClient import pandas as pd # 本地调试时会自动读取Azure CLI登录凭证,服务部署后自动读取托管身份凭证,无需硬编码密钥 cred = DefaultAzureCredential() sub_id = "替换为你的订阅ID" rh_client = ResourceHealthMgmtClient(cred, sub_id) health_records = [] # 拉取订阅下所有应用网关的健康数据 for status in rh_client.availability_statuses.list_by_subscription_id( filter="resourceType eq 'Microsoft.Network/applicationGateways'" ): health_records.append({ "gateway_name": status.id.split("/")[-1], "resource_group": status.id.split("/")[4], "location": status.location, "health_status": status.properties.availability_state, "status_summary": status.properties.summary or "运行正常" }) # 转成DataFrame后可直接对接Plotly做各类可视化图表 df = pd.DataFrame(health_records)
注意不要使用低于2020-01-01版本的Resource Health API,旧版本返回的状态字段定义和路由规则与当前稳定版不兼容,会出现数据缺失或调用报错的问题。
内容的提问来源于stack exchange,提问作者Ghost rider
相关产品推荐
相关产品推荐

