傳送 Azure 監視器活動記錄數據
Azure 監視器活動記錄是平台記錄,可提供訂用帳戶層級事件的深入解析。 此活動記錄包含像是何時修改資源或啟動虛擬機器的資訊。 您可以在 Azure 入口網站中檢視活動記錄,或使用 PowerShell 和 Azure CLI 來擷取項目。 本文提供有關如何檢視活動記錄,並將其傳送至不同目的地的資訊。
如需更多功能,請建立診斷設定,以將活動記錄檔傳送至下列其中一或多個位置,原因如下:
- 傳送至 Azure 監視器 記錄,以取得更複雜的查詢和警示,並延長 最多 12 年的保留期。
- 傳送至 Azure 事件中樞 以在 Azure 外部轉寄。
- 傳送給 Azure 儲存體,以取得更便宜、更長期的封存。
如需如何建立診斷設定的詳細資訊,請參閱 建立診斷設定,以將平台記錄和計量傳送至不同的目的地。
注意
傳送至 Log Analytics 工作區
將活動記錄傳送至 Log Analytics 工作區,以啟用 Azure 監視器記錄 功能,您可以在其中:
- 將活動記錄資料與 Azure 監視器所收集的其他監視資料相互關聯。
- 將多個 Azure 訂用帳戶和租用戶的記錄項目合併到一起分析的一個位置。
- 使用記錄查詢來執行複雜的分析,並深入了解活動記錄項目。
- 使用記錄搜尋警示搭配活動專案,以取得更複雜的警示邏輯。
- 儲存活動記錄項目的時間超過活動記錄保留期間。
- 針對儲存在 Log Analytics 工作區中的活動記錄資料,不會收取任何資料擷取或保留費用。
- Log Analytics 中的預設保留期限為 90 天
選取 [ 導出活動記錄 ],將活動記錄傳送至Log Analytics工作區。
您可以將活動記錄從任何單一訂用帳戶傳送到最多五個工作區。
Log Analytics 工作區中的活動記錄數據會儲存在名為 AzureActivity
的數據表中,您可以在 Log Analytics 中使用記錄查詢來擷取。 此數據表的結構會根據 記錄項目的類別而有所不同。 如需數據表屬性的描述,請參閱 Azure 監視器數據參考。
例如,若要檢視每個類別的活動記錄計數,請使用下列查詢:
AzureActivity
| summarize count() by CategoryValue
若要擷取系統管理類別中的所有記錄,請使用下列查詢:
AzureActivity
| where CategoryValue == "Administrative"
重要
在某些情況下,AzureActivity 字段中的值可能有不同的大小寫與其他對等值。 在查詢 AzureActivity 中的數據以使用不區分大小寫的運算符進行字串比較時,請小心,或使用純量函式強制字段在任何比較之前將字段強制為統一大小寫。 例如,在 欄位上使用 tolower() 函式,強制它在執行字串比較時一律為小寫或 =~ 運算符 。
傳送至 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"}}}
擷取活動記錄事件的其他方法
您也可以使用下列方法來存取活動記錄事件:
- 從 PowerShell 使用 Get-AzLog Cmdlet 來擷取活動記錄。 請參閱 Azure 監視器 PowerShell 範例。
- 從 CLI 使用 az monitor activity-log 來擷取活動記錄。 請參閱 Azure 監視器 CLI 範例。
- 從 REST 用戶端使用 Azure 監視器 REST API 來擷取活動記錄。
舊版集合方法
注意
- 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
屬性 必要 描述 姓名 Yes 記錄檔配置檔的名稱。 儲存體 AccountId No 應儲存活動記錄之記憶體帳戶的資源標識碼。 serviceBusRuleId No 服務匯流排 您想要在其中建立事件中樞之 服務匯流排 命名空間的規則標識碼。 此字串格式 {service bus resource ID}/authorizationrules/{key name}
為 。Location Yes 您想要收集活動記錄事件的區域逗號分隔清單。 RetentionInDays Yes 應該在記憶體帳戶中保留事件的天數,從 1 到 365。 零的值會無限期地儲存記錄。 類別 No 要收集的事件類別目錄逗號分隔清單。 可能的值為 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 | |
status 值為 success、start、accept、failure |
ActivityStatus 與 JSON 相同的值 |
ActivityStatusValue 值變更為成功、已啟動、接受、失敗 |
有效值會變更,如下所示。 |
subStatus | ActivitySubstatus | ActivitySubstatusValue | |
operationName | OperationName | OperationNameValue | REST API 會將作業名稱值當地語系化。 Log Analytics UI 一律會顯示英文。 |
resourceProviderName | ResourceProvider | ResourceProviderValue |
重要
在某些情況下,這些數據行中的值可能全部是大寫。 如果您有包含這些數據行的查詢,請使用 =~ 運算符 來執行不區分大小寫的比較。
下列資料列已新增至 AzureActivity
更新的架構中:
- Authorization_d
- Claims_d
- Properties_d
下一步
深入了解: