你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Monitor 活动日志

Azure Monitor 活动日志是 Azure 中的一种平台日志,它提供订阅级事件的见解。 活动日志包括何时修改了资源或何时启动了虚拟机等信息。 可以在 Azure 门户中查看活动日志,或在 PowerShell 和 Azure CLI 中检索条目。 本文介绍如何查看活动日志并将其发送到不同的目标。

对于额外功能,出于以下原因,请创建诊断设置以将活动日志发送到这些位置中的一个或多个:

  • 发送到 Azure Monitor 日志,以进行更复杂的查询和提醒以及延长保留期限(最长 2 年)。
  • 发送到 Azure 事件中心以在 Azure 外部转发。
  • 发送到 Azure 存储以实现更经济的长期存档。

有关创建诊断设置的详细信息,请参阅创建诊断设置以将平台日志和指标发送到不同的目标

注意

活动日志中的条目是系统生成的,无法更改或删除。

保留期

活动日志事件在 Azure 中保留 90 天,然后被删除。 在此期间,日志项都是免费存储的,与卷无关。 要实现额外功能(例如更长的保留时间),请创建一个诊断设置并根据需要将条目路由到另一个位置。 请参阅前面部分中的条件。

查看活动日志

可以通过 Azure 门户中的大多数菜单访问活动日志。 你从中打开它的菜单确定了它的初始筛选器。 如果从“监视器”菜单打开它,则唯一的筛选器将基于订阅。 如果从某个资源的菜单打开它,则筛选器将设置为该资源。 始终可以更改筛选器来查看所有其他条目。 选择“添加筛选器”可向筛选器添加更多属性。

显示活动日志的屏幕截图。

有关活动日志类别的说明,请参阅 Azure 活动日志事件架构

下载活动日志

选择“下载为 CSV”,在当前视图中下载事件。

显示下载活动日志的屏幕截图。

查看更改历史记录

对于某些事件,可以查看“更改历史记录”,其中显示了该事件期间进行的更改。 从活动日志中选择要更深入地查看的事件。 选择“更改历史记录(预览)”选项卡以查看与该事件相关的任何更改。

显示事件的更改历史记录列表的屏幕截图。

如果有与事件关联的任何更改,你将看到可选择的更改列表。 选择某项更改会打开“更改历史记录(预览)”页。 此页显示对资源所做的更改。 在以下示例中,可以看到已更改的 VM 大小。 该页显示了 VM 在更改之前和更改之后的大小。 若要了解有关更改历史记录的详细信息,请参阅获取资源更改

显示差异的更改历史记录页面的屏幕截图。

检索活动日志事件的其他方法

还可以使用以下方法来访问活动日志事件:

发送到 Log Analytics 工作区

将活动日志发送到 Log Analytics 工作区以启用 Azure Monitor 日志功能,使用此功能可以:

  • 将活动日志数据与 Azure Monitor 收集的其他监视数据相关联。
  • 将来自多个 Azure 订阅和租户的活动日志合并到同一位置一起进行分析。
  • 使用日志查询来执行复杂分析,并深入了解活动日志条目。
  • 将日志警报与活动条目配合使用,以实现更复杂的警报逻辑。
  • 活动日志项的存储时间需要长于活动日志保留期。
  • Log Analytics 工作区中存储的活动日志数据不会产生数据引入或保留费用。
  • Log Analytics 中的默认保留期为 90 天

选择“导出活动日志”以将活动日志发送到 Log Analytics 工作区。

显示导出活动日志的屏幕截图。

可以将任一订阅中的活动日志发送到最多五个工作区。

Log Analytics 工作区中的活动日志数据存储在名为 AzureActivity 的表中,可以在 Log Analytics 中使用日志查询来检索该表。 此表的结构因日志条目类别而异。 有关表属性的说明,请参阅 Azure Monitor 数据参考

例如,若要查看每个类别的活动日志记录计数,请使用以下查询:

AzureActivity
| summarize count() by CategoryValue

若要检索管理类别中的所有记录,请使用以下查询:

AzureActivity
| where CategoryValue == "Administrative"

发送到 Azure 事件中心

将活动日志发送到 Azure 事件中心可将条目发送到 Azure 外部,例如,发送到第三方 SIEM 或其他日志分析解决方案。 来自事件中心的活动日志事件以 JSON 格式使用,其中的 records 元素包含每个有效负载中的记录。 架构取决于类别,Azure 活动日志事件架构中对此做了介绍。

下面是来自事件中心的活动日志输出数据示例:

{
    "records": [
        {
            "time": "2019-01-21T22:14:26.9792776Z",
            "resourceId": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
            "operationName": "microsoft.support/supporttickets/write",
            "category": "Write",
            "resultType": "Success",
            "resultSignature": "Succeeded.Created",
            "durationMs": 2826,
            "callerIpAddress": "111.111.111.11",
            "correlationId": "c776f9f4-36e5-4e0e-809b-c9b3c3fb62a8",
            "identity": {
                "authorization": {
                    "scope": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
                    "action": "microsoft.support/supporttickets/write",
                    "evidence": {
                        "role": "Subscription Admin"
                    }
                },
                "claims": {
                    "aud": "https://management.core.windows.net/",
                    "iss": "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",
                    "iat": "1421876371",
                    "nbf": "1421876371",
                    "exp": "1421880271",
                    "ver": "1.0",
                    "http://schemas.microsoft.com/identity/claims/tenantid": "00000000-0000-0000-0000-000000000000",
                    "http://schemas.microsoft.com/claims/authnmethodsreferences": "pwd",
                    "http://schemas.microsoft.com/identity/claims/objectidentifier": "2468adf0-8211-44e3-95xq-85137af64708",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "admin@contoso.com",
                    "puid": "20030000801A118C",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "9vckmEGF7zDKk1YzIY8k0t1_EAPaXoeHyPRn6f413zM",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "John",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "Smith",
                    "name": "John Smith",
                    "groups": "cacfe77c-e058-4712-83qw-f9b08849fd60,7f71d11d-4c41-4b23-99d2-d32ce7aa621c,31522864-0578-4ea0-9gdc-e66cc564d18c",
                    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": " admin@contoso.com",
                    "appid": "c44b4083-3bq0-49c1-b47d-974e53cbdf3c",
                    "appidacr": "2",
                    "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
                    "http://schemas.microsoft.com/claims/authnclassreference": "1"
                }
            },
            "level": "Information",
            "location": "global",
            "properties": {
                "statusCode": "Created",
                "serviceRequestId": "50d5cddb-8ca0-47ad-9b80-6cde2207f97c"
            }
        }
    ]
}

发送到 Azure 存储

如果要将日志数据保留 90 天以上以进行审核、静态分析或备份,请将活动日志发送到 Azure 存储帐户。 如果只需将事件保留 90 天或更短时间,则无需设置为存档到存储帐户。 活动日志事件将在 Azure 平台中保留 90 天。

将活动日志发送到 Azure 时,一旦发生事件,就会在存储帐户中创建一个存储容器。 容器中的 blob 使用以下命名约定:

insights-activity-logs/resourceId=/SUBSCRIPTIONS/{subscription ID}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

例如,特定 Blob 的名称可能类似于:

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/y=2020/m=06/d=08/h=18/m=00/PT1H.json

每个 PT1H.json Blob 都包含一个 JSON Blob,其中的事件为在 Blob URL 中指定的小时(例如 h=12)内发生的。 在当前的小时内发生的事件将附加到 PT1H.json 文件。 分钟值始终为 00 (m=00),因为资源日志事件按小时细分成单个 Blob。

每个事件使用以下格式存储在 PT1H.json 文件中。 此格式使用通用顶级架构,但其他方面对于每个类别都是唯一的,如活动日志架构中所述。

{ "time": "2020-06-12T13:07:46.766Z", "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/MY-RESOURCE-GROUP/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/MV-VM-01", "correlationId": "0f0cb6b4-804b-4129-b893-70aeeb63997e", "operationName": "Microsoft.Resourcehealth/healthevent/Updated/action", "level": "Information", "resultType": "Updated", "category": "ResourceHealth", "properties": {"eventCategory":"ResourceHealth","eventProperties":{"title":"This virtual machine is starting as requested by an authorized user or process. It will be online shortly.","details":"VirtualMachineStartInitiatedByControlPlane","currentHealthStatus":"Unknown","previousHealthStatus":"Unknown","type":"Downtime","cause":"UserInitiated"}}}

旧式收集方法

如果使用旧式收集方法收集活动日志,我们建议你将活动日志导出到 Log Analytics 工作区并使用数据源 - 删除 API 禁用旧式收集,如下所示:

  1. 使用数据源 - 按工作区 API 列出连接到工作区的所有数据源,并通过设置 filter=kind='AzureActivityLog' 来筛选出活动日志。

    显示“数据源 - 按工作区 API 列出”的配置的屏幕截图。

  2. 从 API 响应中复制要禁用的连接的名称。

    显示需要从“数据源 - 按工作区 API 列出”的输出中复制的连接信息的屏幕截图。

  3. 使用数据源 - 删除 API 停止收集特定资源的活动日志。

    “数据源 - 删除 API”的配置的屏幕截图。

管理旧版日志配置文件

日志配置文件是用于将活动日志发送到存储或事件中心的旧方法。 如果使用此方法,应考虑转换为诊断设置,以便提供更好的功能以及与资源日志的一致性。

如果日志配置文件已存在,首先必须删除现有日志配置文件,然后创建新的日志配置文件。

  1. 使用 Get-AzLogProfile 确定日志配置文件是否存在。 如果存在日志配置文件,请注意 Name 属性。

  2. 使用 Remove-AzLogProfile 通过 Name 属性的值删除日志配置文件。

    # For example, if the log profile name is 'default'
    Remove-AzLogProfile -Name "default"
    
  3. 使用 Add-AzLogProfile 创建新的日志配置文件:

    Add-AzLogProfile -Name my_log_profile -StorageAccountId /subscriptions/s1/resourceGroups/myrg1/providers/Microsoft.Storage/storageAccounts/my_storage -serviceBusRuleId /subscriptions/s1/resourceGroups/Default-ServiceBus-EastUS/providers/Microsoft.ServiceBus/namespaces/mytestSB/authorizationrules/RootManageSharedAccessKey -Location global,westus,eastus -RetentionInDays 90 -Category Write,Delete,Action
    
    属性 必须 说明
    “属性” 日志配置文件的名称。
    StorageAccountId 应该将活动日志保存到其中的存储帐户的资源 ID。
    serviceBusRuleId 服务总线命名空间(需在其中创建事件中心)的服务总线规则 ID。 此字符串的格式为 {service bus resource ID}/authorizationrules/{key name}
    位置 要为其收集活动日志事件的逗号分隔区域的列表。
    RetentionInDays 事件应在存储帐户中保留的天数,从 1 到 365。 值为零时,将无限期存储日志。
    Category 要收集的事件类别的逗号分隔列表。 可能值包括:Write、Delete 和 Action。

示例脚本

此示例 PowerShell 脚本创建一个日志配置文件,用于将活动日志写入到存储帐户和事件中心。

# Settings needed for the new log profile
$logProfileName = "default"
$locations = (Get-AzLocation).Location
$locations += "global"
$subscriptionId = "<your Azure subscription Id>"
$resourceGroupName = "<resource group name your Event Hub belongs to>"
$eventHubNamespace = "<Event Hub namespace>"

# Build the service bus rule Id from the settings above
$serviceBusRuleId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.EventHub/namespaces/$eventHubNamespace/authorizationrules/RootManageSharedAccessKey"

# Build the Storage Account Id from the settings above
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"

Add-AzLogProfile -Name $logProfileName -Location $locations -StorageAccountId  $storageAccountId -ServiceBusRuleId $serviceBusRuleId

数据结构更改

导出活动日志体验,与用于发送活动日志的旧版方法发送的数据是相同的,但 AzureActivity 表的结构存在一些更改。

更新后的架构中已经弃用了下表中的列。 这些列仍存在于 AzureActivity 中,但不会包含任何数据。 这些列的替换项并不是新的,而是包含了与已弃用列相同的数据。 它们采用了一种不同的格式,所以你可能需要对使用它们的日志查询进行修改。

活动日志 JSON Log Analytics 列名称
(旧版已启用)
新的 Log Analytics 列名称 备注
category 类别 CategoryValue
状态

值为 success、start、accept、failure
ActivityStatus

值与 JSON 相同
ActivityStatusValue

值更改为 succeeded、started、accepted、failed
有效值按如下所示更改。
subStatus ActivitySubstatus ActivitySubstatusValue
operationName OperationName OperationNameValue REST API 将本地化操作名称值。 Log Analytics UI 始终显示英语。
resourceProviderName ResourceProvider ResourceProviderValue

重要

在某些情况下,这些列中的值可能全大写。 如果查询包含这些列,请使用 =~ 运算符执行不区分大小写的比较。

以下列已添加到更新后架构的 AzureActivity 中:

  • Authorization_d
  • Claims_d
  • Properties_d

活动日志见解

利用活动日志见解,可以查看有关订阅中的资源和资源组的更改的信息。 仪表板还会显示哪些用户或服务在订阅中执行了活动以及活动状态的相关数据。 本文介绍如何在 Azure 门户中查看活动日志见解。

在使用活动日志见解之前,必须启用将日志发送到 Log Analytics 工作区的功能

活动日志见解的工作原理

发送到 Log Analytics 工作区的活动日志存储在名为 AzureActivity 的表中。

活动日志见解是一个特选的 Log Analytics 工作簿,其中包含用于可视化 AzureActivity 表中的数据的仪表板。 例如,数据可能包括哪些管理员删除、更新或创建了资源,以及活动是失败还是成功。

显示活动日志见解仪表板的屏幕截图。

查看活动日志见解:资源组或订阅级别

若要在资源组或订阅级别查看活动日志见解,请执行以下操作:

  1. 在 Azure 门户中,选择“监视”>“工作簿”。

  2. 在“见解”部分选择“活动日志见解”。

    显示如何在缩放级别找到并打开 Activity Logs 见解工作簿的屏幕截图。

  3. 在“活动日志见解”页顶部,选择:

    1. “订阅”下拉列表中的一个或多个订阅。
    2. “CurrentResource”下拉列表中的资源和资源组。
    3. “TimeRange”下拉列表中的时间范围(用于查看相应的数据)。

查看任何 Azure 资源的活动日志见解

注意

目前,此工作簿不支持 Application Insights 资源。

若要查看资源级别的活动日志见解,请执行以下操作:

  1. 在 Azure 门户中,转到你的资源并选择“工作簿”。

  2. 在“活动日志见解”部分选择“活动日志见解”。

    显示如何在资源级别找到并打开 Activity Logs 见解工作簿的屏幕截图。

  3. 在“活动日志见解”页的顶部,从“时间范围”下拉列表中选择要查看的数据的时间范围:

    • “Azure 活动日志条目”显示每个活动日志类别中的活动日志记录的计数。

      按类别值显示 Azure 活动日志的屏幕截图。

    • “按状态分类的活动日志”显示每个状态中的活动日志记录的计数。

      按状态显示 Azure 活动日志的屏幕截图。

    • 在订阅和资源组级别,“按资源分类的活动日志”和“按资源提供程序分类的活动日志”显示每个资源和资源提供程序的活动日志记录的计数。

      按资源显示 Azure 活动日志的屏幕截图。

后续步骤