Azure Monitor アクティビティ ログ
Azure Monitor アクティビティ ログは、Azure のプラットフォーム ログであり、サブスクリプション レベルのイベントの分析情報を提供します。 このアクティビティ ログには、リソースが変更されたときや仮想マシンが起動されたときなどの情報が含まれます。 Azure portal でアクティビティ ログを表示したり、PowerShell と Azure CLI を使用してエントリを取得したりすることができます。 この記事では、アクティビティ ログを表示して、さまざまな宛先に送信する方法について説明します。
その他の機能については、次の理由により、これらの場所の 1 つまたは複数にアクティビティ ログを送信するための診断設定を作成してください。
- より複雑なクエリやアラートを作成したり、データ保持期間を延長 (最長 2 年) したりするために、Azure Monitor ログに送信するため。
- Azure の外部に転送するために、Azure Event Hubs に送信するため。
- より価格を抑えて、長期的なアーカイブのために、Azure Storage に送信するため。
診断設定の作成方法の詳細については、「プラットフォーム ログとメトリックを異なる宛先に送信するための診断設定を作成する」を参照してください。
Note
- アクティビティ ログのエントリはシステムによって生成されるため、変更または削除することはできません。
- アクティビティ ログのエントリは、仮想マシンの再起動などのコントロール プレーンの変更を表しており、関連のないエントリは Azure リソース ログに書き込まれる必要があります
保持期間
アクティビティログイベントは、Azure で 90 日間保持された後、削除されます。 ボリュームに関係なく、この期間中のエントリに対して料金は発生しません。 保持期間の延長など、より多くの機能を使用するには、診断設定を作成し、必要に応じてエントリを別の場所にルーティングします。 条件については、前のセクションを参照してください。
アクティビティ ログを表示する
アクティビティ ログには、Azure portal のほとんどのメニューからアクセスできます。 開くメニューによって、最初のフィルターが決まります。 [モニター] メニューから開くと、そのサブスクリプションに対するフィルターだけになります。 リソースのメニューから開くと、フィルターはそのリソースに対して設定されます。 いつでもフィルターを変更して、他のすべてのエントリを表示できます。 フィルターにプロパティを追加するには、[フィルターの追加] を選択します。
アクティビティ ログのカテゴリの説明については、「Azure アクティビティ ログのイベント スキーマ」を参照してください。
アクティビティ ログをダウンロードする
[CSV 形式でダウンロード] を選択し、現在のビューのイベントをダウンロードします。
変更履歴を表示する
イベントによっては、変更履歴を表示することができます。そこには、そのイベントの間に発生した変更が表示されます。 アクティビティ ログから、詳細を確認したいイベントを選びます。 [変更履歴 (プレビュー)] タブを選択し、そのイベントに関連する変更を表示します。
イベントに関連する変更がある場合は、表示される変更のリストから選ぶことができます。 変更を選ぶと、[変更履歴 (プレビュー)] ページが開きます。 このページには、リソースに対する変更が表示されます。 次の例では、VM のサイズが変更されていることがわかります。 このページには、変更前と変更後の VM サイズが表示されます。 変更履歴の詳細については、「リソースの変更の取得」を参照してください。
アクティビティ ログ イベントを取得する他の方法
次の方法を使用して、アクティビティ ログ イベントにアクセスすることもできます。
- PowerShell からアクティビティ ログを取得するには、Get-AzLog コマンドレットを使用します。 「Azure Monitor PowerShell のサンプル」を参照してください。
- CLI からアクティビティ ログ エントリを取得するには、az monitor activity-log を使用します。 Azure Monitor CLI のサンプルをご覧ください。
- REST クライアントからアクティビティ ログを取得するには、Azure Monitor REST API を使用します。
Log Analytics ワークスペースに送信する
アクティビティ ログを Log Analytics ワークスペースに送信して、Azure Monitor ログの機能を有効にします。この機能を使用すると、次のことができます。
- アクティビティ ログ データを、Azure Monitor によって収集されたその他の監視データと関連付けることができます。
- 複数の Azure サブスクリプションおよびテナントのログ エントリを 1 つの場所に統合して、まとめて分析できるようにします。
- ログ クエリを使用して複雑な分析を実行し、アクティビティ ログのエントリから詳細な分析情報を取得できます。
- より複雑なアラート ロジックに、アクティビティ エントリでログ アラートを使用できます。
- アクティビティ ログ エントリを、アクティビティ ログの保持期間よりも長く保存できます。
- Log Analytics ワークスペースに格納されているアクティビティ ログ データのインジェストや保持の料金が発生ません。
- Log Analytics での既定の保持期間は 90 日です。
アクティビティ ログを Log Analytics ワークスペースに送信するには、[アクティビティ ログのエクスポート] を選びます。
任意の 1 つのサブスクリプションから最大 5 つのワークスペースに、アクティビティ ログを送信できます。
Log Analytics ワークスペースでは、アクティビティ ログのデータは AzureActivity
という名前のテーブルに格納されます。このテーブルは、Log Analytics のログ クエリで取得できます。 このテーブルの構造はログ エントリのカテゴリによって異なります。 テーブルのプロパティの説明については、Azure Monitor データ リファレンスのページを参照してください。
たとえば、各カテゴリのアクティビティ ログ レコードの数を表示するには、次のクエリを使用します。
AzureActivity
| summarize count() by CategoryValue
管理カテゴリのすべてのレコードを取得するには、次のクエリを使用します。
AzureActivity
| where CategoryValue == "Administrative"
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 を使用してレガシ コレクションを無効にすることをお勧めします。
Data Sources - List By Workspace API を使用してワークスペースに接続されているすべてのデータ ソースを一覧表示し、
kind eq 'AzureActivityLog'
を設定してアクティビティ ログをフィルター処理します。API 応答から無効にする接続の名前をコピーします。
Data Sources - Delete API を使用して、特定のリソースのアクティビティ ログの収集を停止します。
従来のログ プロファイルの管理
ログ プロファイルは、ストレージまたはイベント ハブにアクティビティ ログを送信するための従来の方法です。 この方法を使用している場合は、機能およびリソース ログとの整合性がより優れている、診断設定への移行を検討してください。
ログ プロファイルが既に存在する場合は、最初に既存のログ プロファイルを削除してから、新しいものを作成する必要があります。
Get-AzLogProfile
を使用して、ログ プロファイルが存在するかどうかを確認します。 ログ プロファイルが存在する場合は、Name
プロパティをメモします。Name
プロパティの値を使用してログ プロファイルを削除するには、Remove-AzLogProfile
を使用します。# 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。 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
次のステップ
各項目の詳細情報