Azure Monitorアクティビティ ログ機能を使用して、Azure リソースの管理操作を記録します。 アクティビティ ログには、仮想マシンの作成、キー ボールトのアクセス ポリシーの変更、Resource Manager のデプロイ エラーなどの操作が記録されます。 これらの管理操作は、 コントロール プレーン 操作とも呼ばれます。 アクティビティ ログを使用して、この情報を確認または監査するか、イベントが発生したときに事前に通知されるアラートを作成します。
アクティビティ ログとは対照的に、Azure リソース ログリソース内で実行されるdata プレーン操作をキャプチャします。 たとえば、これらの操作には、キー コンテナーからシークレットを取得したり、データベースへの要求を行ったりします。 リソース ログは既定では収集されず、 診断設定を使用した構成が必要です。
アクティビティ ログ エントリ
Azure Monitor では、必要な構成なしでアクティビティ ログ エントリが既定で収集されます。 これらのエントリは生成され、変更や削除はできません。 通常、エントリは変更 (作成、更新、削除の操作) または開始されるアクションによって発生します。 通常、アクティビティ ログは読み取り操作をキャプチャしません。
アクティビティ ログ エントリは、通常、 イベントが発生してから 3 ~ 20 分以内に分析とアラートに使用できます。 アクティビティ ログ のカテゴリの説明については、「Azure アクティビティ ログ イベント スキーマを参照してください。
保持期間
Azure では、アクティビティ ログ イベントが 90 日間 保持され、削除されます。 ボリュームに関係なく、この期間中のエントリには課金されません。 保持期間を長くするなど、より多くの機能を使用するには、診断設定を作成し、ニーズに基づいて 別の場所にエントリを収集 します。 リテンション期間を延長する最も一般的な理由の 1 つは、アクティビティ ログでのみ使用できる リソース作成者情報を保持することです。
アクティビティ ログの表示と取得
サブスクリプション、リソース グループ、または個々のリソースのアクティビティ ログ イベントを表示します。 Azure ポータルを使用するか、Activity Log REST API を使用してプログラムでクエリを実行します。
Azure ポータルには、ほとんどのサービス メニューから Activity log ブレードが表示されます。 これらの各領域では、REST を使用したプログラムによるアクセスや、特定のAzure CLIおよびAzure PowerShellコマンドによるアクセスもサポートされています。
取得するイベントの時間間隔を指定します。 REST API を使用してイベントを取得するには、少なくとも$filter開始値と共に eventTimestamp パラメーターを含める必要があります。 既定では、アクティビティ ログはイベントを 90 日間保持します。 時間範囲の開始と終了の両方がその 90 日間の期間内にあることを確認します。
アクティビティ ログアクセスのシナリオ
次のセクションでは、Azure CLIとAzure PowerShellを使用して、または REST 呼び出しを使用して、Azure ポータルからアクティビティ ログ イベントにアクセスして取得するさまざまな方法を示す一般的なシナリオについて説明します。
Azureポータルのサンプルでは、そのビューで予想されるイベントの種類に関する追加のコンテキストが提供されます。
Azure CLIサンプルでは、az monitor activity-log list コマンドで使用できる特定のコマンドが強調表示されています。
Azure PowerShellサンプルでは、Get-AzActivityLog コマンドレットで使用できる特定のコマンドレットが強調表示されています。
REST API サンプルでは、$filter で必要な パラメーターを使用してイベントを取得する方法を示します。
リソース グループのリスト アクティビティ ログ イベントのサンプルでは、Prefer ヘッダーを使用して、アクティビティ ログ REST API の最大タイムアウト期間 (75 秒) に一致するようにクライアントのタイムアウトを明示的に設定する方法も示します。
サポートされている $filter パターン |
詳細情報 |
| 時間範囲を持つ既定のサブスクリプション |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' |
| リソース グループ |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceGroupName eq '{resourceGroupName}' |
| 特定のリソース |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceUri eq '{resourceURI}' |
| リソース プロバイダー |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceProvider eq '{resourceProviderName}' |
| 関連付け ID |
$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and correlationId eq '{correlationID}' |
サブスクリプションのアクティビティ ログ イベントを一覧表示する
サブスクリプション レベルのイベントは、リソース プロバイダーによって直接作成されたイベントをキャプチャし、アクティビティ ログ イベントを一覧表示するための既定のスコープです。 テナント レベルおよび管理グループ レベルのイベントは、これらの階層の Azure Resource Manager イベントのみをキャプチャします。 これらの上位レベルのスコープには、Azure Resource Manager操作以外のリソース プロバイダーによって直接生成されるイベントは含まれません。
次の例では、特定の時間範囲内のサブスクリプションのアクティビティ ログ イベントを取得します。
アクティビティ ログを開くメニューによって、最初のフィルターが決まります。
[モニター] メニューから開くと、既定で選択されているフィルターはサブスクリプションのみです。 これは、サブスクリプションから開くのと同じです>サブスクリプション >Activity ログを選択します。
az monitor activity-log list Azure CLI コマンドを使用して、指定した時間範囲のサブスクリプションのアクティビティ ログ イベントを取得します。 既定では、このコマンドは、Azure CLI コンテキストで現在設定されているサブスクリプションのイベントを取得します。 サブスクリプションを明示的に指定するには、次の例に示すように、 --subscription パラメーターを使用します。
明示的な時間範囲:
Azure CLIでは、--start-time と --end-time を使用して、REST と同じ種類の明示的な時間範囲がサポートされます。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-14T23:59:59Z"
az monitor activity-log list \
--subscription "$subscriptionId" \
--start-time "$startTime" \
--end-time "$endTime"
相対時間範囲:
Azure CLIでは、--offset を使用した相対時間範囲もサポートされます。 たとえば、 --offset 14d は過去 14 日間のイベントを返します。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
offset="14d"
az monitor activity-log list \
--subscription "$subscriptionId" \
--offset "$offset"
注
Azure CLIコマンドは現在の CLI コンテキストからAzure Resource Manager エンドポイントを使用するため、コマンド構文で management.azure.com を指定する必要はありません。
Azure PowerShellは、指定した時間範囲のサブスクリプションのアクティビティ ログ イベントを取得するGet-AzActivityLog コマンドレットを提供します。
明示的な時間範囲:
Azure PowerShellでは、REST と同様に、StartTime と EndTime を使用して正確な時間範囲を指定できます。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$startTime = [datetime]"2026-04-01T00:00:00Z"
$endTime = [datetime]"2026-04-14T23:59:59Z"
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
StartTime = $startTime
EndTime = $endTime
}
Get-AzActivityLog @getAzActivityLogParams
相対時間範囲:
Azure PowerShellでは、Get-Date および StartTime の EndTime 式を使用した相対時間範囲のクエリもサポートされています。 次の例では、過去 14 日間のイベントを返し、コマンドの実行時に終了します。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$lookbackDays = 14
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
}
Get-AzActivityLog @getAzActivityLogParams
注
Azure PowerShellコマンドレットは現在の Az コンテキストからAzure Resource Manager エンドポイントを使用するため、コマンドレット構文で management.azure.com を指定する必要はありません。
アクティビティ ログ イベントを一覧表示するには、GET に対してこの要求を使用します。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'
リソース グループのアクティビティ ログ イベントを一覧表示する
resourceGroupNameを$filterに追加して、Azure Monitorのアクティビティログ結果を特定のリソースグループにスコープします。
アクティビティ ログを開くメニューによって、最初のフィルターが決まります。 リソースのメニューから開くと、フィルターはそのリソースに対して設定されます。 フィルターにプロパティを追加するには、[フィルターの追加 ] を選択します。 ポータルでフィルター処理できるその他のプロパティを次に示します。
-
Resource - データベースや仮想マシンなど、Azure ソリューションの一部である項目。
-
リソースの種類 – 仮想マシン、Web アプリ、データベースなど、リソースが属するカテゴリ。
-
Operation - Azure Resource Manager リソースに影響するアクションまたはコマンド (作成、削除、書き込みなど)。
-
[イベント開始者] – イベントを開始した ID でイベントをフィルター処理します。
-
イベント カテゴリ – 特定の操作のイベントの種類をフィルター処理します。
注
REST ヘッダー Prefer: wait=75 には、この操作の Azure CLI コマンドに直接相当するものがありません。 このコマンドは、クエリを直接発行し、一致するアクティビティ ログ レコードを返します。
az monitor activity-log list コマンドを使用して、リソース グループをスコープとしたアクティビティ ログ イベントを取得します。 特定のAzure CLIコマンドにより、同等の REST API 呼び出しの複雑さが軽減されます。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
resourceGroupName="myResourceGroup"
offset="30d"
az monitor activity-log list \
--subscription "$subscriptionId" \
--resource-group "$resourceGroupName" \
--offset "$offset"
注
Azure CLIコマンドは現在の CLI コンテキストからAzure Resource Manager エンドポイントを使用するため、コマンド構文で management.azure.com を指定する必要はありません。
注
REST ヘッダー Prefer: wait=75 には、この操作のAzure PowerShell コマンドレットに直接相当するものがありません。 このコマンドは、クエリを直接発行し、一致するアクティビティ ログ レコードを返します。
Azure PowerShellは、Get-AzActivityLog コマンドレットを提供し、リソース グループを対象とするアクティビティ ログ イベントを相対的な時間範囲で取得します。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$resourceGroupName = "myResourceGroup"
$lookbackDays = 30
Set-AzContext -Subscription $subscriptionId
$getAzActivityLogParams = @{
ResourceGroupName = $resourceGroupName
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
}
Get-AzActivityLog @getAzActivityLogParams
注
Azure PowerShellコマンドレットは現在の Az コンテキストからAzure Resource Manager エンドポイントを使用するため、コマンドレット構文で management.azure.com を指定する必要はありません。
Azure Resource Manager REST API を使用してリソース グループをスコープとするアクティビティ ログ イベントを一覧表示するには、時間範囲と GET プロパティの両方を含む $filterresourceGroupName 要求を使用します。 必要に応じて、要求の特定のタイムアウト (最大Prefer待機時間 (秒単位) を指定する75 ヘッダーを含めます。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}' and resourceGroupName eq '{resourceGroupName}'
Prefer: wait=75
特定のアクティビティ ログのプロパティを返す
パラメーターを使用して、指定されたプロパティのみを返します。これにより、応答ペイロードのサイズが小さくなります。 詳細については、「 アクティビティ ログ スキーマのプロパティの説明」を参照してください。
Azure ポータルには、アクティビティ ログ イベントから直接返されるプロパティを制限する方法はありません。 表示されるデータの量を減らすには、[アクティビティ ログ] ブレードの [列の編集] オプションを使用して、ポータル ビューに表示する列を選択します。
az monitor activity-log list コマンドと --select パラメーターを使用して、アクティビティ ログ イベントから返すプロパティを指定します。
--max-eventsの az monitor activity-log list パラメーターを使用して、返されるレコードの数を制限します。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
offset="30d"
maxEvents=100
selectFields=(
eventName
operationName
status
eventTimestamp
correlationId
submissionTimestamp
level
)
az monitor activity-log list \
--subscription "$subscriptionId" \
--offset "$offset" \
--max-events "$maxEvents" \
--select "${selectFields[@]}"
Azure PowerShellのアクティビティ ログ イベントから返されるプロパティを制限するには、Get-AzActivityLog の結果を Select-Object にパイプ処理し、返すプロパティを指定します。
Select-Objectは PowerShell で表示される出力のプロパティのみをフィルター処理するため、API 応答のサイズは縮小されません。
-MaxRecordの Get-AzActivityLog パラメーターを使用して、返されるレコードの数を制限します。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$lookbackDays = 30
$maxRecord = 100
$selectProperties = @(
"EventName"
"OperationName"
"Status"
"EventTimestamp"
"CorrelationId"
"SubmissionTimestamp"
"Level"
)
Set-AzContext -Subscription $subscriptionId
$activityLogParams = @{
StartTime = (Get-Date).AddDays(-$lookbackDays)
EndTime = Get-Date
MaxRecord = $maxRecord
}
Get-AzActivityLog @activityLogParams |
Select-Object -Property $selectProperties
Azure Resource Manager REST API を使用して返された特定のプロパティのみを含むアクティビティ ログ イベントを一覧表示するには、$select クエリ パラメーターを返すプロパティのコンマ区切りリストを含む GET 要求に含めます。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'&$select=eventName,operationName,status,eventTimestamp,correlationId,submissionTimestamp,level
テナント レベルのアクティビティ ログ イベントを一覧表示する
通常、テナント レベルのアクティビティ ログ イベントにはエントリが限られていますが、管理グループやサブスクリプションの作成などの重要なイベントが含まれる場合があります。 これらのイベントは、サブスクリプション レベルのアクティビティ ログ イベントとは別ですが、重複するリソース管理イベントが含まれている可能性があります。
このスコープでクエリを実行すると、サブスクリプション レベルのアクティビティ ログ イベント API とは異なる REST API が使用されます。 Azure CLIとAzure PowerShellでは、専用のコマンドは提供されません。
Azure ポータルで Monitor>Activity log に移動します。
[アクティビティ] プルダウン メニューを変更し、[ディレクトリ アクティビティ] を選択します。
テナント レベルのアクティビティ ログ イベントでは、専用のAzure CLI コマンドを使用できません。 次の例では、 az rest を使用して REST API を直接呼び出します。
apiVersion="2015-04-01"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-30T23:59:59Z"
providers="Microsoft.Insights/eventtypes/management/values"
resourceId="/providers/$providers"
filter="eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
az rest \
--method get \
--uri "$resourceId?api-version=$apiVersion&\$filter=$filter"
テナント レベルのアクティビティ ログ イベントでは、専用の PowerShell コマンドレットを使用できません。 次の例では、 Invoke-AzRestMethodを使用して REST API を直接呼び出します。
$apiVersion = "2015-04-01"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-30T23:59:59Z"
$providers = "Microsoft.Insights/eventtypes/management/values"
$resourceId = "/providers/$providers"
$filter = "eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
$invokeAzRestMethodParams = @{
Path = "$resourceId?api-version=$apiVersion&`$filter=$filter"
Method = "GET"
}
Invoke-AzRestMethod @invokeAzRestMethodParams
テナント レベルのアクティビティ ログ イベントを一覧表示するには、この GET 要求を使用します。 この要求は、サブスクリプション レベルのアクティビティ ログ API とは異なるテナント レベルのアクティビティ ログ エンドポイントを対象とします。
GET https://management.azure.com/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{starTime}' and eventTimestamp le '{endTime}'
管理グループ レベルのアクティビティ ログ イベントを一覧表示する
管理グループ レベルのアクティビティ ログ イベントは、ポリシーの割り当てや管理グループ メンバーシップの変更など、特定の管理グループを対象としたイベントをキャプチャします。
注
- 次の例では、管理グループ レベルのアクティビティ ログ クエリに必要な
2017-03-01-preview API バージョンを使用します。
Azure ポータルで管理グループ レベルのアクティビティ ログ イベントを表示するには、管理グループ> に移動し、管理グループ >Activity log を選択します。
管理グループ レベルのアクティビティ ログ イベントを一覧表示するには、az rest Azure CLI コマンドを使用します。 このコマンドは、Azure Resource Manager REST API を直接呼び出して、指定された管理グループをスコープにしたアクティビティ ログ イベントを取得します。
apiVersion="2017-03-01-preview"
managementGroupId="myManagementGroup"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-30T23:59:59Z"
providers="Microsoft.Insights/eventtypes/management/values"
resourceId="/providers/Microsoft.Management/managementGroups/$managementGroupId/providers/$providers"
filter="eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
az rest \
--method get \
--url "$resourceId?api-version=$apiVersion&\$filter=$filter"
管理グループ レベルのアクティビティ ログ イベントでは、専用の PowerShell コマンドレットを使用できません。 次の例では、 Invoke-AzRestMethodを使用して REST API を直接呼び出します。
$apiVersion = "2017-03-01-preview"
$managementGroupId = "myManagementGroup"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-30T23:59:59Z"
$providers = "Microsoft.Insights/eventtypes/management/values"
$resourceId = "/providers/Microsoft.Management/managementGroups/$managementGroupId/providers/$providers"
$filter = "eventTimestamp ge '$startTime' and eventTimestamp le '$endTime'"
$invokeAzRestMethodParams = @{
Method = "GET"
Path = "$resourceId?api-version=$apiVersion&`$filter=$filter"
}
Invoke-AzRestMethod @invokeAzRestMethodParams
管理グループ レベルのアクティビティ ログ イベントを一覧表示するには、Azure Resource Manager REST API に対してこの GET 要求を使用します。
{managementGroupId}をクエリする管理グループの ID に置き換え、$filter クエリ パラメーターに時間範囲を指定します。
GET https://management.azure.com/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Insights/eventtypes/management/values?api-version={apiVersion}&$filter=eventTimestamp ge '{startTime}' and eventTimestamp le '{endTime}'
次の表では、前の例で使用したパラメーターについて説明します。
| Variable |
値の例 |
Purpose |
| ホスティング |
management.azure.com |
暗黙的な ARM エンドポイント |
| subscriptionId |
aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
ユーザー入力 |
| resourceGroupName |
myResourceGroup |
ユーザー入力 |
| 管理グループID |
myManagementGroup |
ユーザー入力 |
| apiVersion |
• 2015-04-01 • 2017-03-01-preview (管理グループ レベルの場合) |
リファレンス |
変更履歴を表示する
イベントによっては、変更履歴を表示することができます。そこには、そのイベントの間に発生した変更が表示されます。 詳細を確認するイベントをアクティビティ ログから選択します。 [ 変更履歴 ] タブを選択すると、操作の時刻の最大 30 分前と後にリソースに対する変更が表示されます。
イベントに変更が関連付けられている場合は、ポータルに選択可能な変更の一覧が表示されます。 変更を選択すると、[ 変更履歴 ] ページが開きます。 このページには、リソースに対する変更が表示されます。
次の例は、VM のサイズが変更されたことを示しています。 ページには、変更前と変更後の VM サイズが表示されます。 変更履歴の詳細については、「リソースの 変更を取得する」を参照してください。
アクティビティ ログの分析情報
アクティビティ ログ分析情報は、サブスクリプション内のリソースとリソース グループへの変更を監視する一連のダッシュボードを提供するAzure Monitor ブックです。 ダッシュボードには、サブスクリプションでアクティビティを実行したユーザーまたはサービスとアクティビティの状態に関するデータも表示されます。
アクティビティ ログの分析情報を有効にするには、「Export アクティビティ ログで説明されているように、アクティビティ ログをLog Analytics ワークスペースにエクスポートします。 このプロセスは、アクティビティ ログ分析情報で使用される AzureActivity テーブルにイベントを送信します。
アクティビティ ログの分析情報は、サブスクリプションまたはリソース レベルで開くことができます。 サブスクリプションの場合は、[監視] メニューの [ワークブック] セクションから [アクティビティ ログの分析情報] を選択します。
個々のリソースの場合は、リソースのメニューの ワークブック セクションから アクティビティ ログの分析情報 を選択します。
アクティビティ ログのエクスポート
追加の保持時間と機能のために、アクティビティ ログ エントリを他の宛先に送信する診断設定を作成します。
Azure ポータルで、Azure Monitor メニューの Activity log を選択し、Export アクティビティ ログ を選択します。 診断設定を作成するための詳細とその他の方法については、 Azure Monitor の診断設定に関するページを参照してください。
アクティビティ ログのレガシ構成は必ず無効にしてください。
次のセクションでは、リソース ログの構成可能な各宛先について詳しく説明します。
次の機能のために、アクティビティ ログを Log Analytics ワークスペース に送信します。
アクティビティ ログのデータ インジェスト料金はありません。 アクティビティ ログのリテンション期間の料金は、既定の保有期間である 90 日を超えて延長された期間にのみ適用されます。
保持期間を最大 12 年まで増やすことができます。
Log Analytics ワークスペースのアクティビティ ログ データは、AzureActivity というテーブルに格納されます。 このテーブルの構造はログ エントリのカテゴリによって異なります。
たとえば、各カテゴリのアクティビティ ログ レコードの数を表示するには、次のクエリを使用します。
AzureActivity
| summarize count() by CategoryValue
管理カテゴリのすべてのレコードを取得するには、次のクエリを使用します。
AzureActivity
| where CategoryValue == "Administrative"
重要
シナリオによっては、AzureActivity のフィールドに含まれる値は、他の同等の値と比較して大文字/小文字が異なることがあります。
AzureActivity のデータに対してクエリを実行する際には、文字列比較に大文字と小文字を区別しない演算子を使用するか、比較を行う前に、スカラー関数を使用してフィールドの大文字と小文字の区別を統一します。 例えば、フィールドに tolower() 関数を使用して常に小文字にする、または、文字列を比較する際に =~ 演算子を使用します。
アクティビティ ログをAzure Event Hubsに送信して、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": "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/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"iat": "1421876371",
"nbf": "1421876371",
"exp": "1421880271",
"ver": "1.0",
"http://schemas.microsoft.com/identity/claims/tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"http://schemas.microsoft.com/claims/authnmethodsreferences": "pwd",
"http://schemas.microsoft.com/identity/claims/objectidentifier": "aaaa0000-bb11-2222-33cc-444444dddddd",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "admin@contoso.com",
"puid": "1003BFFD8EC002D4",
"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": "bbbb1111-cc22-3333-44dd-555555eeeeee,aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb,cccc2222-dd33-4444-55ee-666666ffffff",
"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": "bbbbbbbb-1111-2222-3333-cccccccccccc"
}
}
]
}
監査、静的分析、またはバックアップのためにログ データを 90 日を超えて保持する場合は、アクティビティ ログを Azure Storage アカウントに送信します。 イベントを 90 日以下保持する必要がある場合は、ストレージ アカウントへのアーカイブを設定する必要はありません。
アクティビティ ログをストレージに送信すると、イベントが発生するとすぐにストレージ アカウントにストレージ コンテナーが作成されます。 コンテナー内の 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"}}}
管理グループのアクティビティ ログをエクスポートする
管理グループの診断設定を作成すると、Azure Monitor のアクティビティ ログ イベントが、その管理グループおよび階層内のすべての管理グループのためにエクスポートされます。 階層内の複数の管理グループに診断設定がある場合は、重複するイベントを受け取ります。 階層のすべてのイベントをキャプチャするには、最上位レベルの管理グループの診断設定のみが必要です。
また、管理グループは、その下にあるサブスクリプションと同じイベントの多くも収集します。 サブスクリプションと管理グループの両方に診断設定がある場合は、重複するイベントを受け取ります。 Azure Resource Manager には、イベントの書き込み時に階層プロパティが含まれますが、必須フィールドではありません。 Azure Resource Manager の外部のリソース プロバイダーでは設定されないため、イベントは階層に反映されません。 このため、重複するイベントを取得する方が、イベントが見つからない場合よりも優れています。
たとえば、サブスクリプション 1 を含む MG2 を含む MG1 がある場合、MG1 の診断設定では、MG1、MG2、および Subscription1 の診断設定によって収集された多くのイベントのすべてのアクティビティ ログ イベントがキャプチャされます。 この場合、重複するイベントを収集するため、MG2 では診断設定は必要ありません。
重複するイベントがある場合は、すべてのフィールドのハッシュを使用して一意のレコードを識別するクエリを使用してイベントを結合します。 次の Kusto クエリの例は、Log Analytics ワークスペースで収集されたログのサンプルを示しています。
AzureActivity
| extend Hash = hash(dynamic_to_json(pack_all()))
| summarize arg_max(TimeGenerated, *) by Hash
アクティビティ ログをファイルにエクスポートする
Azure portal でアクティビティ ログを CSV ファイルにエクスポートするには、[ CSV としてダウンロード ] を選択します。
重要
大量のログ エントリのエクスポートには時間がかかる場合があります。 パフォーマンスを向上させるには、エクスポートの時間範囲を減らします。 Azure portal で、 Timespan の設定を設定します。
Azure CLIを使用して、アクティビティ ログをプログラムでエクスポートできます。
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
startTime="2026-04-01T00:00:00Z"
endTime="2026-04-14T23:59:59Z"
maxItems=1000
outputFile="./activity-log.json"
az monitor activity-log list \
--subscription "$subscriptionId" \
--start-time "$startTime" \
--end-time "$endTime" \
--max-items "$maxItems" \
> "$outputFile"
Azure PowerShellを使用して、アクティビティ ログをプログラムでエクスポートできます。
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$startTime = "2026-04-01T00:00:00Z"
$endTime = "2026-04-14T23:59:59Z"
$outputFile = "./activity-log.csv"
Set-AzContext -SubscriptionId $subscriptionId
$getAzActivityLogParams = @{
StartTime = $startTime
EndTime = $endTime
}
Get-AzActivityLog @getAzActivityLogParams |
Export-Csv -Path $outputFile -NoTypeInformation
次の 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."
リソースの作成を識別する
アクティビティ ログを使用して、システムがリソースを作成した日時とリソースを作成したユーザーを確認します。 アクティビティ ログは、リソースの作成者を格納する唯一の場所です。 アクティビティ ログには既定で 90 日間しかデータが保持されないため、Log Analytics ワークスペースなどの保持期間を延長できる場所にログをエクスポートする必要があります。 次に、 AzureActivity テーブルに対してクエリを実行して、リソースの作成者を見つけます。 データは、 このテーブルの保持期間に指定した期間保持されます。
関連するコンテンツ