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

Azure 監視器活動記錄是平台記錄,可提供訂用帳戶層級事件的深入解析。 此活動記錄包含像是何時修改資源或啟動虛擬機器的資訊。 您可以在 Azure 入口網站中檢視活動記錄,或使用 PowerShell 和 Azure CLI 來擷取項目。 本文提供有關如何檢視活動記錄,並將其傳送至不同目的地的資訊。

如需更多功能,請建立診斷設定,以將活動記錄檔傳送至下列其中一或多個位置,原因如下:

  • 傳送至 Azure 監視器 記錄,以取得更複雜的查詢和警示,以及 長達 12 年的較長保留期。
  • 傳送至 Azure 事件中樞,以在 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 或其他記錄分析解決方案。 來自事件中樞的活動記錄事件是使用 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": "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] 停用舊版收集方式,如下所示:

  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
    
    屬性 必要 描述
    姓名 Yes 記錄檔設定檔的名稱。
    StorageAccountId No 應該儲存活動記錄之儲存體帳戶的資源識別碼。
    serviceBusRuleId No 您想要在其中建立事件中樞之服務匯流排命名空間的服務匯流排規則識別碼。 此字串格式為 {service bus resource ID}/authorizationrules/{key name}
    Location Yes 您想要在其中收集活動記錄檔事件之區域的逗點分隔清單。
    RetentionInDays Yes 應該在儲存體帳戶中保留事件的天數 (從 1 到 365 天)。 值為 0 會無限期地儲存記錄。
    類別 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

值變更為 succeeded、started、accepted、failed
有效的值會變更,如下所示。
子狀態 ActivitySubstatus ActivitySubstatusValue
operationName OperationName OperationNameValue REST API 會將作業名稱值當地語系化。 Log Analytics UI 一律會顯示英文。
resourceProviderName ResourceProvider ResourceProviderValue

重要

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

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

  • Authorization_d
  • Claims_d
  • Properties_d

下一步

深入了解: