Azure Monitorのアクティビティ ログ

Azure Monitorアクティビティ ログ機能を使用して、Azure リソースの管理操作を記録します。 アクティビティ ログには、仮想マシンの作成、キー ボールトのアクセス ポリシーの変更、Resource Manager のデプロイ エラーなどの操作が記録されます。 これらの管理操作は、 コントロール プレーン 操作とも呼ばれます。 アクティビティ ログを使用して、この情報を確認または監査するか、イベントが発生したときに事前に通知されるアラートを作成します。

アクティビティ ログとは対照的に、Azure リソース ログリソース内で実行されるdata プレーン操作をキャプチャします。 たとえば、これらの操作には、キー コンテナーからシークレットを取得したり、データベースへの要求を行ったりします。 リソース ログは既定では収集されず、 診断設定を使用した構成が必要です。

ヒント

デプロイ操作エラーによってこの記事が表示される場合は、「 一般的な Azure デプロイ エラーのトラブルシューティング」を参照してください。

アクティビティ ログ エントリ

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 ログを選択します

アクティビティ ログを示すスクリーンショット。

リソース グループのアクティビティ ログ イベントを一覧表示する

resourceGroupName$filterに追加して、Azure Monitorのアクティビティログ結果を特定のリソースグループにスコープします。

アクティビティ ログを開くメニューによって、最初のフィルターが決まります。 リソースのメニューから開くと、フィルターはそのリソースに対して設定されます。 フィルターにプロパティを追加するには、[フィルターの追加 ] を選択します。 ポータルでフィルター処理できるその他のプロパティを次に示します。

  • Resource - データベースや仮想マシンなど、Azure ソリューションの一部である項目。
  • リソースの種類 – 仮想マシン、Web アプリ、データベースなど、リソースが属するカテゴリ。
  • Operation - Azure Resource Manager リソースに影響するアクションまたはコマンド (作成、削除、書き込みなど)。
  • [イベント開始者] – イベントを開始した ID でイベントをフィルター処理します。
  • イベント カテゴリ – 特定の操作のイベントの種類をフィルター処理します。

特定のアクティビティ ログのプロパティを返す

パラメーターを使用して、指定されたプロパティのみを返します。これにより、応答ペイロードのサイズが小さくなります。 詳細については、「 アクティビティ ログ スキーマのプロパティの説明」を参照してください。

Azure ポータルには、アクティビティ ログ イベントから直接返されるプロパティを制限する方法はありません。 表示されるデータの量を減らすには、[アクティビティ ログ] ブレードの [列の編集] オプションを使用して、ポータル ビューに表示する列を選択します。

テナント レベルのアクティビティ ログ イベントを一覧表示する

通常、テナント レベルのアクティビティ ログ イベントにはエントリが限られていますが、管理グループやサブスクリプションの作成などの重要なイベントが含まれる場合があります。 これらのイベントは、サブスクリプション レベルのアクティビティ ログ イベントとは別ですが、重複するリソース管理イベントが含まれている可能性があります。

このスコープでクエリを実行すると、サブスクリプション レベルのアクティビティ ログ イベント API とは異なる REST API が使用されます。 Azure CLIとAzure PowerShellでは、専用のコマンドは提供されません。

Azure ポータルで Monitor>Activity log に移動します。 [アクティビティ] プルダウン メニューを変更し、[ディレクトリ アクティビティ] を選択します。

Azure ポータル内のアクティビティ ログ ブレードでディレクトリ アクティビティ オプションが選択されている様子を示すスクリーンショット

管理グループ レベルのアクティビティ ログ イベントを一覧表示する

管理グループ レベルのアクティビティ ログ イベントは、ポリシーの割り当てや管理グループ メンバーシップの変更など、特定の管理グループを対象としたイベントをキャプチャします。

  • 次の例では、管理グループ レベルのアクティビティ ログ クエリに必要な 2017-03-01-preview API バージョンを使用します。

Azure ポータルで管理グループ レベルのアクティビティ ログ イベントを表示するには、管理グループ> に移動し、管理グループ >Activity log を選択します。

Azure portal の管理グループのアクティビティ ログ ブレードを示すスクリーンショット。

次の表では、前の例で使用したパラメーターについて説明します。

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 テーブルにイベントを送信します。

アクティビティ ログの分析情報ダッシュボードを示すスクリーンショット。

アクティビティ ログの分析情報は、サブスクリプションまたはリソース レベルで開くことができます。 サブスクリプションの場合は、[監視] メニューの [ワークブック] セクションから [アクティビティ ログの分析情報] を選択します。

スケール レベルで「アクティビティログ インサイト ワークブック」を探して開く方法を示すスクリーンショット。

個々のリソースの場合は、リソースのメニューの ワークブック セクションから アクティビティ ログの分析情報 を選択します。

リソース レベルで Activity Logs Insights ブックを見つけて開く方法を示すスクリーンショット。

アクティビティ ログのエクスポート

追加の保持時間と機能のために、アクティビティ ログ エントリを他の宛先に送信する診断設定を作成します。

アクティビティ ログ、リソース ログ、プラットフォーム メトリックのコレクションを示す図。

Azure ポータルで、Azure Monitor メニューの Activity log を選択し、Export アクティビティ ログ を選択します。 診断設定を作成するための詳細とその他の方法については、 Azure Monitor の診断設定に関するページを参照してください。 アクティビティ ログのレガシ構成は必ず無効にしてください。

Monitor-Activity ログ メニュー バーでアクティビティ ログが選択され、[アクティビティ ログのエクスポート] が強調表示された [Azure Monitor] メニューを示すスクリーンショット

次のセクションでは、リソース ログの構成可能な各宛先について詳しく説明します。

アクティビティ ログをエクスポートする従来の方法は、ログ プロファイルです。 従来のコレクション メソッドを参照してください。

次の機能のために、アクティビティ ログを Log Analytics ワークスペース に送信します。

  • ログ クエリを使用して、アクティビティ ログを他のログ データと関連付 ける
  • ログ アラートを作成します。アクティビティ ログ アラートよりも複雑なロジックを使用できます。
  • Power BIを使用してアクティビティ ログ データにアクセスします。
  • 90 日を超えるアクティビティ ログ データを保持します。

アクティビティ ログのデータ インジェスト料金はありません。 アクティビティ ログのリテンション期間の料金は、既定の保有期間である 90 日を超えて延長された期間にのみ適用されます。 保持期間を最大 12 年まで増やすことができます。

Log Analytics ワークスペースのアクティビティ ログ データは、AzureActivity というテーブルに格納されます。 このテーブルの構造はログ エントリのカテゴリによって異なります。

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

AzureActivity
| summarize count() by CategoryValue

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

AzureActivity
| where CategoryValue == "Administrative"

重要

シナリオによっては、AzureActivity のフィールドに含まれる値は、他の同等の値と比較して大文字/小文字が異なることがあります。 AzureActivity のデータに対してクエリを実行する際には、文字列比較に大文字と小文字を区別しない演算子を使用するか、比較を行う前に、スカラー関数を使用してフィールドの大文字と小文字の区別を統一します。 例えば、フィールドに tolower() 関数を使用して常に小文字にする、または、文字列を比較する際に =~ 演算子を使用します。

管理グループのアクティビティ ログをエクスポートする

管理グループの診断設定を作成すると、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 アクティビティ ログの [CSV としてダウンロード] ボタンを示すスクリーンショット。

重要

大量のログ エントリのエクスポートには時間がかかる場合があります。 パフォーマンスを向上させるには、エクスポートの時間範囲を減らします。 Azure portal で、 Timespan の設定を設定します。

リソースの作成を識別する

アクティビティ ログを使用して、システムがリソースを作成した日時とリソースを作成したユーザーを確認します。 アクティビティ ログは、リソースの作成者を格納する唯一の場所です。 アクティビティ ログには既定で 90 日間しかデータが保持されないため、Log Analytics ワークスペースなどの保持期間を延長できる場所にログをエクスポートする必要があります。 次に、 AzureActivity テーブルに対してクエリを実行して、リソースの作成者を見つけます。 データは、 このテーブルの保持期間に指定した期間保持されます。