アラート ポリシーを使用して SQL クエリの結果をモニタリングする

このドキュメントでは、オブザーバビリティ分析で実行したクエリの結果をモニタリングするアラート ポリシーを作成する方法について説明します。これらのクエリは SQL で記述され、_AllSpans という名前のオブザーバビリティ ビューに対してクエリを実行する必要があります。アラート ポリシーは、クエリ結果が指定した条件を満たしたときに通知します。

[オブザーバビリティ分析] ページから作成したアラート ポリシーは、BigQuery エンジンで実行されます。したがって、クエリ対象のデータには、 リンクされた BigQuery データセットからアクセスできる必要があります。

オブザーバビリティ分析の概要については、 オブザーバビリティ分析でトレースのクエリと分析を行うをご覧ください。

アラート ポリシーの仕組み

アラート ポリシーでは、アラートを受け取る状況とインシデントの通知方法を記述します。トレースデータにコンテンツやパターンが検出されたときに通知を受け取るには、次の方法があります。

  • 1 か月あたりの Cloud Trace 取り込みスパン数、割り当て使用量、スパン取り込み率をモニタリングするには、Cloud Monitoring でアラート ポリシーを作成します。アラート ポリシーを作成したことがない場合は、 アラート ポリシーを作成する で Cloud Monitoring コンソールに関する詳細をご覧ください。

  • 個々のトレースやスパンを表示または調査したり、スパンにアタッチされている属性を表示したりするには、[Trace エクスプローラ] ページを使用します。このページの詳細については、トレースを検索して調査するをご覧ください。

  • トレースデータの集計分析をモニタリングするには、オブザーバビリティ分析とアラート ポリシーを組み合わせます。このシナリオでは、SQL クエリを使用して、_Trace という名前のオブザーバビリティ バケットの _AllSpans ビューに対してクエリを実行します。最後に、SQL クエリの結果をモニタリングするアラート ポリシーを作成します。このタイプのアラート ポリシーは、SQL ベースのアラート ポリシーと呼ばれます。

    トレースデータの保存方法について詳しくは、 ストレージの概要をご覧ください。

    このドキュメントの残りの部分では、SQL ベースのアラート ポリシーの使用方法について説明します。

通知ポリシーのコンポーネント

SQL ベースのアラート ポリシーには、条件とスケジュールが含まれます。

  • 条件には、データにクエリを実行する SQL クエリであるクエリが含まれます。この条件では、クエリ結果が原因で Monitoring がインシデントを作成する状況も定義します。

  • スケジュールは、アラート ポリシーがクエリを実行する頻度を定義します。 スケジュールでは、ルックバック ウィンドウのサイズも定義します。これは、クエリが前回評価されてから受信されたデータのみを選択するフィルタです。たとえば、スケジュールを 60 分に設定すると、クエリは 60 分ごとに実行され、直近 60 分間のデータを選択するルックバック ウィンドウが使用されます。

アラート ポリシーには、 通知チャネルのリストも含まれています。 アラート ポリシーの条件が満たされると、Cloud Monitoring はインシデントを作成し、これらのチャネルを通じてインシデントに関する通知を送信します。インシデントは、条件が満たされた原因となったデータとその他の関連情報を記録したものです。この情報は、インシデントの原因となった問題のトラブルシューティングに役立ちます。インシデントは、 Google Cloud  コンソールを使用して表示できます。

SQL ベースのアラート ポリシーの評価タイプ

SQL クエリの結果をモニタリングする条件は、次の 2 種類の評価をサポートしています。

  • 行数しきい値: クエリ結果の行数がしきい値の値より大きい場合、または同じか小さい場合に条件が満たされます。

  • ブール値: クエリ結果テーブルの特定のブール列に true の値を持つ行が含まれている場合、条件が満たされます。

SQL クエリの結果をモニタリングするアラート ポリシーに含めることができる条件は 1 つだけです。

アラート ポリシーと BigQuery

アラート ポリシーでトレースデータにクエリを実行するには、 リンクされた BigQuery データセットを構成する必要があります。 リンクされたデータセットを使用すると、BigQuery はトレースデータを読み取り、SQL クエリから返されたデータに対して BigQuery 関数を実行できます。

アラート ポリシーが SQL クエリを実行すると、そのクエリは、アラート ポリシーが定義されている プロジェクトの Google Cloud BigQuery エンジンで実行されます。デフォルトでは、BigQuery エンジンで実行されるクエリはオンデマンドのスロットを使用します。オンデマンド スロットと 予約スロットには、 BigQuery の料金が適用されます

プロジェクトの専用 BigQuery スロット予約を構成することもできます。

  1. 専用スロットを使用して予約を作成するか、 既存の予約を特定します。
  2. プロジェクトの予約割り当てを作成します

ルックバック ウィンドウとインシデントの伝播時間

アラート ポリシーの条件の評価がスケジュールされている場合、オブザーバビリティ分析は SQL クエリの実行を 5 分遅らせます。これは、Cloud Logging がルックバック ウィンドウ中に受信したデータをインデックスに登録する時間を確保するためです。 たとえば、アラート ポリシーで午後 2 時に終了するルックバック ウィンドウを使用している場合、オブザーバビリティ分析は午後 2 時 5 分まで SQL クエリを実行しません。

クエリの実行後にアラート条件が満たされた場合、インシデントがシステム全体に伝播するまでさらに最大 2 分かかることがあります。

クエリの失敗数

SQL ベースのアラート ポリシーによって発行されたクエリは、次のようなさまざまな理由で失敗することがあります。

  • Monitoring サービス アカウントが存在しなくなったか、クエリ対象のトレースデータを読み取る権限がなくなった。

  • クエリの実行時間が 5 分を超えている。

  • 内部エラーが発生する。

クエリが失敗すると、アラート ポリシー ID とエラー ステータスを含むログエントリが生成されます。ログベースの アラート ポリシーを使用して、エラーがログに記録されたときに アラートを作成できます。

始める前に

このセクションでは、トレースデータのリンクされた BigQuery データセットがあることを前提としています

SQL ベースのアラート ポリシーを作成する前に、次の手順を行います。

  1. トレースデータにクエリを実行して SQL ベースのアラート ポリシーを作成するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  2. Monitoring サービス アカウントが存在し、次のロールが付与されていることを確認します。

    1. プロジェクトに対する Monitoring サービス エージェント(roles/monitoring.notificationServiceAgent
    2. リンクされたデータセットに対する BigQuery データ閲覧者(roles/bigquery.dataViewer

    Monitoring サービス アカウントが存在しない場合は、 トラブルシューティング: Monitoring サービス アカウントがないをご覧ください。

  3. インシデントの通知の受信に使用する通知チャンネルを構成します。冗長性を確保するために、複数のタイプの通知チャンネルを作成することをおすすめします。詳細については、通知チャンネルを作成して管理するをご覧ください。

SQL ベースのアラート ポリシーを作成する

SQL ベースのアラート ポリシーを作成するには、次の操作を行います。

Google Cloud コンソール

  1. コンソールで、 [ログ分析] ページに移動します。 Google Cloud

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [オブザーバビリティ分析] ページのクエリエディタで、トレースデータにクエリを実行する SQL クエリを入力します。

  3. ツールバーで [BigQuery で実行] をクリックします。

    オブザーバビリティ分析は BigQuery エンジンでクエリを実行し、結果を [結果] テーブルに表示します。

    If [Run on BigQuery] isn't shown, then click [Select query engine] and then click [BigQuery].[クエリを実行] ボタンが [BigQuery で実行] に変わります。

  4. [オブザーバビリティ分析] ページの [結果] 表で、  [アラートを作成] をクリックします。

    [オブザーバビリティ分析] ページに [SQL アラート ポリシーを作成] ウィンドウが表示されます。[SQL クエリ] セクションにクエリが表示されます。

  5. [アラート条件] セクションで、アラート ポリシーの条件とスケジュールを構成します。

  6. アラート ポリシーのアラートの詳細を構成します。

    1. 通知チャンネル を追加し、カスタムの件名など、通知コンテンツを構成します。

    2. 省略可: アラート ポリシーのラベルドキュメントを追加します。

    3. [次へ] をクリックします。

  7. アラート ポリシーを確認し、[保存] をクリックして作成します。

Cloud Monitoring API

alertPolicies.create メソッドを使用して、アラート ポリシーをプログラムで作成します。アラート ポリシーの Condition タイプは MonitoringQueryLanguageConditionにする必要があります。これは SqlConditionのインスタンスです。 この条件タイプを使用すると、アラート ポリシーの条件を SQL で定義できます。

スケジュールを定義するには、minuteshours、または days フィールドのいずれかに periodicity 値を設定します。たとえば、クエリを 12 時間ごとに実行する場合は、hours フィールドの周期を 12 に設定します。

条件を定義するには、次のフィールドを使用します。

  • boolean_test: クエリ結果テーブルのブール列の行に true 値が含まれている場合に条件が満たされるようにアラート ポリシーを構成します。
  • row_count_test: クエリ結果テーブルの行数が特定のしきい値に達したときに条件が満たされるように、アラート ポリシーを構成します。

フィールドと定義の一覧については、Cloud Monitoring API ドキュメントの SqlCondition をご覧ください。

アラート ポリシー用の Monitoring API の詳細については、API によるアラート ポリシーの管理をご覧ください。

Terraform

  1. プロジェクトに Terraform をインストールして構成します。App Hub の構成には、App Hub ホスト プロジェクトまたは管理プロジェクトを選択します。

  2. Cloud Shell で、Terraform 構成を含むディレクトリに移動します。

  3. Terraform 構成で、google_monitoring_alert_policy リソースのインスタンスを構成します(condition_sql など)。

  4. Cloud Shell で、「terraform apply」と入力します。

アラート ポリシーを変更するには、Terraform の構成を編集して再適用します。詳細については、Terraform でアラート ポリシーを作成するをご覧ください。

Terraform で Google Cloud を使用する場合の一般的な情報については、 Google Cloudでの Terraform をご覧ください。

制限事項

  • SQL ベースのアラート ポリシーごとに 1 つの条件を設定できます。
  • SQL ベースのアラート ポリシーによって発行されたクエリは、実行時間が 5 分を超えると失敗します。

  • クエリのスケジュール設定からインシデントの作成までには、最大 7 分の遅延とクエリの実行時間がかかります。

アラート ポリシーに関連付けられている上限の一覧については、 モニタリングの上限をご覧ください。

次のステップ