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 delta_gauge(5m))を align オペレーションに指定するか、スライディング タイム ウィンドウが配置された一時的な group_by を使用します。次の例では、sliding オペレーションで group_by を使用しています。

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

デフォルトの group_by ウィンドウ設定はスライドしているため、前のクエリの group_by 式は group_by 5m, mean(val()) と同じです。

条件で、使用率の値がしきい値の 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 つの値が含まれます。

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

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

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

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

Google Cloud Console から MQL ベースのアラート ポリシーを作成するには、アラート ポリシーの管理で説明されている、通常のポリシー作成手順に沿って操作します。アラート ポリシーの条件を作成する場合は、フォームベースの指標セレクタではなく Query Editor を使用します。

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

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

  1. [Untitled Condition] フィールドに値を入力して、条件に名前を付けます。保存すると、条件に数値形式の識別子が割り当てられます。このオプションの表示名には、よりわかりやすい説明を指定できます。

  2. アラート条件を開始するには、Query Editor でモニタリングするデータを選択するクエリを入力します。次のクエリは、時系列を取得して 5 分間の時間枠に配置します。

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    

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

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

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

    • condition 演算子。しきい値アラートに使用します。
    • 不在アラートの absent_for 演算子。

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

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

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    | condition val() > .05
    

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

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

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

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

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

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

  6. [Add] をクリックして、条件を保存します。アラート ポリシーの条件のクエリは厳密な形式に変換されません。

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

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

API を使用する場合は、ポリシーを設定するときに MonitoringQueryLanguageCondition 型の条件を作成します。詳細については、アラート ポリシーの条件の作成をご覧ください。

次に、ポリシーを通常どおり alertPolicies.create に渡します。