Azure Monitor 活动日志是 Azure 中的一种
平台日志
,它提供订阅级事件的见解。 活动日志包括何时修改了资源或何时启动了虚拟机等信息。 可以在 Azure 门户中查看活动日志,或在 PowerShell 和 Azure CLI 中检索条目。 本文介绍如何查看活动日志并将其发送到不同的目标。
对于额外功能,出于以下原因,请创建诊断设置以将活动日志发送到这些位置中的一个或多个:
发送到
Azure Monitor 日志
,以进行更复杂的查询和提醒以及延长保留期限(最长 2 年)。
发送到 Azure 事件中心以在 Azure 外部转发。
发送到 Azure 存储以实现更经济的长期存档。
有关创建诊断设置的详细信息,请参阅
创建诊断设置以将平台日志和指标发送到不同的目标
。
活动日志中的条目是系统生成的,无法更改或删除。
活动日志中的条目表示控制平面更改(例如虚拟机重启),任何不相关的条目都应写入
Azure 资源日志
活动日志事件在 Azure 中保留 90 天,然后被删除。 在此期间,日志项都是免费存储的,与卷无关。 要实现额外功能(例如更长的保留时间),请创建一个诊断设置并根据需要将条目路由到另一个位置。 请参阅前面部分中的条件。
查看活动日志
可以通过 Azure 门户中的大多数菜单访问活动日志。 你从中打开它的菜单确定了它的初始筛选器。 如果从“监视器”菜单打开它,则唯一的筛选器将基于订阅。 如果从某个资源的菜单打开它,则筛选器将设置为该资源。 始终可以更改筛选器来查看所有其他条目。 选择“添加筛选器”可向筛选器添加更多属性。
有关活动日志类别的说明,请参阅
Azure 活动日志事件架构
。
下载活动日志
选择“下载为 CSV”,在当前视图中下载事件。
查看更改历史记录
对于某些事件,可以查看“更改历史记录”,其中显示了该事件期间进行的更改。 从活动日志中选择要更深入地查看的事件。 选择“更改历史记录(预览)”选项卡以查看与该事件相关的任何更改。
如果有与事件关联的任何更改,你将看到可选择的更改列表。 选择某项更改会打开“更改历史记录(预览)”页。 此页显示对资源所做的更改。 在以下示例中,可以看到已更改的 VM 大小。 该页显示了 VM 在更改之前和更改之后的大小。 若要了解有关更改历史记录的详细信息,请参阅
获取资源更改
。
检索活动日志事件的其他方法
还可以使用以下方法来访问活动日志事件:
在 PowerShell 中使用
Get-AzLog
cmdlet 检索活动日志。 请参阅
Azure Monitor PowerShell 示例
。
在 CLI 中使用
az monitor activity-log
检索活动日志。 请参阅
Azure 监视器 CLI 示例
。
在 REST 客户端中使用
Azure Monitor REST API
检索活动日志。
发送到 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 URL 中指定的小时内收到的日志文件中的事件。 在当前小时内,事件在收到时会追加到 PT1H.json 文件中,而不管这些事件在何时生成。 URL m=00
中的分钟值始终为 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"}}}
旧式收集方法
Azure 活动日志解决方案用于将活动日志转发到 Azure Log Analytics。 此解决方案将于 2026 年 9 月 15 日停用,并将自动转换为诊断设置。
如果使用旧式收集方法收集活动日志,我们建议你将活动日志导出到 Log Analytics 工作区并使用数据源 - 删除 API 禁用旧式收集,如下所示:
使用数据源 - 按工作区 API 列出连接到工作区的所有数据源,并通过设置 kind eq 'AzureActivityLog'
来筛选出活动日志。
从 API 响应中复制要禁用的连接的名称。
使用数据源 - 删除 API 停止收集特定资源的活动日志。
如果日志配置文件已存在,首先必须删除现有日志配置文件,然后创建新的日志配置文件。
使用 Get-AzLogProfile
确定日志配置文件是否存在。 如果存在日志配置文件,请注意 Name
属性。
使用 Remove-AzLogProfile
通过 Name
属性的值删除日志配置文件。
# For example, if the log profile name is 'default'
Remove-AzLogProfile -Name "default"
使用 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
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
使用 az monitor log-profiles list
确定日志配置文件是否存在。
使用 az monitor log-profiles delete --name "<log profile name>
通过 name
属性的值删除日志配置文件。
使用 az monitor log-profiles create
创建日志配置文件:
az monitor log-profiles create --name "default" --location null --locations "global" "eastus" "westus" --categories "Delete" "Write" "Action" --enabled false --days 0 --service-bus-rule-id "/subscriptions/<YOUR SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<Event Hub NAME SPACE>/authorizationrules/RootManageSharedAccessKey"
locations
要为其收集活动日志事件的区域的空格分隔列表。 使用 az account list-locations --query [].name
查看订阅的所有区域的列表。
事件的保留天数,介于 1 到 365 之间。 值为零时,将无限期(永久)存储日志。 如果为零,则启用的参数应设置为 False。
enabled
True 或 False。 用于启用或禁用保留策略。 如果为 True,则 days
参数必须为大于 0 的值。
Categories
应收集的事件类别的空格分隔列表。 可能值包括:Write、Delete 和 Action。
状态
值为 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