Azure Monitor アクティビティ ログは、サブスクリプション レベルのイベントに関する分析情報を提供するプラットフォーム ログです。 アクティビティ ログには、リソースが変更されたときやデプロイ エラーが発生した場合などの情報が含まれます。 Azure portal で アクティビティ ログ を表示したり、PowerShell と Azure CLI を使用してエントリを取得したりできます。
この記事では、アクティビティ ログを表示して、さまざまな宛先に送信する方法について説明します。
注
- アクティビティ ログのエントリはシステムによって生成されるため、変更または削除することはできません。
- アクティビティ ログのエントリは、仮想マシンの再起動などのコントロール プレーンの変更を表しており、関連しないエントリは Azure リソース ログに書き込む必要があります
- 通常、アクティビティ ログのエントリは、変更 (作成、更新、または削除操作) またはアクションが開始された結果です。 リソースの詳細の読み取りに重点を置いた操作は、通常はキャプチャされません。
ヒント
デプロイ操作エラーからこの記事に指示された場合は、「 一般的な Azure デプロイ エラーのトラブルシューティング」を参照してください。
アクティビティ ログのエクスポート
Azure Monitor>Activity ログに移動し、[アクティビティ ログのエクスポート] を選択します。
注
任意の 1 つのサブスクリプションから最大 5 つのワークスペースに、アクティビティ ログを送信できます。
次の 1 つ以上の場所にアクティビティ ログを送信する診断設定を追加します。
- より複雑なクエリとアラートのための Log Analytics ワークスペース。
- Azure Event Hubs: Azure の外部にログを転送するため
- Azure Storage: より低コストの長期アーカイブのため
診断設定の作成方法の詳細については、「プラットフォーム ログとメトリックを異なる宛先に送信するための診断設定を作成する」を参照してください。
ヒント
アクティビティ ログ データを Log Analytics ワークスペースに送信すると、次の利点があります。
- Log Analytics ワークスペースへのログの送信は、既定の保持期間については無料です。
- さらに長い最大 12 年間の保持期間でログを Log Analytics ワークスペースに送信します。
- Log Analytics ワークスペースにエクスポートしたログは、Power BI で表示できます
- Log Analytics にエクスポートされたアクティビティ ログに関する分析情報が提供されます。
Log Analytics ワークスペースに送信する
アクティビティ ログを Log Analytics ワークスペースに送信して、Azure Monitor ログの機能を有効にします。この機能を使用すると、次のことができます。
- アクティビティ ログ データを、Azure Monitor によって収集されたその他の監視データと関連付けることができます。
- 複数の Azure サブスクリプションおよびテナントのログ エントリを 1 つの場所に統合して、まとめて分析できるようにします。
- ログ クエリを使用して複雑な分析を実行し、アクティビティ ログのエントリから詳細な分析情報を取得できます。
- より複雑なアラート ロジックのために、アクティビティ エントリでログ検索アラートを使用できます。
- アクティビティ ログ エントリを、アクティビティ ログの保持期間よりも長く保存できます。
- Log Analytics ワークスペースに格納されているアクティビティ ログ データのインジェストや保持の料金が発生ません。
- Log Analytics 内での既定の保持期間は 90 日です。
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": "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 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-activity-logs/resourceId=/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/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 にエクスポート
Azure portal を使用してアクティビティ ログを CSV ファイルにエクスポートするには、[ CSV としてダウンロード ] を選択します。
重要
大量のログ エントリがある場合、エクスポートに過剰な時間がかかる可能性があります。 パフォーマンスを向上させるには、エクスポートの時間範囲を減らします。 Azure portal では、これは 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 スクリプトの例では、アクティビティ ログを 1 時間間隔で 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."
アクティビティ ログ イベントを取得する他の方法
次の方法を使用して、アクティビティ ログ イベントにアクセスすることもできます。
- PowerShell からアクティビティ ログを取得するには、Get-AzLog コマンドレットを使用します。 「Azure Monitor PowerShell のサンプル」を参照してください。
- CLI からアクティビティ ログ エントリを取得するには、az monitor activity-log を使用します。 Azure Monitor CLI のサンプルをご覧ください。
- REST クライアントからアクティビティ ログを取得するには、Azure Monitor REST API を使用します。
従来の収集方法
注
Azure アクティビティ ログ ソリューションは、アクティビティ ログを Log Analytics に転送するために使用されました。 このソリューションは 2026 年 9 月 15 日に廃止され、診断設定に自動的に変換されます。
従来の収集方法を使用してアクティビティ ログを収集する場合は、次のように、アクティビティ ログを Log Analytics ワークスペースにエクスポートし、Data Sources - Delete API を使用してレガシ コレクションを無効にすることをお勧めします。
Data Sources - List By Workspace API を使用してワークスペースに接続されているすべてのデータ ソースを一覧表示し、
kind eq 'AzureActivityLog'
を設定してアクティビティ ログをフィルター処理します。API 応答から無効にする接続の名前をコピーします。
Data Sources - Delete API を使用して、特定のリソースのアクティビティ ログの収集を停止します。
従来のログ プロファイルの管理 (廃止)
注
- ログ プロファイルは、アクティビティ ログをストレージ アカウントと Event Hubs に転送するために使用されました。 この方法は、2026 年 9 月 15 日に廃止されます。
- この方法を使用している場合は、2025 年 9 月 15 日より前の診断設定に移行します。ログ プロファイルの新規作成の許可は停止されます。
ログ プロファイルは、ストレージまたはイベント ハブにアクティビティ ログを送信するための従来の方法です。 この方法を使用している場合は、機能およびリソース ログとの整合性がより優れている、診断設定への移行を検討してください。
ログ プロファイルが既に存在する場合は、最初に既存のログ プロファイルを削除してから、新しいものを作成する必要があります。
Get-AzLogProfile
を使用して、ログ プロファイルが存在するかどうかを確認します。 ログ プロファイルが存在する場合は、Name
プロパティをメモします。Remove-AzLogProfile
プロパティの値を使用してログ プロファイルを削除するには、Name
を使用します。# For example, if the log profile name is 'default' Remove-AzLogProfile -Name "default"
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
プロパティ 必須 説明 名前 イエス ログ プロファイルの名前。 StorageAccountId (ストレージアカウントID) いいえ アクティビティ ログの保存先となるストレージ アカウントのリソース ID。 serviceBusRuleId いいえ イベント ハブを作成する Service Bus 名前空間の Service Bus 規則 ID。 この文字列の形式は {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 | |
ステータス 値は、 success 、 start 、 accept 、 failure |
活動状況 JSON と同じ値 |
活動状態値 値は、 succeeded 、started 、accepted 、failed に変更されます |
有効な値は左記のように変更されます。 |
サブステータス | アクティビティサブステータス | ActivitySubstatusValue | |
操作名 | オペレーションネーム | 操作名値 | REST API は操作名の値をローカライズします。 Log Analytics UI には常に英語が表示されます。 |
リソースプロバイダー名 | リソースプロバイダ | リソースプロバイダー値 |
重要
場合によっては、これらの列の値がすべて大文字になることがあります。 これらの列を含むクエリがある場合は、=~ 演算子を使用して、大文字と小文字を区別しない比較を実行します。
更新されたスキーマの AzureActivity
には、次の列が追加されています。
Authorization_d
Claims_d
Properties_d
次のステップ
詳細については、以下をご覧ください。