Azure Monitor を使用してアクティビティ ログ アラートを作成、表示、管理する

"アクティビティ ログ アラート" は、アラートで指定した条件に一致するアクティビティ ログ イベントが新たに発生したときにアクティブになるアラートです。 このアラートは、Azure Resource Manager テンプレートを使用して、Azure リソースに対して作成します。 このアラートは、Azure portal で作成、更新、または削除することもできます。

通常は、Azure サブスクリプション内のリソースに特定の変更が発生した場合に通知を受け取るためにアクティビティ ログ アラートを作成します。 アラートは、多くの場合、特定のリソース グループまたはリソースにスコープ指定されます。 たとえば、サンプル リソース グループ myProductionResourceGroup 内の仮想マシンが削除されたときに通知を受け取ることができます。 または、サブスクリプション内のユーザーに新しいロールが割り当てられた場合に通知を受け取ることもできます。

重要

アクティビティ ログ アラートを作成するインターフェイスを使用して、サービス正常性通知に対するアラートを作成することはできません。 サービス正常性通知の作成および使用の詳細については、サービス正常性通知のアクティビティ ログ アラートの受け取りに関する記事をご覧ください。

アラート ルールを作成するときは、次のことを確認してください。

  • スコープ内のサブスクリプションが、アラートが作成されているサブスクリプションと同じである。
  • 条件は、アラートが構成されているレベル/状態/呼び出し元/リソース グループ/リソース ID/リソースの種類/イベント カテゴリでなければならない。
  • アラート構成 JSON に、anyOf 条件または入れ子になった条件がない。 1 つの allOf 条件のみ許可され、追加の allOf または anyOf 条件は指定できない。
  • カテゴリが administrative の場合、アラートに上記の条件を 1 つ以上指定する必要がある。 アクティビティ ログ内にイベントが作成されるたびにアクティブにするアラートを作成することはできません。
  • アクティビティ ログの alert カテゴリに含まれるイベントに対してアラートを作成することはできない。

Azure portal

Azure portal を使用して、アクティビティ ログ アラート ルールを作成および変更できます。 このエクスペリエンスは Azure アクティビティ ログに統合され、対象とする特定のイベントに対するシームレスなアラート作成が保証されます。 Azure portal で、新しいアクティビティ ログ アラート ルールを作成するには、Azure Monitor のアラート ペインから、または Azure Monitor アクティビティ ログ ペインから作成できます。

アラート ルールを Azure Monitor アラート ペインから作成する

次の手順で、Azure portal で、アクティビティ ログ アラート ルールを作成します。

  1. Azure Portal で、 [モニター] を選択します。 [モニター] ウィンドウでは、すべての監視設定とデータが 1 つのビューにまとめられています。

  2. [アラート]>[+ 作成]>[アラート ルール] を選択します。

    ヒント

    また、ほとんどのリソース ペインには、 [監視] のリソース メニューに [アラート] があります。 そこからアラート ルールを作成することもできます。

  3. [スコープ] タブで、[スコープの選択] をクリックします。 次に、読み込まれるコンテキスト ウィンドウで、アラートを設定するターゲット リソースを選択します。 [サブスクリプション別でフィルター][リソースの種類でフィルター]、および [場所別でフィルター] のドロップダウンを使用して、監視するリソースを検索します。 検索バーを使用して、リソースを検索することもできます。

    Note

    ターゲットとして、サブスクリプション全体、リソースグループ、または同じサブスクリプションの 1 つ以上の特定のリソースを選択できます。 サブスクリプションまたはリソース グループをターゲットとして選択し、リソースの種類も選択した場合、ルールは、選択したサブスクリプションまたはリソース グループ内のその種類のすべてのリソースに適用されます。 特定のターゲット リソースを選択した場合、ルールは、そのリソースにのみ適用されます。 複数のサブスクリプション、または異なるサブスクリプションの複数のリソースを選択することはできません。

  4. 選択したリソースに、アラート ルールを作成できるアクティビティ ログ操作があると、[利用可能なシグナルの種類][アクティビティ ログ] が表示されます。 アクティビティ ログ アラートでサポートされているリソースの種類の完全な一覧については、「Azure リソース プロバイダーの操作」をご覧ください。

    Screenshot of the target selection pane.

  5. ターゲット リソースを選択した後、[完了] をクリックします

  6. [条件] タブに進みます。次に、読み込まれたコンテキスト ペインにリソースでサポートされているシグナルの一覧が表示されます。これには、アクティビティ ログのさまざまなカテゴリのものが含まれます。 アラート ルールを作成するアクティビティ ログのシグナルまたは操作を選択します。

  7. 過去 6 時間のアクティビティ ログ操作のグラフが表示されます。 その操作の履歴の表示期間を長くするには、 [グラフの期間] ドロップダウン リストを使用します。

  8. [アラート ロジック] で、必要に応じて、より多くのフィルター条件を定義できます。

    • イベントのレベル:イベントの重大度レベル: "詳細"、"情報"、"警告"、"エラー" または "重大"。
    • 状態: イベントの状態: "開始済み"、"失敗" または "成功"。
    • イベント開始者: "呼び出し元" とも呼ばれます。 操作を実行したユーザーの電子メール アドレスまたは Azure Active Directory 識別子。

    Note

    これらの条件の少なくとも 1 つを定義すると、より効果的なルールを実現できます。 たとえば、アラートのスコープがサブスクリプション全体であり、選択したシグナルが All Administrative Operations の場合、イベント レベル、状態、または開始情報を指定すると、ルールがより具体的になります。

    Screenshot of the condition selection pane.

  9. [アクション] タブに進み、警告ルールがアラートを生成するときにトリガーされるアクションと通知を定義できます。 既存のアクション グループを選択するか、新しいアクション グループを作成して、アラート ルールにアクション グループを追加できます。

  10. [詳細] タブに進みます。[プロジェクトの詳細] で、アラート ルールのリソースを保存するリソース グループを選択します。 [アラート ルールの詳細] で、[アラート ルール名] を指定します。 [アラートルールの説明] を指定することもできます。

    Note

    アクティビティ ログ アラートのアラート重大度は、現在、ユーザーが構成することはできません。 重大度レベルは常に既定の Sev4 に設定されます。

  11. [タグ] に進みます。ここで、作成しているアラート ルールにタグを設定できます。

  12. [確認と作成] タブに進み、警告ルールを作成する前に選択内容を確認できます。 また、簡単な自動検証も実行されます。情報が不足している場合、または正しくする必要がある場合に通知します。 アラート ルールを作成する準備ができたら、[作成] をクリックします。

アラート ルールを Azure Monitor アクティビティ ログ ペインから作成する

アクティビティ ログ アラートを作成する別の方法は、 Azure portal のアクティビティ ログを使用して、既に発生したアクティビティ ログ イベントから開始することです。

  1. [Azure Monitor - アクティビティ ログ] ペインで、目的のイベントをフィルター処理または検索し、次に [アクティビティ ログ アラートの追加] を選択して、将来の類似イベントに対するアラートを作成できます。

    Screenshot of alert rule creation from an activity log event.

  2. [アラート ルールの作成] ウィザードが開きます。アラート ルールのスコープと条件が、前に選択したアクティビティ ログ イベントに従って既に設定されています。 必要に応じて、この段階でスコープと条件を編集および変更できます。 既定では、新しいルールのスコープと条件は、元のイベント属性からコピーされます。 たとえば、既定では、イベントが発生したリソースはそのまま、イベントを開始した特定のユーザーまたはサービス名と共に、新しいアラート ルールに挿入されます。 アラート ルールをより一般的なものにするには、スコープと条件を適宜変更します (「アラート ルールを Azure Monitor アラート ペインから作成する」セクションの手順 3 から 9 を参照してください)。

  3. 次に、「アラート ルールを Azure Monitor アラート ペインから作成する」セクションの手順 9 から 12 に従います。

Azure portal での表示と管理

  1. Azure portal で、 [モニター]>[アラート] の順に選択します。 次に、[アラート ルール] を選択します。

    使用可能なアラート ルールの一覧が表示されます。

  2. 変更するアクティビティ ログ ルールをフィルタリングまたは検索します。

    Screenshot of the alert rules management pane.

    編集するアクティビティのルールを検索するには、用意されているフィルターとして [サブスクリプション][リソース グループ][リソース][シグナルの種類] または [状態] を使用できます。

  3. アラート ルールを選択して、編集できるように開きます。 必要な変更を行い、 [保存] を選択します。

Azure Resource Manager テンプレート

Azure Resource Manager テンプレートを使用してアクティビティ ログ アラート ルールを作成するには、microsoft.insights/activityLogAlerts 型のリソースを作成します。 次に、関連するすべてのプロパティを入力します。 アクティビティ ログ アラート ルールを作成するテンプレートを以下に示します。

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "activityLogAlertName": {
      "type": "string",
      "metadata": {
        "description": "Unique name (within the Resource Group) for the Activity log alert."
      }
    },
    "activityLogAlertEnabled": {
      "type": "bool",
      "defaultValue": true,
      "metadata": {
        "description": "Indicates whether or not the alert is enabled."
      }
    },
    "actionGroupResourceId": {
      "type": "string",
      "metadata": {
        "description": "Resource Id for the Action group."
      }
    }
  },
  "resources": [   
    {
      "type": "Microsoft.Insights/activityLogAlerts",
      "apiVersion": "2017-04-01",
      "name": "[parameters('activityLogAlertName')]",      
      "location": "Global",
      "properties": {
        "enabled": "[parameters('activityLogAlertEnabled')]",
        "scopes": [
            "[subscription().id]"
        ],        
        "condition": {
          "allOf": [
            {
              "field": "category",
              "equals": "Administrative"
            },
            {
              "field": "operationName",
              "equals": "Microsoft.Resources/deployments/write"
            },
            {
              "field": "resourceType",
              "equals": "Microsoft.Resources/deployments"
            }
          ]
        },
        "actions": {
          "actionGroups":
          [
            {
              "actionGroupId": "[parameters('actionGroupResourceId')]"
            }
          ]
        }
      }
    }
  ]
}

前述のサンプル JSON は、たとえば sampleActivityLogAlert.json として保存できます。 サンプルは、Azure portal で Azure Resource Manager を使用してデプロイできます。

Note

そのアクティビティ ログ アラートを定義できる最高レベルはサブスクリプション レベルであることに注意してください。 2 つのサブスクリプションに対してアラートを定義するオプションはありません。 定義は、サブスクリプションごとにアラートにする必要があります。

次のフィールドは、Azure Resource Manager テンプレートで条件フィールドに対して使用できるオプションです。 (Resource HealthAdvisor、および Service Health には、特別なフィールドに対して追加のプロパティ フィールドがあることに注意してください)。

  1. resourceId: アラートを生成する必要があるアクティビティ ログ イベントの影響を受けるリソースのリソース ID。
  2. category: アクティビティ ログ イベントのカテゴリ。 例: AdministrativeServiceHealthResourceHealthAutoscaleSecurityRecommendationPolicy
  3. caller: アクティビティ ログ イベントの操作を実行したユーザーのメール アドレスまたは Azure Active Directory 識別子。
  4. level: アラートを生成する必要があるアクティビティ ログ イベントのアクティビティのレベル。 例: CriticalErrorWarningInformationalVerbose
  5. operationName: アクティビティ ログ イベントの操作の名前。 (例: Microsoft.Resources/deployments/write)。
  6. resourceGroup: アクティビティ ログ イベントの影響を受けるリソースのリソース グループの名前。
  7. resourceProvider: 詳細については、「Azure リソース プロバイダーと種類」を参照してください。 リソース プロバイダーを Azure サービスにマップされるリストについては、「Resource providers for Azure services」 (Azure サービスのリソースプロバイダー) を参照してください。
  8. status: アクティビティ イベントの操作の状態を説明する文字列。 例: StartedIn ProgressSucceededFailedActiveResolved
  9. subStatus: 通常、このフィールドは、対応する REST 呼び出しの HTTP 状態コードです。 ただし、サブステータスを記述する他の文字列を含めることもできます。 HTTP 状態コードの例としては、OK (HTTP 状態コード: 200)、No Content (HTTP 状態コード: 204)、Service Unavailable (HTTP 状態コード: 503) などがあります。
  10. resourceType: イベントの影響を受けたリソースの種類。 (例: Microsoft.Resources/deployments)。

次に例を示します。

"condition": {
          "allOf": [
            {
              "field": "category",
              "equals": "Administrative"
            },
            {
              "field": "resourceType",
              "equals": "Microsoft.Resources/deployments"
            }
          ]
        }

アクティビティ ログのフィールドの詳細については、「Azure アクティビティ ログのイベント スキーマ」を参照してください。

Note

新しいアクティビティ ログ アラート ルールがアクティブになるまで最大 5 分かかる場合があります。

REST API

Azure Monitor Activity Log Alerts API は REST API です。 これは、Azure Resource Manager REST API と完全に互換性があります。 Resource Manager コマンドレットまたは Azure CLI を使用すると、PowerShell で使用できます。

注意

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

PowerShell を使用した Resource Manager テンプレートのデプロイ

PowerShell を使用して、前の「Azure Resource Manager テンプレート」セクションで示したサンプル Resource Manager テンプレートをデプロイするには、次のコマンドを使用します。

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile sampleActivityLogAlert.json -TemplateParameterFile sampleActivityLogAlert.parameters.json

sampleActivityLogAlert.parameters.json ファイルには、アラート ルールの作成時に必要とされたパラメーターに指定された値が含まれます。

アクティビティ ログの PowerShell コマンドレットを使用する

アクティビティ ログ アラートでは、専用の PowerShell コマンドレットを使用できます。

  • Set-AzActivityLogAlert:新しいアクティビティ ログ アラートを作成するか、既存のアクティビティ ログ アラートを更新します。
  • Get-AzActivityLogAlert:1 つ以上のアクティビティ ログ アラート リソースを取得します。
  • Enable-AzActivityLogAlert:既存のアクティビティ ログ アラートを有効にし、そのタグを設定します。
  • Disable-AzActivityLogAlert:既存のアクティビティ ログ アラートを無効にし、そのタグを設定します。
  • Remove-AzActivityLogAlert:アクティビティ ログ アラートを削除します。

Azure CLI

az monitor activity-log alert セットの下で専用の Azure CLI コマンドを使用して、アクティビティ ログ アラート ルールを管理できます。

新しいアクティビティ ログ アラート ルールを作成するには、次のコマンドを使用します。

  1. az monitor activity-log alert create:新規のアクティビティ ログ アラート ルールのリソースを作成します。
  2. az monitor activity-log alert scope:作成したアクティビティ ログ アラート ルールのスコープを追加します。
  3. az monitor activity-log alert action-group:アクティビティ ログ アラート ルールにアクション グループを追加します。

1 つのアクティビティ ログ アラート ルールのリソースを取得するには、Azure CLI コマンド az monitor activity-log alert show を使用します。 リソースグループ内のすべてのアクティビティ ログ アラート ルールのリソースを表示するには、az monitor activity-log alert list を使用します。 Azure CLI コマンド az monitor activity-log alert delete を使用して、アクティビティ ログ アラート ルールのリソースを削除できます。

次のステップ