SQL ベースのアラート ポリシーのインシデント

インシデントは、アラート ポリシーの条件を満たしたタイミングの記録です。通常、アラート ポリシーの条件を満たすと、Cloud Monitoring はインシデントを開き、通知を送信します。ただし、次のような状況ではインシデントは作成されません。

  • ポリシーがスヌーズされているか、無効になっている。
  • アラート ポリシーまたはインシデントの数が、既存のアラートの上限を超えている。

Monitoring は、インシデントごとに [インシデントの詳細] ページを作成します。このページでは、インシデントを管理できるほか、障害のトラブルシューティングに役立つインシデント情報が報告されます。たとえば、[インシデントの詳細] ページには、SQL クエリ結果の概要と関連するインシデントのリストが表示されます。

このドキュメントでは、インシデントを検索する方法について説明します。また、[インシデントの詳細] ページを使用して、ログエントリのグループのデータに対して実行された SQL クエリの結果を評価する SQL ベースのアラート ポリシーのインシデントを管理する方法についても説明します。

この機能は Google Cloud プロジェクトでのみサポートされています。App Hub の構成には、App Hub ホスト プロジェクトまたは管理プロジェクトを選択します。

始める前に

インシデントの表示と管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Cloud Monitoring のロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。

インシデントを表示

プロジェクトのインシデントを表示するには、 Google Cloud コンソール、gcloud CLI(一般提供)、または Monitoring API(一般提供)を使用します。

Google Cloud コンソール

Google Cloud プロジェクトのインシデントを一覧表示する手順は次のとおりです。

  1. Google Cloud コンソールで、[ アラート] ページに移動します。

    [アラート] に移動

    このページを検索バーで検索する場合は、小見出しが「Monitoring」の結果を選択します。

  2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub の構成には、App Hub ホスト プロジェクトまたは管理プロジェクトを選択します。

    [アラート] ページには、アラート ポリシー、スヌーズ、インシデントに関する情報が表示されます。

    • [概要] ペインには、開かれているインシデントの数が一覧表示されます。
    • [インシデント] テーブルには、最新の対応待ちインシデントが表示されます。クローズされたインシデントを含め、テーブル内の最新のインシデントを一覧表示するには、[対応済みのインシデントを表示] をクリックします。
  3. 特定のインシデントの詳細を表示するには、リスト内のインシデントを選択します。

    [インシデントの詳細] ページが開きます。[インシデントの詳細] ページの詳細については、このドキュメントのインシデントを調査するセクションをご覧ください。

古いインシデントを見つける

[アラート] ページの [インシデント] テーブルに、最新の対応待ちのインシデントが表示されます。古いインシデントを表示するには、次のいずれかを行います。

  • [インシデント] テーブルで [ ] または [ それ以前] をクリックし、ページを切り替えてエントリを確認します。

  • インシデントを一覧表示してフィルタできるページを開くには、[すべてのインシデントを表示] をクリックします。[インシデント] ページが開きます。そのページで、次の操作を行います。

    • クローズしたインシデントを含むすべてのインシデントを表示します。すべてのインシデントを表示するには、[クローズしたインシデントを表示] をクリックします。
    • インシデントをフィルタします。フィルタの追加については、インシデントをフィルタするをご覧ください。
    • インシデントを確認またはクローズするか、アラート ポリシーをスヌーズする。これらのオプションにアクセスするには、インシデントの行で [その他のオプション] をクリックし、メニューから項目を選択します。詳細については、インシデントを管理するをご覧ください。

インシデントのフィルタ

テーブルに表示されるインシデントを制限するには、フィルタを追加します。複数のフィルタを追加すると、すべてのフィルタを満たすインシデントのみがテーブルに表示されます。

インシデントのテーブルをフィルタするには、次の操作を行います。

  1. [インシデント] ページで [ テーブルをフィルタリング] をクリックし、フィルタ プロパティを選択します。フィルタ プロパティには、次のものが含まれます。

    • インシデントの状態
    • アラート ポリシーの名前
    • インシデントの開始日、終了日
  2. サブメニューの値を選択するか、フィルタバーに値を入力します。

    [インシデント] テーブルにフィルタが一覧表示されます。

gcloud

gcloud を使用して、インシデントを取得したり、インシデントを一覧表示したりできます。

インシデントを取得する

後述のコマンドデータを使用する前に、次のように置き換えます。

  • ALERT_NAME: アラートのリソース名。例: projects/my-project/alerts/my-alert-id

gcloud alpha monitoring alerts describe コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud alpha monitoring alerts describe ALERT_NAME

Windows(PowerShell)

gcloud alpha monitoring alerts describe ALERT_NAME

Windows(cmd.exe)

gcloud alpha monitoring alerts describe ALERT_NAME
このコマンドは、アラートの状態、関連付けられたラベル、ソース アラート ポリシーなどのアラートの詳細を含むレスポンスを返します。この機能がプレビュー版である間は、レスポンスのラベルは変更される可能性があります。レスポンスは次のようになります。
{
  "name": "projects/my-project/alerts/my-alert-id",
  "state": "OPEN",
  "open_time": "2025-06-11T09:53:46Z",
  "resource": {
    "type": "sql_alert"
  },
  "policy": {
    "name": "projects/my-project/alertPolicies/POLICY_1",
    "displayName": "test-policy"
  },
  "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
}

インシデントの一覧を取得する

gcloud CLI を使用して、プロジェクトのインシデントを一覧表示し、結果をフィルタリングできます。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。

gcloud alpha monitoring alerts list コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud alpha monitoring alerts list

Windows(PowerShell)

gcloud alpha monitoring alerts list

Windows(cmd.exe)

gcloud alpha monitoring alerts list
このコマンドは、アラートの状態、関連付けられたラベル、ソース アラート ポリシーなどのアラートの詳細を含むレスポンスを返します。この機能がプレビュー版である間は、レスポンスのラベルは変更される可能性があります。レスポンスは次のようになります。
{
  "alerts": [
    {
      "name": "projects/my-project/alerts/my-alert-id",
      "state": "OPEN",
      "open_time": "2025-06-11T09:53:46Z",
      "resource": {
        "type": "sql_alert"
      },
      "policy": {
        "name": "projects/my-project/alertPolicies/POLICY_1",
        "displayName": "test-policy"
      },
      "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
    }
  ]
}
次のオプション フラグを使用して、出力をフィルタ、並べ替え、変更することもできます。
  • --filter: フィルタ式を指定して、時間またはラベルでアラートをフィルタします。たとえば、--filter='close_time>="2025-09-10T00:00:00Z"' で時間でフィルタしたり、--filter='resource.labels.key="value"' でラベルでフィルタしたりします。

  • --sort-by: 出力を並べ替えるフィールドのカンマ区切りのリスト。例: --sort-by=open_time

  • --uri: コマンドは、デフォルトの出力ではなく、リソース URI のリストを出力します。

  • --limit: 返されるアラートの数を制限するには、このフラグを 2 以上に設定します。このフラグは --filter フラグと組み合わせて使用しないでください。

Monitoring API

Monitoring API を使用して、インシデントを取得し、インシデントを一覧表示できます。

インシデントを取得する

Monitoring API で単一のインシデントの詳細を取得するには、alerts.get メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • ALERT_ID: アラートの ID。

HTTP メソッドと URL:

GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alerts/ALERT_ID

リクエストを送信するには、次のいずれかのオプションを展開します。

このコマンドは、アラートの状態、関連付けられたラベル、ソース アラート ポリシーなどのアラートの詳細を含むレスポンスを返します。この機能がプレビュー版である間は、レスポンスのラベルは変更される可能性があります。レスポンスは次のようになります。
{
  "name": "projects/my-project/alerts/my-alert-id",
  "state": "OPEN",
  "open_time": "2025-06-11T09:53:46Z",
  "resource": {
    "type": "sql_alert"
  },
  "policy": {
    "name": "projects/my-project/alertPolicies/POLICY_1",
    "displayName": "test-policy"
  },
  "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
}

インシデントの一覧を取得する

プロジェクト内のインシデントを一覧表示し、Monitoring API で結果をフィルタするには、alerts.list メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。

HTTP メソッドと URL:

GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alerts

リクエストを送信するには、次のいずれかのオプションを展開します。

このコマンドは、アラートの状態、関連付けられたラベル、ソース アラート ポリシーなどのアラートの詳細を含むレスポンスを返します。この機能がプレビュー版である間は、レスポンスのラベルは変更される可能性があります。レスポンスは次のようになります。
{
  "alerts": [
    {
      "name": "projects/my-project/alerts/my-alert-id",
      "state": "OPEN",
      "open_time": "2025-06-11T09:53:46Z",
      "resource": {
        "type": "sql_alert"
      },
      "policy": {
        "name": "projects/my-project/alertPolicies/POLICY_1",
        "displayName": "test-policy"
      },
      "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
    }
  ]
}
Curl ユーザーは、--data-urlencode フラグの後にフィルタ式を追加して、時間またはラベルでアラートをフィルタできます。次の例をご覧ください。

過去 1 時間以内に開かれたアラートを一覧表示します。

--data-urlencode "filter=(open_time>=\"`date -u -d "1 hour ago" +"%Y-%m-%dT%H:%M:%SZ"`\")"

過去 1 日間にオープンしたアラートを一覧表示してフィルタします。

--data-urlencode "filter=(open_time>=\"`date -u -d "1 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\" AND state=open)"

2 つの期間の間にオープンされたアラートを一覧表示してフィルタします。

--data-urlencode "filter=(open_time>=\"`date -u -d "2 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\" AND open_time<=\"`date -u -d "1 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\")"

ユーザーラベルでアラートを一覧表示してフィルタします。この例では、名前が app で値が my-gke-app のユーザーラベルでフィルタします。

--data-urlencode "filter=(policy.user_labels.app=\"my-gke-app\")"
Powershell ユーザーは、次の例を使用して、リクエスト URL に時間ベースのフィルタを追加できます。
$baseUrl = "https://monitoring.googleapis.com/v3/projects/my-project/alerts"
$filterValue = (Get-Date).AddHours(-1).ToString("yyyy-MM-ddTHH:mm:ssZ")
$filter = 'open_time >= "' + $filterValue + '"'
$encodedFilter = [System.Uri]::EscapeDataString($filter)
$url = $baseUrl + "?filter=" + $encodedFilter

インシデントを調査する

[インシデントの詳細] ページには、インシデントの原因を特定する際に役立つ情報が表示されます。

クエリ結果を調べる

[Total slot time consumed per day] ペインには、過去 24 時間に予約済みの BigQuery スロットでアラート ポリシーの SQL クエリの実行に費やされた時間が表示されます。

[SQL query results] ペインには、ログ分析がアラート ポリシーの条件から SQL クエリを実行したクエリ結果の概要のリストが表示されます。デフォルトでは、アラート ポリシーの条件に一致するクエリのみが表示されるようにリストがフィルタされます。

  • ログ分析がクエリを実行した特定の時点のクエリとクエリ結果のテーブルを表示するには、[クエリ実行時刻] 列の値をクリックします。
  • アラート ポリシーの条件に一致するクエリ結果のみを表示するか、ログ分析がアラート ポリシーから実行したすべてのクエリを表示するかを切り替えるには、[Show only queries matching alert conditions] をクリックします。

補足情報を表示する

[ドキュメント] セクションには、アラート ポリシーの作成時に指定した通知のドキュメント テンプレートが表示されます。この情報には、アラート ポリシーがモニタリングする内容の説明と、対策のヒントを含めることができます。詳細については、ユーザー定義のドキュメントで通知にアノテーションを付けるをご覧ください。

アラート ポリシーのドキュメントを構成しなかった場合、[ドキュメント] ペインには「ドキュメントが構成されていません」と表示されます。

アプリケーション全体の根本的な問題を特定するには、他のアラート ポリシーの条件に関連するインシデントを調べます。

[Related Incidents] セクションには、アラート ポリシーの条件が満たされたときに作成された他のインシデントのリストが表示されます。

インシデントを管理する

インシデントは次のいずれかの状態になります。

  •  対応待ち: SQL ベースのアラート ポリシーの条件が満たされましたが、インシデントは対応待ちです。同じ条件が再度満たされても、インシデントがすでに開いている場合、新しいインシデントは開きません。

  •  確認済み: インシデントが開かれていて、手動で確認済みとしてマークされています。通常、このステータスは、そのインシデントが調査中であることを示します。

  •  クローズ済み: インシデントを手動でクローズしたか、自動クローズ期間が終了した後に自動的にクローズされました。

インシデントを確認する

インシデントの原因調査を開始するときは、インシデントに確認済みのマークを付けることをおすすめします。

インシデントに確認済みのマークを付けるには、次の操作を行います。

  1. [アラート] ページの [インシデント] テーブルで、[すべてのインシデントを表示] をクリックします。
  2. [インシデント] ページで、確認するインシデントを見つけて、次のいずれかを行います。

    • その他のオプション)をクリックし、[確認] を選択します。
    • インシデントの詳細ページを開いて、[インシデントを確認する] をクリックします。

アラート ポリシーをスヌーズする

特定の期間中に Monitoring でインシデントが作成されて通知が送信されないようにするには、関連するアラート ポリシーをスヌーズします。アラート ポリシーをスヌーズすると、そのアラート ポリシーに関連するインシデントは開かれたままになりますが、それ以上の通知は発生しません。インシデントは、アラート ポリシーの自動クローズ期間に基づいてクローズされます。

表示しているインシデントのスヌーズを作成するには、次の操作を行います。

  1. [インシデントの詳細] ページで、[ポリシーをスヌーズ] をクリックします。

  2. スヌーズ期間を選択します。スヌーズ期間を指定すると、スヌーズがすぐに開始されます。

[インシデント] ページから、スヌーズするインシデントを見つけて その他のオプション)をクリックし、[スヌーズ] を選択して、アラート ポリシーをスヌーズすることもできます。サービス停止中はアラート ポリシーをスヌーズして、トラブルシューティング プロセス中に通知が届かないようにすることができます。

インシデントをクローズする

Monitoring でインシデントをクローズすることも、ユーザーがインシデントをクローズすることもできます。

アラート ポリシーの自動クローズ期間が終了すると、Monitoring によってインシデントが自動的にクローズされます。デフォルトの自動クローズ期間は 7 日間です。自動クローズ期間は最短 30 分です。

自動クローズ期間には、インシデントの原因が再発しない状態で経過する必要がある時間を指定します。このため、インシデントが開かれている間にその原因が再発した場合、インシデントは自動クローズ期間よりも長く開かれたままになる可能性があります。

インシデントをクローズする手順は次のとおりです。

  1. [アラート] ページの [インシデント] テーブルで、[すべてのインシデントを表示] をクリックします。
  2. [インシデント] ページで、クローズするインシデントを見つけて、次のいずれかを行います。

    • もっと見る)をクリックし、[インシデントを閉じる] を選択します。
    • そのインシデントの [インシデントの詳細] ページを開き、[インシデントを閉じる] をクリックします。

メッセージ「Unable to close incident」が表示された場合は、数分後にもう一度お試しください。インシデントの原因となった条件はアラート システムによって引き続き有効であるとみなされるため、新しいインシデントを直ちにクローズすることはできません。

データの保持と上限

インシデントの制限と保持期間の詳細については、アラートの上限をご覧ください。

次のステップ