使用 Azure Monitor 创建、查看和管理活动日志警报

概述

活动日志警报是新发生的活动日志事件与警报中指定的条件匹配时激活的警报。

这些警报适用于 Azure 资源,可以使用 Azure 资源管理器模板来创建。 此外,还可以在 Azure 门户中创建、更新或删除它们。 通常,你可以创建活动日志警报,以便在 Azure 订阅中的资源发生特定的更改时接收通知。 警报通常限于特定的资源组或资源。 例如,你可能希望在示例资源组 myProductionResourceGroup 中的任何虚拟机被删除时收到通知。 或者,你可能希望在任何新角色分配到订阅中的用户时收到通知。

重要

有关服务运行状况通知的警报无法通过用于创建活动日志警报的界面来创建。 若要详细了解如何创建和使用服务运行状况通知,请参阅接收有关服务运行状况通知的活动日志警报

创建警报规则时,请确保以下几点:

  • 范围中的订阅并未不同于创建警报的订阅。
  • 条件必须是配置警报时所依据的级别、状态、调用方、资源组、资源 ID 或资源类型事件类别。
  • 警报配置 JSON 中没有“anyOf”条件或嵌套的条件。 简单而言,只允许一个“allOf”条件,而不允许更多的“allOf”或“anyOf”条件。
  • 当类别是“管理”时,必须在警报中至少指定上述条件之一。 不能创建每次在活动日志中创建事件时激活的警报。
  • 无法为活动日志的“警报”类别中的事件创建警报。

Azure 门户

可以使用 Azure 门户创建和修改活动日志警报规则。 该体验与 Azure 活动日志相集成,以确保针对所关注的特定事件顺利创建警报。 在 Azure 门户上,可以从 Azure Monitor 警报边栏选项卡或从 Azure Monitor 活动日志边栏选项卡新建活动日志警报规则。

从 Azure Monitor 警报边栏选项卡创建警报规则

以下过程说明如何在 Azure 门户中创建指标警报规则:

  1. Azure 门户中单击“监视”。 “监视”边栏选项卡将所有监视设置和数据合并到一个视图中。

  2. 依次单击“警报”、“+ 新建警报规则”。

    新建警报规则按钮的屏幕截图。

    提示

    大多数资源边栏选项卡的资源菜单中的“监视”下面也包含“警报”,同样可从中创建警报。

  1. 在加载的上下文窗格中单击“选择资源”,选择要触发警报的目标资源。 使用“订阅”和“资源类型”下拉列表查找要监视的资源。 也可以使用搜索栏查找资源。

    备注

    可以选择整个订阅、资源组或特定资源作为目标。 如果选择了订阅或资源组作为目标,并且还选择了资源类型,则该规则将应用于所选订阅或资源组中该类型的所有资源。 如果选择了特定目标资源,该规则将仅应用于该资源。 不能使用目标选择器显式选择多个订阅、资源组或资源。

  2. 如果选定的资源具有可创建警报的活动日志操作,则右下方的“可用信号”将包含活动日志。 可在此文中查看活动日志警报支持的资源类型的完整列表。

    目标选择项边栏选项卡的屏幕截图。

  3. 选择目标资源之后,单击“添加条件”。

  4. 你将看到资源支持的信号列表,其中包括来自各种活动日志类别的信号。 选择要创建警报的活动日志信号/操作。

  5. 你将看到过去六个小时的活动日志操作图表。 可以使用“图表期间”下拉框进行选择以查看更长时间的操作历史记录。

  6. 在警报逻辑下,可以选择定义更多筛选条件:

    • 事件级别:事件的严重级别:“详细”、“信息性”、“警告”、“错误”或“严重”。
    • 状态:事件的状态:例如,“已启动”、“失败”或“成功”。
    • 事件发起者:也称为“调用方”。 电子邮件地址或执行操作的用户的 Azure Active Directory 标识符。

    备注

    为获得高质量和有效的规则,在警报范围是整个订阅且所选信号是“所有管理操作”的情况下,我们要求在定义条件期间,必须填写其中一个警报逻辑下拉列表:“事件级别”、“状态”或“发起者”。这样规则将更加具体。

  7. 单击“完成” 。

    条件选择项边栏选项卡的屏幕截图。

  8. 填写“警报详细信息”,例如“警报规则名称”、“说明”和“严重性” 。

    备注

    用户当前无法配置活动日志警报的警报严重性,该严重性始终默认为 Sev4。

  9. 通过选择现有操作组或创建新的操作组,将一个操作组添加到警报中。

  10. 单击“完成”,保存活动日志警报规则。

从 Azure Monitor 活动日志边栏选项卡创建警报规则

创建活动日志警报的另一种方法是通过 Azure 门户中的活动日志从已发生的活动日志事件开始。

  1. 在“Azure Monitor - 活动日志”边栏选项卡中,可以筛选或查找所需的事件,然后使用“+ 新建警报规则”按钮对未来的类似事件创建警报 。

    根据活动日志事件创建警报规则的屏幕截图。

  2. 警报规则创建边栏选项卡将打开,并且已根据先前选择的活动日志事件填充了警报规则范围和条件。 如果需要,可以在此阶段编辑和修改范围和条件。 请注意,默认情况下,新规则的确切范围和条件是从原始事件属性中“按原样”复制的。 例如,发生事件的资源以及发起事件的特定用户/服务名称默认包含在新警报规则中。 如果要让警报规则更通用,需相应地修改范围和条件,如上述第 3-9 阶段所述。

  3. 然后遵循上文所述的步骤 10 到 12 操作。

在 Azure 门户中查看和管理

  1. 在 Azure 门户中,选择“监视” > “警报”。 在窗口的左上角选择“管理警报规则”。

    管理警报规则按钮的屏幕截图。

    此时将显示可用规则的列表。

  2. 筛选或搜索要修改的活动日志规则。

    警报规则管理边栏选项卡的屏幕截图。

    可以使用可用的筛选器(“订阅”、“资源组”、“资源”、“信号类型”或“状态”)来查找想要编辑的活动规则。

  3. 选择规则并双击以编辑规则选项。 进行所需的更改,然后选择“保存”。

Azure 资源管理器模板

若要使用 Azure 资源管理器模板创建活动日志警报规则,请创建 microsoft.insights/activityLogAlerts 类型的资源。 然后,填充所有相关属性。 下面是一个用于创建活动日志警报规则的模板:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "activityLogAlertName": {
      "type": "string",
      "metadata": {
        "description": "Unique name (within the Resource Group) for the Activity log alert."
      }
    },
    "activityLogAlertEnabled": {
      "type": "bool",
      "defaultValue": true,
      "metadata": {
        "description": "Indicates whether or not the alert is enabled."
      }
    },
    "actionGroupResourceId": {
      "type": "string",
      "metadata": {
        "description": "Resource Id for the Action group."
      }
    }
  },
  "resources": [   
    {
      "type": "Microsoft.Insights/activityLogAlerts",
      "apiVersion": "2017-04-01",
      "name": "[parameters('activityLogAlertName')]",      
      "location": "Global",
      "properties": {
        "enabled": "[parameters('activityLogAlertEnabled')]",
        "scopes": [
            "[subscription().id]"
        ],        
        "condition": {
          "allOf": [
            {
              "field": "category",
              "equals": "Administrative"
            },
            {
              "field": "operationName",
              "equals": "Microsoft.Resources/deployments/write"
            },
            {
              "field": "resourceType",
              "equals": "Microsoft.Resources/deployments"
            }
          ]
        },
        "actions": {
          "actionGroups":
          [
            {
              "actionGroupId": "[parameters('actionGroupResourceId')]"
            }
          ]
        }
      }
    }
  ]
}

例如,上面的示例 JSON 可以另存为 sampleActivityLogAlert.json,并且可以使用 Azure 门户中的 Azure 资源管理器进行部署。

备注

请注意,可以定义的最高级别的活动日志警报是订阅。 这意味着没有定义针对几个订阅的警报的选项,因此定义应该是针对每个订阅的警报。

以下字段是可以在 Azure 资源管理器模板中用于条件字段的选项:请注意,“资源运行状况”、“顾问”和“服务运行状况”有额外的属性字段,这是它们的特殊字段。

  1. resourceId:应该对其生成警报的活动日志事件中受影响资源的资源 ID。
  2. category:活动日志事件的类别。 例如:Administrative、ServiceHealth、ResourceHealth、Autoscale、Security、Recommendation、Policy。
  3. caller:执行活动日志事件操作的用户的电子邮件地址或 Azure Active Directory 标识符。
  4. level:应该对其生成警报的活动日志事件中的活动级别。 例如:Critical、Error、Warning、Informational、Verbose。
  5. operationName:活动日志事件中的操作名称。 例如:Microsoft.Resources/deployments/write
  6. resourceGroup:活动日志事件中受影响资源的资源组名称。
  7. resourceProvider:Azure 资源提供程序和类型解释。 有关资源提供程序到 Azure 服务的映射列表,请参阅 Azure 服务的资源提供程序
  8. status:描述活动事件中操作状态的字符串。 例如:Started、In Progress、Succeeded、Failed、Active、Resolved
  9. subStatus:通常为响应 REST 调用的 HTTP 状态码,但还可以包含其他用于描述子状态的字符串。 例如:正常(HTTP 状态代码:200)、已创建(HTTP 状态代码:201)、已接受(HTTP 状态代码:202)、没有任何内容(HTTP 状态代码:204)、错误的请求(HTTP 状态代码:400)、找不到(HTTP 状态代码:404)、冲突(HTTP 状态代码:409)、内部服务器错误(HTTP 状态代码:500)、服务不可用(HTTP 状态代码:503)、网关超时(HTTP 状态代码: 504)。
  10. resourceType:受事件影响的资源的类型。 例如:Microsoft.Resources/deployments

例如:

"condition": {
          "allOf": [
            {
              "field": "category",
              "equals": "Administrative"
            },
            {
              "field": "resourceType",
              "equals": "Microsoft.Resources/deployments"
            }
          ]
        }

此处可以找到有关活动日志字段的更多详细信息。

备注

新的活动日志警报规则可能需要 5 分钟才能变为活动状态。

REST API

Azure Monitor 活动日志警报 API 是一个 REST API。 它与 Azure 资源管理器 REST API 完全兼容。 可以使用资源管理器 cmdlet 或 Azure CLI 通过 PowerShell 来使用它。

PowerShell

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

使用 PowerShell 部署资源管理器模板

若要使用 PowerShell 部署前面的 Azure 资源管理器模板部分所示的示例资源管理器模板,请使用以下命令:

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile sampleActivityLogAlert.json -TemplateParameterFile sampleActivityLogAlert.parameters.json

其中,sampleActivityLogAlert.parameters.json 包含一些值,这些值是为在创建警报规则时所需的参数提供的。

使用活动日志 PowerShell cmdlet

活动日志警报具有专用的 PowerShell cmdlet 可用:

Azure CLI

set az monitor activity-log alert 下的专用 Azure CLI 命令可用于管理活动日志警报规则。

若要创建新的活动日志警报规则,请下面的顺序使用以下命令:

  1. az monitor activity-log alert create:创建新的活动日志警报规则资源。
  2. az monitor activity-log alert scope:为已创建的活动日志警报规则添加范围。
  3. az monitor activity-log alert action-group:将操作组添加到活动日志警报规则。

若要检索一个活动日志警报规则资源,请使用 Azure CLI 命令 az monitor activity-log alert show。 若要查看某个资源组中的所有活动日志警报规则资源,请使用 az monitor activity-log alert list。 可以使用 Azure CLI 命令 az monitor activity-log alert delete 删除活动日志警报规则资源。

后续步骤