共用方式為


傳送 Azure 監視器活動記錄數據

Azure 監視器活動記錄是平台記錄,可提供訂用帳戶層級事件的深入解析。 活動記錄包含資訊,例如修改資源或發生部署錯誤時。 您可以在 Azure 平台中檢視 活動記錄,或使用 PowerShell 和 Azure CLI 擷取項目。

本文提供有關如何檢視活動記錄,並將其傳送至不同目的地的資訊。

備註

  • 活動記錄中的項目會由系統產生,無法變更或刪除。
  • 活動記錄中的專案代表控制平面變更,例如虛擬機重新啟動,任何不相關的專案都應該寫入 Azure 資源記錄
  • 活動記錄中的項目通常是修改操作的結果(建立、更新或刪除),或已啟動的動作。 通常不會記錄集中於讀取資源詳細信息的操作。

小提示

如果您已從部署作業錯誤導向本文,請參閱 針對常見的 Azure 部署錯誤進行疑難解答

匯出活動記錄

  1. 移至 [Azure 監視器>活動記錄 ],然後選取 [ 匯出活動記錄]。

    顯示如何取得活動記錄的螢幕快照。

    備註

    您可以將活動記錄從任何單一訂用帳戶傳送到最多五個工作區。

  2. 新增診斷設定 ,以將活動記錄傳送至其中一或多個位置:

    顯示新增診斷設定的螢幕擷取畫面。

    如需如何建立診斷設定的詳細資料,請參閱建立診斷設定以將平台記錄和計量傳送至不同的目的地

    小提示

    將活動記錄數據傳送至 Log Analytics 工作區,以取得下列優點:

    • 在預設保留期內,將記錄傳送到 Log Analytics 工作區是免費的。
    • 將記錄傳送到 Log Analytics 工作區,以便保留長達 12 年的時間
    • 匯出至 Log Analytics 工作區的記錄可以在 Power BI 中顯示
    • 系統會針對導出至Log Analytics的活動記錄提供深入解析

傳送至 Log Analytics 工作區

將活動記錄傳送至 Log Analytics 工作區,以啟用 Azure 監視器記錄功能,您可以在其中:

  • 將活動記錄數據與 Azure 監視器所收集的其他監視數據相互關聯。
  • 將多個 Azure 訂用帳戶和租用戶的記錄項目合併到一個位置以供分析。
  • 使用記錄查詢來執行複雜的分析,並深入瞭解活動日誌條目。
  • 使用記錄搜尋警示搭配活動項目,以取得更複雜的警示邏輯。
  • 儲存活動記錄項目的時間超過活動記錄保留期間。
  • 針對儲存在 Log Analytics 工作區中的活動記錄資料,不會收取任何資料擷取或保留費用。
  • Log Analytics 中的預設保留期為 90 天。

Log Analytics 工作區中的活動記錄資料會儲存在稱為 AzureActivity 的資料表中,而您可以使用 Log Analytics 中的記錄查詢來擷取該資料表。 此資料表的結構會根據記錄項目類別而不同。 如需資料表屬性的描述,請參閱 Azure 監視器資料參考

例如,若要檢視每個類別的活動記錄計數,請使用下列查詢:

AzureActivity
| summarize count() by CategoryValue

若要擷取系統管理類別中的所有記錄,請使用下列查詢:

AzureActivity
| where CategoryValue == "Administrative"

這很重要

在某些情況下,AzureActivity 欄位中的值可能有與其他對等值不同的大小寫。 在查詢 AzureActivity 中的資料以使用不區分大小寫的運算子進行字串比較時,請格外小心,或在任何比較之前使用純量函式強制欄位採用統一大小寫。 例如,在欄位上使用 tolower() 函式,強制它在執行字串比較時一律為小寫或 =~ 運算子

傳送至 Azure 事件中樞

將活動記錄傳送至 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/72f988bf-86f1-41af-91ab-2d7cd011db47/",
                    "iat": "1421876371",
                    "nbf": "1421876371",
                    "exp": "1421880271",
                    "ver": "1.0",
                    "http://schemas.microsoft.com/identity/claims/tenantid": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
                    "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": "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": "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-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"}}}

匯出成 CSV

選取 [下載為 CSV ] 以使用 Azure 入口網站將活動記錄匯出至 CSV 檔案。

顯示匯出至 CSV 選項的螢幕快照。

這很重要

如果您有大量的記錄項目,匯出可能需要太多時間。 若要改善效能,請減少匯出的時間範圍。 在 Azure 入口網站中,這會使用 Timespan 設定來設定。

您也可以使用 PowerShell 或 Azure CLI 將活動記錄匯出至 CSV 檔案,如下列範例所示。

az monitor activity-log list --start-time "2024-03-01T00:00:00Z" --end-time "2024-03-15T23:59:59Z" --max-items 1000 > activitylog.json
Get-AzActivityLog -StartTime 2021-12-01T10:30 -EndTime 2022-01-14T11:30 | Export-csv operations_logs.csv

下列範例 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."

擷取活動記錄事件的其他方法

您也可以使用下列方法來存取活動記錄事件:

舊版收集方法

備註

Azure 活動記錄解決方案用來將活動記錄轉送至 Log Analytics。 此解決方案將於 2026 年 9 月 15 日淘汰,並且會自動轉換成診斷設定。

如果您使用舊版收集方法來收集活動記錄,建議您將活動記錄匯出至 Log Analytics 工作區,並使用 [資料來源 - 刪除 API] 停用舊版收集方式,如下所示:

  1. 使用資料來源 - 依工作區 API 列出,列出連線至工作區的所有資料來源,並藉由設定 kind eq 'AzureActivityLog' 來篩選活動記錄。

    顯示 [資料來源 - 依工作區 API 列出] 設定的螢幕擷取畫面。

  2. 從 API 回應複製您要停用的連線名稱。

    螢幕擷取畫面顯示需要從 [資料來源 - 依工作區 API 列出] 輸出複製的資訊。

  3. 使用 [資料來源 - 刪除 API] 來停止收集特定資源的活動記錄。

    [資料來源 - 刪除 API] 設定的螢幕擷取畫面。

管理舊版日誌設定檔(退役)

備註

  • 日誌設定檔用來將活動日誌轉發到儲存帳戶和事件中樞。 此方法將於 2026 年 9 月 15 日淘汰。
  • 如果您使用此方法,請在 2025 年 9 月 15 日之前轉換為診斷設定,屆時我們將停止允許新的記錄設定檔建立。

記錄設定檔是將活動記錄傳送至儲存體或事件中樞的舊版方法。 如果您要使用此方法,請轉換為診斷設定,以提供資源記錄的更佳功能和一致性。

如果記錄設定檔已經存在,則您必須先移除現有記錄設定檔,然後建立新的記錄設定檔。

  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
    
    房產 為必填項目 說明
    名稱 是的 記錄檔設定檔的名稱。
    儲存帳戶ID 應該儲存活動記錄之儲存體帳戶的資源識別碼。
    serviceBusRuleId 服務 您想要在其中建立事件中樞之服務匯流排命名空間的服務匯流排規則識別碼。 此字串格式為 {service bus resource ID}/authorizationrules/{key name}
    地點 是的 您想要在其中收集活動記錄檔事件之區域的逗點分隔清單。
    RetentionInDays (以天為單位) 是的 應該在儲存體帳戶中保留事件的天數 (從 1 到 365 天)。 值為 0 會無限期地儲存記錄。
    類別 要收集之事件類別的逗點分隔清單。 可能的值有 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>"
$storageAccountName = "<Storage Account name>"

# 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 資料行名稱 註釋
類別 類別 CategoryValue
地位

數值為 successstartacceptfailure
活動狀態

值與 JSON 相同
活動狀態值 (ActivityStatusValue)

值會變更為 succeededstartedcceptedfailed
有效的值會變更,如下所示。
子狀態 活動子狀態 活動子狀態值
操作名稱 作業名稱 OperationNameValue REST API 會將作業名稱值當地語系化。 Log Analytics UI 一律會顯示英文。
資源提供者名稱 資源提供者 資源提供者值

這很重要

在某些情況下,這些資料行中的值可能會全部大寫。 如果您的查詢包含這些資料行,請使用 =~ 運算子來執行不區分大小寫的比較。

下列資料行已新增至更新過結構描述中的 AzureActivity

  • Authorization_d
  • Claims_d
  • Properties_d

後續步驟

深入瞭解: