傳送 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工作區。

Screenshot that shows exporting activity logs.

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

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"}}}

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

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

舊版集合方法

注意

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

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

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

    Screenshot showing the configuration of the Data Sources - List By Workspace API.

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

    Screenshot showing the connection information you need to copy from the output of the Data Sources - List By Workspace API.

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

    Screenshot of the configuration of the Data Sources - Delete API.

管理舊記錄設定檔

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

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

  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 記錄檔配置檔的名稱。
    儲存體 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

下一步

深入了解: