MQL のアラート ポリシー

条件に MQL クエリが含まれている Monitoring アラート ポリシーを作成できます。アラートの条件の MQL クエリも他の MQL クエリと似ていますが、MQL アラート オペレーションも含んでいる点が異なります。

このページでは、MQL アラート オペレーションの概要と、それらを使用するアラート ポリシーを作成する方法について説明します。Monitoring アラート ポリシーの概要については、アラートの動作をご覧ください。

MQL アラート オペレーション

MQL では、しきい値のアラート ポリシーと不在のアラート ポリシーの両方を作成できます。

クエリで次のいずれかの MQL アラート オペレーションを使用して、MQL ベースのアラート ポリシーを作成します。

  • しきい値のアラートのための condition オペレーション。
  • 不在のアラートのための absent_for オペレーション。

クエリは、次のいずれかのオペレーションで終了する必要があります。詳細については、MQL リファレンスの [アラート] セクションをご覧ください。

クエリに、明示的な期間指定、つまり within オペレーションを含めないようにしてください。

MQL を使用してアラート ポリシーを作成する場合は、fetchfiltergroup_by などを使用して MQL クエリを作成し、ターゲットの時系列を特定します。クエリのこの部分は、グラフの時系列データの取得に使用するクエリと同じです。たとえば、次のクエリは、米国中部リージョンのすべての Compute Engine VM インスタンスの CPU 使用率を取得するものです。

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'

このクエリでは、出力テーブルが生成されます。アラートを作成するには、出力テーブルをアラート オペレーションに連結します。アラート オペレーションでは、アラート オペレーションより前のクエリによって生成される出力テーブルのデータ値のブール値を計算します。

アラート オペレーションでは、入力テーブルのデータを評価するための式を指定します。しきい値条件の場合、式で「0.5 未満かどうか」のようなしきい値に照らして各ポイントをテストします。

Monitoring のアラート機能は、アラート オペレーションの結果を使用して、アラート ポリシーがトリガーされるかどうかとタイミングを決定します。アラートの構成では、決定の方法を説明しています。

しきい値のアラート

しきい値のアラートには、condition オペレーションを使用します。条件オペレーションでは、「値が 15 パーセントより大きい」のようなしきい値に照らして値を評価し、ブール値を返します。

condition オペレーションでは、入力テーブルを明示的なアライメント ウィンドウに合わせる必要があります。そのためには、align オペレーション(たとえば、align delta(5m))に対してアライメント ウィンドウを指定するか、次の例に示すように、window オペレーションを使用します。

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| window 5m
| condition val() > .15 '10^2.%'

条件で、使用率の値がしきい値の 15% を超えているかどうか判断するために、アライメントされた入力テーブルの各データポイントをテストします。condition 演算子によって生成されるテーブルには、しきい値の評価結果を記録するブール値列と、入力テーブルからの utilization 値のコピーが含まれる列の 2 つの列があります。

CPU 使用率の値は、小数の使用率として保存されます。値の範囲は 0.0~1.0 です。指標記述子では、これらの値の単位が 10^2.% として指定され、グラフではパーセンテージで表示されます。しきい値の単位には互換性が必要であるため、しきい値を .15 '10^2.% として表現します。

指標タイプの単位については、関連する指標タイプの表をご覧ください。指標タイプ compute.googleapis.com/instance/cpu/utilization については、compute の表をご覧ください。

MQL の単位の詳細については、測定単位をご覧ください。

不在のアラート

不在のアラートの場合は、absent_for オペレーションを使用します。このオペレーションでは、データが欠落している期間を使用します。たとえば、次のテストでは、米国中部ゾーンから 8 時間分のデータが欠落しているかどうかをテストします。

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| absent_for 8h

absent_for オペレーションでは、条件を満たすためにデータが欠落している時間の長さを示す duration 引数のみを使用します。

データが過去 24 時間以内に出現したものの、期間(この例では過去 8 時間)内には欠落している場合は、データが不在と見なされます。

absent_for クエリでは、デフォルトのアライメント、または absent_for オペレーションの後に every オペレーションを使用して、値が整列された出力テーブルを作成します。

出力テーブルには 2 つの列があります。

  • 1 つは、データが存在しない場合のブール値の結果を記録する active 列です。true 値は、過去 24 時間に入力ポイントがあり、期間内には入力ポイントがなかったことを意味します。

  • 2 番目の列は signal 列です。入力テーブルに値列がある場合、signal 列には最新の入力ポイントの最初の値列の値が含まれます。入力テーブルに値列がない場合、signal 列には最後の入力ポイントが記録されてからの分数が格納されます。次の例に示すように、このケースを簡単に適用できます。

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | absent_for 8h
    

    前の例では、value [] オペレーションで入力テーブルから値列が削除されるため、absent_for オペレーションによって作成されたテーブルの signal 列には最後の入力ポイントが記録されてからの分数が格納されます。

アラートの構成

MQL クエリに加えて、アラート ポリシーの条件には他の 2 つの値も含まれます。

  • 条件を満たす必要のある入力時系列の数。この値は、次のいずれかになります。
    • 単一の時系列。
    • 特定の数の時系列。
    • 時系列の割合。
    • すべての時系列。
  • アラート状態の期間、つまりアラート条件が継続的に true に評価される期間。

アラートクエリで、特定の時系列で継続的に true に評価されると、その時系列はアクティブになります。指定した時系列がアクティブになるとアラート ポリシーがトリガーされ、アクティブな時系列ごとにアラートが生成されます。アラート ポリシーの評価方法の詳細については、アラートの動作をご覧ください。

MQL を条件で使用する場合、その条件がポリシー内の唯一の条件になっている必要があります。MQL ベースのアラート ポリシーでは複数の条件を使用できません。

MQL アラート ポリシーの作成(コンソール)

Google Cloud Console から MQL ベースのアラート ポリシーを作成するには、アラート ポリシーの管理で説明されている通常の手順でポリシーを作成します。アラート ポリシーの条件を作成するときは、フォームベースの指標セレクタの代わりにクエリエディタを使用します。

MQL ベースのアラート ポリシーの条件エディタ。

次のように条件を入力します。

  1. [無題条件] フィールドに値を入力します。保存すると、条件に数値 ID が割り当てられます。このオプションの表示名は、よりわかりやすい説明を提供できます。

  2. アラートの条件を開始するには、クエリエディタでモニタリングするデータを選択するクエリを入力します。次のクエリは、時系列を取得し、5 分間のウィンドウに揃えます。

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | window 5m
    

    この時点で [Run Query] をクリックすると、グラフが表示されます。1 つのプロジェクトでこのクエリを実行すると、次の結果が生成されます。

    アラートを指定する前のアラートの条件のグラフ。

  3. 次のいずれかのオペレーションを使用して、クエリにアラート句を追加します。

    • しきい値アラートの condition 演算子。
    • 不在アラートの absent_for 演算子。

    これらのアラート オペレーションの詳細については、MQL リファレンスのアラートをご覧ください。

    次の例では、condition オペレーションを使用してしきい値を指定しています。

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | window 5m
    | condition val() > .15
    

    この時点で [Run Query] をクリックすると、次のスクリーンショットに示すように、グラフに条件のしきい値行が追加されます。

    アラートを指定した後のアラートの条件からのグラフ。

  4. まだクエリを実行していない場合は、[Run Query] をクリックします。

  5. [Configuration] ペインで、アラート ポリシーがトリガーされるタイミングを指定します。次の 2 つの値を指定します。

    • [Condition triggers if] では、アラート ポリシーをトリガーするまでに、アラート オペレーションを満たす必要があるクエリによって返される時系列の数を指定できます。指定できる条件は次のとおりです。

      • 単一の時系列。
      • 特定の数の時系列。
      • 時系列の割合。
      • すべての時系列。
    • [For] では、アラート ポリシーのトリガーに必要な、条件が満たされていなければならない期間を指定できます。これは、MQL クエリで使用されるアライメント ウィンドウとは異なります。これらの値間の関係の詳細については、アライメント期間と継続時間をご覧ください。

  6. [Add] をクリックして、条件を保存します。保存時にアラート条件が厳密なフォームに変換されることを通知するダイアログ ボックスが表示されます。[Save] をクリックしてクエリを保存するか、[Cancel] をクリックして編集を続行します。

  7. 残りのアラート ポリシーの構成に進みます。

MQL アラート ポリシーの作成(API)

API を使用する場合は、ポリシーの設定時にタイプ MonitoringQueryLanguageCondition の条件を作成します。次に、通常どおり alertPolicies.create にポリシーを渡します。詳細については、アラート ポリシーの条件をご覧ください。