Azure 監視器 透過活動日誌功能管理你的 Azure 資源紀錄。 活動日誌記錄的操作包括建立虛擬機器、變更金鑰保險庫存取政策或 Resource Manager 部署錯誤。 這些管理操作也稱為 控制平面 操作。 使用活動日誌來檢視或稽核這些資訊,或建立警示,讓事件發生時能主動收到通知。
與活動日誌不同,Azure 資源日誌擷取資料平面在資源內執行的操作。 例如,這些操作包括從金鑰保險庫取得秘密或向資料庫提出請求。 資源日誌預設不會被收集,需要用 診斷設定來設定。
活動日誌條目
Azure 監視器 預設會收集活動日誌條目,無需設定。 系統會產生這些條目,你無法更改或刪除它們。 條目通常由變更(建立、更新及刪除操作)或啟動的動作產生。 活動日誌通常不會捕捉讀取操作。
活動日誌條目通常會在 事件發生後3至20分鐘內提供分析與警示。 關於活動日誌類別的說明,請參見 Azure活動日誌事件結構。
保留期限
Azure 會保留活動日誌事件 90 天 ,然後刪除。 在這段期間內,不論數量多寡,系統都不會向您收取項目費用。 若想增加功能,例如更長的保留時間,可以建立診斷設定,並根據需求 在其他地點收集條目 。 延長保留期限最常見的原因之一是為了保留 資源創建者的資訊,這些資訊僅在活動日誌中提供。
檢視和擷取活動記錄
查看訂閱、資源群組或個別資源的活動日誌事件。 可以使用Azure入口網站,或透過程式化查詢 Activity Log REST API。
Azure 入口網站在大多數服務選單中提供 [活動記錄] 刀鋒視窗。 這些區域也都支援使用 REST 或特定的 Azure CLI 和 Azure PowerShell 指令進行程式化存取。
請指定要取回事件的時間區間。 要使用 REST API 取得事件,必須包含 $filter 該參數以及至少 eventTimestamp 一個起始值。 預設情況下,活動日誌會保留事件 90 天。 確保你的時間範圍開始和結束都在那90天的期限內。
活動日誌存取情境
以下章節呈現常見情境,展示透過 Azure 入口網站存取與檢索活動日誌事件的不同方式,無論是使用 Azure CLI 與 Azure PowerShell 程式化,或使用 REST 呼叫:
Azure 入口網站範例提供了關於該檢視中應該預期的事件類型的額外背景。
Azure CLI範例突顯了透過 az monitor activity-log list 指令所提供的具體指令。
Azure PowerShell 範例會突出透過 Get-AzActivityLog cmdlet 提供的具體 cmdlet。
REST API 範例展示了如何透過活動$filter 使用所需參數來取得事件。
列出資源群組的活動記錄事件範例也示範如何使用 Prefer 標頭,明確為用戶端設定逾時,使其符合活動記錄 REST API 的 75 秒最長逾時期間。
支援的模式$filter |
詳細資料 |
| 預設訂閱的時間範圍 |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' |
| 資源群組 |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceGroupName eq '{resourceGroupName}' |
| 特定資源 |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceUri eq '{resourceURI}' |
| 資源提供者 |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceProvider eq '{resourceProviderName}' |
| 相互關聯識別碼 |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and correlationId eq '{correlationID}' |
列出訂用帳戶的活動記錄事件
訂閱層級事件會直接捕捉資源提供者所建立的事件,並且是列出活動日誌事件的預設範圍。 租用戶層級和管理群組層級事件,只會擷取這些階層中的 Azure Resource Manager 事件。 這些較高層級的範圍不包括由資源提供者直接生成且不屬於 Azure Resource Manager 操作的事件。
以下範例說明如何在特定時間範圍內取得訂閱的活動日誌事件。
你開啟 活動日誌 的選單決定了它的初始篩選條件。 如果你從 監視器 選單打開,預設唯一選擇的篩選條件是訂閱。 這跟從訂閱中選擇訂閱活動日誌來開啟是一樣的。
使用 az monitor activity-log list Azure CLI指令,取得指定時間範圍內訂閱的活動日誌事件。 預設情況下,此指令會取得目前在 Azure CLI 情境中設定的訂閱事件。 若要明確指定訂閱,請使用以下範例所示的 --subscription 參數。
明確的時間範圍:
Azure CLI 透過使用 --start-time 和 --end-time,支援與 REST 相同的明確時間範圍:
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-14T23:59:59Z"
az monitor activity-log list \
--subscription "$subscriptionId" \
--start-time "$startTime" \
--end-time "$endTime"
相對時間範圍:
Azure CLI也支援使用--offset來計算相對時間範圍。 例如,--offset 14d 會傳回過去 14 天的事件:
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
offset="14d"
az monitor activity-log list \
--subscription "$subscriptionId" \
--offset "$offset"
備註
Azure CLI指令使用目前 CLI 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在命令語法中指定。
Azure PowerShell 提供 Get-AzActivityLog 指令,用以取得訂閱在指定時間範圍內的活動日誌事件。
明確的時間範圍:
Azure PowerShell 支援使用 StartTime 和 EndTime,類似 REST 來指定精確的時間範圍:
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$startTime = [datetime]"2026-04-01T00:00:00Z"
$endTime = [datetime]"2026-04-14T23:59:59Z"
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
StartTime = $startTime
EndTime = $endTime
}
Get-AzActivityLog @getAzActivityLogParams
相對時間範圍:
Azure PowerShell 也支援對Get-DateStartTime和EndTime使用運算式,來查詢相對時間範圍。 以下範例回傳過去 14 天的事件,結束時間為指令執行時:
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$lookbackDays = 14
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
}
Get-AzActivityLog @getAzActivityLogParams
備註
Azure PowerShell 指令匣會使用目前 Az 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在指令本語法中指定。
若要列出活動日誌事件,請使用此 GET 請求的 活動日誌 REST API。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'
為資源群組列出活動日誌事件
將 resourceGroupName 添加到 $filter 中,以便在 Azure 監視器 中將活動日誌結果限制到特定的資源群組。
你開啟 活動日誌 的選單決定了它的初始篩選條件。 如果您從資源的功能表中開啟它,篩選條件會設定為該資源。 選取 [新增篩選],以將更多屬性新增至篩選。 以下是您可以在入口網站篩選的其他屬性:
-
Resource - 屬於你Azure解決方案中的項目,例如資料庫或虛擬機器。
-
資源類型 – 資源所屬的類別,例如虛擬機、網頁應用程式或資料庫。
-
Operation - 影響Azure Resource Manager資源的動作或指令,如建立、刪除和寫入。
- 事件啟動者 – 根據事件啟動者的身份來過濾事件。
-
事件類別 – 篩選特定操作的事件類型。
備註
對於這項作業,REST 標頭 Prefer: wait=75 在 Azure CLI 指令中沒有直接對應項。 此指令直接發出查詢並回傳匹配的活動日誌記錄。
使用 az monitor activity-log list 指令來取得針對資源群組的活動日誌事件。 特定的 Azure CLI 指令可以降低等效 REST API 呼叫的複雜度。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
resourceGroupName="myResourceGroup"
offset="30d"
az monitor activity-log list \
--subscription "$subscriptionId" \
--resource-group "$resourceGroupName" \
--offset "$offset"
備註
Azure CLI指令使用目前 CLI 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在命令語法中指定。
備註
REST 標頭 Prefer: wait=75 在 Azure PowerShell Cmdlet 中沒有可直接對應到此作業的項目。 此指令直接發出查詢並回傳匹配的活動日誌記錄。
Azure PowerShell 提供 Get-AzActivityLog 指令,用以檢索相對時間範圍內資源群組的活動日誌事件。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$resourceGroupName = "myResourceGroup"
$lookbackDays = 30
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
ResourceGroupName = $resourceGroupName
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
}
Get-AzActivityLog @getAzActivityLogParams
備註
Azure PowerShell 指令匣會使用目前 Az 上下文中的Azure Resource Manager端點,因此 management.azure.com 不需要在指令本語法中指定。
若要使用 Azure Resource Manager REST API 列出作用範圍為資源群組的活動記錄事件,請使用 GET 要求,並搭配包含時間範圍與 $filter 屬性的 resourceGroupName。 可選擇性地加入 Prefer 標頭,指定請求的特定逾時(最大 75 等待時間以秒為單位)。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceGroupName eq '{resourceGroupName}'
Prefer: wait=75
回傳特定活動日誌屬性
使用參數只回傳指定的屬性,從而減少回應的有效載荷大小。 欲了解更多資訊,請參閱活動日誌結構性質描述。
Azure 入口網站沒有提供直接限制活動日誌事件回傳屬性的方法。 為了減少所瀏覽的資料量,請使用活動日誌刀片中的編輯欄位選項,選擇入口網站檢視中顯示哪些欄位。
使用 az monitor activity-log list 指令 --select 搭配參數,指定從活動日誌事件中回傳哪些屬性。
使用 --max-events 參數以az monitor activity-log list 限制回傳的記錄數量。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
offset="30d"
maxEvents=100
selectFields=(
eventName
operationName
status
eventTimestamp
correlationId
submissionTimestamp
level
)
az monitor activity-log list \
--subscription "$subscriptionId" \
--offset "$offset" \
--max-events "$maxEvents" \
--select "${selectFields[@]}"
透過將 Get-AzActivityLog 的結果配管成 Select-Object,並指定你想要回傳的屬性,來限制 Azure PowerShell 活動日誌事件回傳的屬性。 這不會減少 API 回應大小,因為它 Select-Object 只過濾 PowerShell 顯示的輸出屬性。
使用 -MaxRecord 參數以Get-AzActivityLog 限制回傳的記錄數量。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$lookbackDays = 30
$maxRecord = 100
$selectProperties = @(
"EventName"
"OperationName"
"Status"
"EventTimestamp"
"CorrelationId"
"SubmissionTimestamp"
"Level"
)
Set-AzContext -Subscription $subscriptionId
$activityLogParams = @{
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
MaxRecord = $maxRecord
}
Get-AzActivityLog @activityLogParams |
Select-Object -Property $selectProperties
若要使用 Azure Resource Manager REST API 列出僅回傳特定屬性的活動日誌事件,請在 $select 請求中加入 GET 查詢參數,並附上逗號分隔的物件清單。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'&$select=eventName,operationName,status,eventTimestamp,correlationId,submissionTimestamp,level
列出租用戶層級活動記錄事件
租戶層級活動日誌事件通常條目有限,但可能包含管理群組或訂閱建立等重要事件。 這些事件與訂閱層級的活動日誌事件是分開的,但可能包含重複的資源管理事件。
在此範圍內查詢使用的 REST API 與訂閱層級的活動日誌事件 API 不同。 Azure CLI 和 Azure PowerShell 並不提供專用指令。
請移至 Azure 入口網站中的Monitor>活動記錄。 更改 活動 下拉選單,並選擇 目錄活動。
沒有可用於租用戶層級活動記錄事件的專用 Azure CLI 命令。 以下範例會使用 az rest 直接呼叫 REST API:
apiVersion="2015-04-01"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-30T23:59:59Z"
providers="Microsoft.Insights/eventtypes/management/values"
resourceId="/providers/$providers"
filter="eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
az rest \
--method get \
--uri "$resourceId?api-version=$apiVersion&\$filter=$filter"
租用戶層級活動記錄事件沒有專用的 PowerShell Cmdlet。 以下範例直接呼叫 REST API,使用:Invoke-AzRestMethod
$apiVersion = "2015-04-01"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-30T23:59:59Z"
$providers = "Microsoft.Insights/eventtypes/management/values"
$resourceId = "/providers/$providers"
$filter = "eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
$invokeAzRestMethodParams = @{
Path = "$resourceId?api-version=$apiVersion&`$filter=$filter"
Method = "GET"
}
Invoke-AzRestMethod @invokeAzRestMethodParams
若要列出租戶層級的活動日誌事件,請使用此 GET 請求。 請注意,此請求針對租戶層級活動日誌端點,與訂閱層級活動日誌 API 不同。
GET https://management.azure.com/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{starTime}' and eventTimestamp le '{endTime}'
列出管理群組層級活動記錄事件
管理群組層級的活動記錄事件會記錄特定管理群組範圍內的事件,例如原則指派及管理群組成員變更。
備註
- 以下範例使用
2017-03-01-preview API 版本,這是管理群組層級活動日誌查詢所必需的。
若要在Azure入口網站查看管理群組層級活動日誌事件,請前往 Management groups> 選擇管理群組 >Activity log。
若要列出管理群組層級的活動日誌事件,請使用 az rest Azure CLI 指令。 此指令直接呼叫 Azure Resource Manager REST API,以取得指定管理群組範圍內的活動日誌事件。
apiVersion="2017-03-01-preview"
managementGroupId="myManagementGroup"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-30T23:59:59Z"
providers="Microsoft.Insights/eventtypes/management/values"
resourceId="/providers/Microsoft.Management/managementGroups/$managementGroupId/providers/$providers"
filter="eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
az rest \
--method get \
--url "$resourceId?api-version=$apiVersion&\$filter=$filter"
管理群組層級活動記錄事件沒有專用的 PowerShell Cmdlet。 以下範例直接呼叫 REST API,使用 Invoke-AzRestMethod。
$apiVersion = "2017-03-01-preview"
$managementGroupId = "myManagementGroup"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-30T23:59:59Z"
$providers = "Microsoft.Insights/eventtypes/management/values"
$resourceId = "/providers/Microsoft.Management/managementGroups/$managementGroupId/providers/$providers"
$filter = "eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
$invokeAzRestMethodParams = @{
Method = "GET"
Path = "$resourceId?api-version=$apiVersion&`$filter=$filter"
}
Invoke-AzRestMethod @invokeAzRestMethodParams
若要列出管理群組層級的活動日誌事件,請使用這個針對 Azure Resource Manager REST API 的 GET 請求。 將 替換 {managementGroupId} 成你想查詢的管理群組的 ID,並在查詢參數中 $filter 指定時間範圍。
GET https://management.azure.com/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'
下表說明前述範例中使用的參數。
| Variable |
範例值 |
Purpose |
| 主持人 |
management.azure.com |
隱含 ARM 端點 |
| subscriptionId |
aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
使用者輸入 |
| resourceGroupName |
myResourceGroup |
使用者輸入 |
| managementGroupId (管理群組ID) |
myManagementGroup |
使用者輸入 |
| apiVersion |
• 2015-04-01 • 2017-03-01-預覽(管理組層級) |
參考資料 |
檢視變更歷程記錄
您可以檢視某些事件的 [變更記錄],以顯示該事件時間發生的變更。 從活動日誌中選擇一個你想更深入檢視的事件。 選取 變更歷程記錄 索引標籤,以檢視在操作時間的前後各 30 分鐘內,資源上的任何變更。
如果活動有任何變更,入口網站會顯示可選的變更清單。 選取變更會開啟 [變更歷程記錄] 頁面。 此頁面會顯示資源的變更。
以下範例顯示虛擬機大小改變。 頁面會顯示變更之前和變更之後的 VM 大小。 若要深入瞭解變更歷程記錄,請參閱 取得資源變更。
活動記錄見解
活動日誌洞察是一本 Azure 監視器 工作簿,提供一組儀表板,用以監控訂閱中資源與資源群組的變更。 儀錶板也會呈現訂用帳戶中執行活動的使用者或服務,以及活動狀態的相關數據。
要啟用活動日誌洞察,請依照 Export 活動日誌 說明,匯出活動日誌到Log Analytics工作區。 此過程會將事件傳送到 AzureActivity 資料表,活動日誌洞察會使用該資料表。
您可以在訂用帳戶或資源層級開啟活動記錄深入解析。 針對訂用帳戶,請從 Monitor 功能表的 Workbooks 區段中選取 Activity Logs Insights。
針對個別資源,從資源功能表的 [活頁簿] 區段中選取 [活動記錄深入解析]。
匯出活動記錄
建立診斷設定,將活動日誌條目傳送到其他目的地,以增加保留時間和功能。
在Azure 入口網站中,選擇 活動日誌,然後在 Azure 監視器 選單中選擇 匯出活動日誌。 欲了解更多資訊及建立診斷設定的方法,請參閱 Azure 監視器 中的診斷設定。 請務必停用 活動記錄的任何舊版設定。
以下章節將詳細說明每個可配置的資源日誌目的地。
備註
匯出活動記錄的舊版方法是記錄設定檔。 請參閱 舊版集合方法。
將活動日誌傳送到 Log Analytics workspace,以達成以下功能:
活動日誌沒有資料擷取費用。 活動日誌的保留費用僅適用於超過預設保留期90天的期間。 您可以 將保留期限延長 至最長 12 年。
Log Analytics工作區中的活動日誌資料會儲存在一個名為 AzureActivity 的表格中。 此資料表的結構會根據記錄項目類別而不同。
例如,若要檢視每個類別的活動記錄計數,請使用下列查詢:
AzureActivity
| summarize count() by CategoryValue
若要擷取系統管理類別中的所有記錄,請使用下列查詢:
AzureActivity
| where CategoryValue == "Administrative"
這很重要
在某些案例中,AzureActivity 欄位中的值,其大小寫可能與其他對等值不同。 查詢 中的 AzureActivity資料時,使用不區分大小寫的運算子進行字串比較,或使用純量函數在進行任何比較之前強制欄位採用統一大小寫。 例如,在欄位上使用 tolower() 函式,強制它在執行字串比較時一律為小寫或 =~ 運算子。
將活動日誌傳送到 Azure 事件中樞,以便將 Azure 以外的項目傳送到第三方 SIEM 或其他日誌分析解決方案。 來自事件中樞的活動記錄事件是使用 records 元素以 JSON 格式取用,而此元素會包含每個承載中的記錄。 該結構依類別而異,並於 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": "aaaa0000-bb11-2222-33cc-444444dddddd",
"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/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"iat": "1421876371",
"nbf": "1421876371",
"exp": "1421880271",
"ver": "1.0",
"http://schemas.microsoft.com/identity/claims/tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"http://schemas.microsoft.com/claims/authnmethodsreferences": "pwd",
"http://schemas.microsoft.com/identity/claims/objectidentifier": "aaaa0000-bb11-2222-33cc-444444dddddd",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "admin@contoso.com",
"puid": "1003BFFD8EC002D4",
"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": "bbbb1111-cc22-3333-44dd-555555eeeeee,aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb,cccc2222-dd33-4444-55ee-666666ffffff",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": " admin@contoso.com",
"appid": "00001111-aaaa-2222-bbbb-3333cccc4444",
"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": "bbbbbbbb-1111-2222-3333-cccccccccccc"
}
}
]
}
如果你想將日誌資料保存超過90天以便稽核、靜態分析或備份,請將活動日誌傳送到Azure儲存帳號。 如果你需要保留事件 90 天或更短,就不需要設定存檔到儲存帳號。
當您將活動記錄傳送至儲存體時,一旦發生事件,就會在儲存體帳戶中建立儲存體容器。 容器中的 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-activity-logs/resourceId=/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MY-RESOURCE-GROUP/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/MV-VM-01", "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "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 資源管理員在撰寫事件時包含階層屬性,但這不是必填欄位。 Azure Resource Manager 以外的資源提供者不會填入,因此他們的事件不會在層級結構中向上傳播。 因此,獲得重複事件比錯過事件好。
例如,如果您有 MG1,其中包含 MG2,而 MG2 包含 Subscription1,則 MG1 上的診斷設定會擷取 MG1、MG2,以及 Subscription1 上診斷設定所收集的許多事件。 在這種情況下,MG2 不需要診斷設定,因為它只會收集重複事件。
如果有重複事件,使用查詢來合併它們,利用所有字段的雜湊值來識別唯一紀錄。 以下 Kusto 查詢範例展示了在 Log Analytics 工作區收集的日誌範例:
AzureActivity
| extend Hash = hash(dynamic_to_json(pack_all()))
| summarize arg_max(TimeGenerated, *) by Hash
將活動日誌匯出成檔案
選擇 「下載為 CSV 」,以將活動日誌匯出為 Azure 入口網站的 CSV 檔案。
這很重要
匯出大量日誌條目可能需要很長時間。 若要改善效能,請減少匯出的時間範圍。 在 Azure 入口網站中,設定 Timespan 設定。
你可以用 Azure CLI 程式化匯出活動日誌。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-14T23:59:59Z"
maxItems=1000
outputFile="./activity-log.json"
az monitor activity-log list \
--subscription "$subscriptionId" \
--start-time "$startTime" \
--end-time "$endTime" \
--max-items "$maxItems" \
> "$outputFile"
你可以用 Azure PowerShell 程式化匯出活動日誌。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-14T23:59:59Z"
$outputFile = "./activity-log.csv"
Set-AzContext -SubscriptionId $subscriptionId
$getAzActivityLogParams = @{
StartTime = $startTime
EndTime = $endTime
}
Get-AzActivityLog @getAzActivityLogParams |
Export-Csv -Path $outputFile -NoTypeInformation
以下範例 PowerShell 腳本會將活動日誌匯出為 CSV 檔案,每一個檔案以一小時為間隔,每個檔案分別儲存在獨立檔案中。
# Parameters
$subscriptionId = "Subscription ID here" # Replace with your subscription ID
$startTime = [datetime]"2025-05-08T00:00:00" # Adjust as needed
$endTime = [datetime]"2025-05-08T12:00:00" # Adjust as needed
$outputFolder = "\Logs" # Change path as needed
# Ensure output folder exists
if (-not (Test-Path $outputFolder)) {
New-Item -Path $outputFolder -ItemType Directory
}
# Set subscription context
Set-AzContext -SubscriptionId $subscriptionId
# Loop through 1-hour intervals
$currentStart = $startTime
while ($currentStart -lt $endTime) {
$currentEnd = $currentStart.AddHours(1)
$timestamp = $currentStart.ToString("yyyyMMdd-HHmm")
$csvFile = Join-Path $outputFolder "ActivityLog_$timestamp.csv"
Write-Host "Fetching logs from $currentStart to $currentEnd..."
Get-AzActivityLog -StartTime $currentStart -EndTime $currentEnd |
Export-Csv -Path $csvFile -NoTypeInformation
$currentStart = $currentEnd
}
Write-Host "Export completed. Files saved to $outputFolder."
識別資源建立
利用活動日誌查詢系統何時建立資源,以及是誰創建的。 活動日誌是唯一儲存資源創作者的地方。 由於活動日誌預設只能保留 90 天的資料,你必須將日誌匯出到允許延長保留期限的地點,例如日誌分析工作區。 接著透過查詢 AzureActivity 資料表找到資源的創建者。 資料會保留你在本表中指定的 保留期間內。
相關內容