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

使用Python SDK获取Azure警报规则关联警报的正确Rule ID值

问题分析与解决方案

核心问题:两种警报规则的关联ID格式存在差异

Azure的Metric Alert Rules和Scheduled Query Alert Rules(日志警报),在关联警报记录时,alerts.get_all()要求的alert_rule参数格式并不一致,直接传入原始rule.id对日志警报会不生效:

  • Metric Alert Rules:直接使用rule.id即可,确保资源ID完整无截断,示例代码:

    # 示例Metric Alert规则ID
    metric_rule_id = "/subscriptions/xxx/resourceGroups/rg-name/providers/Microsoft.Insights/metricAlerts/my-metric-alert"
    related_alerts = alerts_client.alerts.get_all(alert_rule=metric_rule_id)
    
  • Scheduled Query Alert Rules(日志警报):必须修改规则ID的资源提供程序部分,将Microsoft.Insights/scheduledQueryRules替换为Microsoft.AlertsManagement/alertsources,示例代码:

    from azure.mgmt.monitor import MonitorManagementClient
    
    # 获取日志警报规则
    monitor_client = MonitorManagementClient(credential, subscription_id)
    log_rules = monitor_client.scheduled_query_rules.list_by_subscription()
    
    for rule in log_rules:
        # 修正规则ID格式
        corrected_rule_id = rule.id.replace(
            "/providers/Microsoft.Insights/scheduledQueryRules/",
            "/providers/Microsoft.AlertsManagement/alertsources/"
        )
        # 查询关联警报
        related_alerts = alerts_client.alerts.get_all(alert_rule=corrected_rule_id)
        for alert in related_alerts:
            print(alert.name)
    

额外验证要点

  1. API版本兼容性:确保AlertsManagementClient使用的API版本不低于2021-08-01,旧版本可能无法正确关联日志警报的规则ID。初始化客户端时可指定:
    from azure.mgmt.alertsmanagement import AlertsManagementClient
    
    alerts_client = AlertsManagementClient(
        credential,
        subscription_id,
        api_version="2023-05-01"
    )
    
  2. 时间范围过滤:默认get_all()仅返回最近的警报,若门户中的警报不在默认时间范围内,需手动指定时间范围:
    from datetime import datetime, timedelta
    
    start_time = datetime.utcnow() - timedelta(days=7)
    end_time = datetime.utcnow()
    related_alerts = alerts_client.alerts.get_all(
        alert_rule=corrected_rule_id,
        start_time=start_time,
        end_time=end_time
    )
    
  3. 权限检查:确保服务主体拥有Microsoft.AlertsManagement/alerts/read和Microsoft.Insights/scheduledQueryRules/read(针对日志警报)的权限,避免因权限不足导致返回空列表。

内容的提问来源于stack exchange,提问作者Mr. Developerdude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:42:43