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

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-01
    
    返回结果中properties.availabilityState字段就是核心可用性状态,枚举值为Available/Unavailable/Degraded/Unknown,可直接映射为仪表盘的不同状态色值。
  • 订阅下全量应用网关批量健康查询
    做全局监控仪表盘不需要逐个遍历资源组、逐个请求单网关接口,直接调用批量查询接口即可一次拉全数据:
    请求方法:GET
    请求URI格式:
    https://management.azure.com/subscriptions/{你的订阅ID}/providers/Microsoft.ResourceHealth/availabilityStatuses?$filter=resourceType eq 'Microsoft.Network/applicationGateways'&api-version=2022-05-01
    
    返回结果会包含每个网关的资源ID、所属资源组、部署区域、健康状态、异常原因摘要,不需要额外发二次请求补全元数据。

Python SDK调用方案

不用手写HTTP请求封装鉴权逻辑,直接用官方维护的SDK即可,适配你用Python+Plotly搭建仪表盘的技术栈:

  1. 先安装所需依赖:
    pip install azure-mgmt-resourcehealth azure-identity pandas plotly
    
  2. 核心拉取代码参考:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:54:17