Azure Monitor アクティビティ ログ データを送信する

Azure Monitor アクティビティ ログは、サブスクリプション レベルのイベントに関する分析情報を提供するプラットフォーム ログです。 このアクティビティ ログには、リソースが変更されたときや仮想マシンが起動されたときなどの情報が含まれます。 Azure portal でアクティビティ ログを表示したり、PowerShell と Azure CLI を使用してエントリを取得したりすることができます。 この記事では、アクティビティ ログを表示して、さまざまな宛先に送信する方法について説明します。

その他の機能については、次の理由により、これらの場所の 1 つまたは複数にアクティビティ ログを送信するための診断設定を作成してください。

  • より複雑なクエリやアラートおよびより長いデータ保持 (最長 12 年) のために、Azure Monitor ログに送信するため。
  • Azure の外部に転送するために、Azure Event Hubs に送信するため。
  • より価格を抑えて、長期的なアーカイブのために、Azure Storage に送信するため。

診断設定の作成方法の詳細については、「プラットフォーム ログとメトリックを異なる宛先に送信するための診断設定を作成する」を参照してください。

Note

  • アクティビティ ログのエントリはシステムによって生成されるため、変更または削除することはできません。
  • アクティビティ ログのエントリは、仮想マシンの再起動などのコントロール プレーンの変更を表しており、関連のないエントリは Azure リソース ログに書き込まれる必要があります
  • 通常、アクティビティ ログのエントリは、変更 (操作の作成、更新、または削除) または開始されたアクションの結果です。 リソースの詳細の読み取りに重点を置いた操作は、通常はキャプチャされません。

Log Analytics ワークスペースに送信する

アクティビティ ログを Log Analytics ワークスペースに送信して、Azure Monitor ログの機能を有効にします。この機能を使用すると、次のことができます。

  • アクティビティ ログ データを、Azure Monitor によって収集されたその他の監視データと関連付けることができます。
  • 複数の Azure サブスクリプションおよびテナントのログ エントリを 1 つの場所に統合して、まとめて分析できるようにします。
  • ログ クエリを使用して複雑な分析を実行し、アクティビティ ログのエントリから詳細な分析情報を取得できます。
  • より複雑なアラート ロジックのために、アクティビティ エントリでログ検索アラートを使用できます。
  • アクティビティ ログ エントリを、アクティビティ ログの保持期間よりも長く保存できます。
  • Log Analytics ワークスペースに格納されているアクティビティ ログ データのインジェストや保持の料金が発生ません。
  • Log Analytics での既定の保持期間は 90 日です。

アクティビティ ログを Log Analytics ワークスペースに送信するには、[アクティビティ ログのエクスポート] を選びます。

Screenshot that shows exporting activity logs.

任意の 1 つのサブスクリプションから最大 5 つのワークスペースに、アクティビティ ログを送信できます。

Log Analytics ワークスペースでは、アクティビティ ログのデータは AzureActivity という名前のテーブルに格納されます。このテーブルは、Log Analyticsログ クエリで取得できます。 このテーブルの構造はログ エントリのカテゴリによって異なります。 テーブルのプロパティの説明については、Azure Monitor データ リファレンスのページを参照してください。

たとえば、各カテゴリのアクティビティ ログ レコードの数を表示するには、次のクエリを使用します。

AzureActivity
| summarize count() by CategoryValue

管理カテゴリのすべてのレコードを取得するには、次のクエリを使用します。

AzureActivity
| where CategoryValue == "Administrative"

重要

一部のシナリオでは、AzureActivity のフィールドの値が、大文字と小文字の違いはあるがそれ以外は同じ値の場合があります。 AzureActivity のデータに対してクエリを実行する際には、文字列比較に大文字と小文字を区別しない演算子を使用する、または、比較を行う前にスカラー関数を使用してフィールドの大文字と小文字を統一するなどの配慮が必要です。 例えば、フィールドに tolower() 関数を使用して常に小文字にする、または、文字列を比較する際に =~ 演算子を使用します。

Azure Event Hubs に送信する

たとえば、サードパーティの SIEM や他のログ分析ソリューションなど、Azure の外部にエントリを送信するには、アクティビティ ログを Azure Event Hubs に送信します。 イベント ハブからのアクティビティ ログ イベントは、各ペイロードにレコードを格納する 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 Storage への送信

監査、静的分析、またはバックアップのためにログ データを 90 日より長く保持する場合は、アクティビティ ログを Azure Storage アカウントに送信します。 イベントを保持する必要があるのが 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 には、BLOB URL で指定されている時間に受信したログ ファイルからのイベントを含む JSON オブジェクトが含まれています。 現在の時間内にイベントが発生すると、イベントは生成された時間に関係なく、受信されるたびに PT1H.json ファイルに追記されます。 BLOB は 1 時間ごとに作成されるため、URL の分を示す数値 (m=00) は常に 00 です。

各イベントは、次の形式で 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 ワークスペースにエクスポートし、Data Sources - Delete API を使用してレガシ コレクションを無効にすることをお勧めします。

  1. Data Sources - List By Workspace 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. Data Sources - Delete API を使用して、特定のリソースのアクティビティ ログの収集を停止します。

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

従来のログ プロファイルの管理

ログ プロファイルは、ストレージまたはイベント ハブにアクティビティ ログを送信するための従来の方法です。 この方法を使用している場合は、機能およびリソース ログとの整合性がより優れている、診断設定への移行を検討してください。

ログ プロファイルが既に存在する場合は、最初に既存のログ プロファイルを削除してから、新しいものを作成する必要があります。

  1. Get-AzLogProfile を使用して、ログ プロファイルが存在するかどうかを確認します。 ログ プロファイルが存在する場合は、Name プロパティをメモします。

  2. Name プロパティの値を使用してログ プロファイルを削除するには、Remove-AzLogProfile を使用します。

    # 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
    
    プロパティ Required 内容
    件名 はい ログ プロファイルの名前。
    StorageAccountId いいえ アクティビティ ログの保存先となるストレージ アカウントのリソース ID。
    serviceBusRuleId いいえ イベント ハブを作成する Service Bus 名前空間の Service Bus 規則 ID。 この文字列の形式は {service bus resource ID}/authorizationrules/{key name} になります。
    Location はい アクティビティ ログ イベントを収集するリージョンのコンマ区切りリスト。
    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>"

# 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 に変わる
有効な値は左記のように変更されます。
subStatus ActivitySubstatus ActivitySubstatusValue
operationName OperationName OperationNameValue REST API は操作名の値をローカライズします。 Log Analytics UI には常に英語が表示されます。
resourceProviderName ResourceProvider ResourceProviderValue

重要

場合によっては、これらの列の値がすべて大文字になることがあります。 これらの列を含むクエリがある場合は、=~ 演算子を使用して、大文字と小文字を区別しない比較を実行します。

更新されたスキーマの AzureActivity には、次の列が追加されています。

  • Authorization_d
  • Claims_d
  • Properties_d

次のステップ

各項目の詳細情報