条件に MQL クエリが含まれている Monitoring アラート ポリシーを作成できます。アラートの条件の MQL クエリも他の MQL クエリと似ていますが、MQL アラート オペレーションも含んでいる点が異なります。
このページでは、MQL アラート オペレーションの概要と、それらを使用するアラート ポリシーを作成する方法について説明します。Monitoring アラート ポリシーの概要については、アラートの動作をご覧ください。
MQL アラート オペレーション
MQL では、しきい値のアラート ポリシーと不在のアラート ポリシーの両方を作成できます。
クエリで次のいずれかの MQL アラート オペレーションを使用して、MQL ベースのアラート ポリシーを作成します。
- しきい値のアラートのための
condition
オペレーション。 - 不在のアラートのための
absent_for
オペレーション。
クエリは、次のいずれかのオペレーションで終了する必要があります。詳細については、MQL リファレンスの [アラート] セクションをご覧ください。
クエリに、明示的な期間指定、つまり within
オペレーションを含めないようにしてください。
MQL を使用してアラート ポリシーを作成する場合は、fetch
、filter
、group_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 ベースのアラート ポリシーを作成するには、アラート ポリシーの管理で説明されている通常の手順でポリシーを作成します。アラート ポリシーの条件を作成するときは、フォームベースの指標セレクタの代わりにクエリエディタを使用します。
次のように条件を入力します。
[無題条件] フィールドに値を入力します。保存すると、条件に数値 ID が割り当てられます。このオプションの表示名は、よりわかりやすい説明を提供できます。
アラートの条件を開始するには、クエリエディタでモニタリングするデータを選択するクエリを入力します。次のクエリは、時系列を取得し、5 分間のウィンドウに揃えます。
fetch gce_instance::compute.googleapis.com/instance/cpu/utilization | window 5m
この時点で [Run Query] をクリックすると、グラフが表示されます。1 つのプロジェクトでこのクエリを実行すると、次の結果が生成されます。
次のいずれかのオペレーションを使用して、クエリにアラート句を追加します。
- しきい値アラートの
condition
演算子。 - 不在アラートの
absent_for
演算子。
これらのアラート オペレーションの詳細については、MQL リファレンスのアラートをご覧ください。
次の例では、
condition
オペレーションを使用してしきい値を指定しています。fetch gce_instance::compute.googleapis.com/instance/cpu/utilization | window 5m | condition val() > .15
この時点で [Run Query] をクリックすると、次のスクリーンショットに示すように、グラフに条件のしきい値行が追加されます。
- しきい値アラートの
まだクエリを実行していない場合は、[Run Query] をクリックします。
[Configuration] ペインで、アラート ポリシーがトリガーされるタイミングを指定します。次の 2 つの値を指定します。
[Condition triggers if] では、アラート ポリシーをトリガーするまでに、アラート オペレーションを満たす必要があるクエリによって返される時系列の数を指定できます。指定できる条件は次のとおりです。
- 単一の時系列。
- 特定の数の時系列。
- 時系列の割合。
- すべての時系列。
[For] では、アラート ポリシーのトリガーに必要な、条件が満たされていなければならない期間を指定できます。これは、MQL クエリで使用されるアライメント ウィンドウとは異なります。これらの値間の関係の詳細については、アライメント期間と継続時間をご覧ください。
[Add] をクリックして、条件を保存します。保存時にアラート条件が厳密なフォームに変換されることを通知するダイアログ ボックスが表示されます。[Save] をクリックしてクエリを保存するか、[Cancel] をクリックして編集を続行します。
残りのアラート ポリシーの構成に進みます。
MQL アラート ポリシーの作成(API)
API を使用する場合は、ポリシーの設定時にタイプ MonitoringQueryLanguageCondition
の条件を作成します。次に、通常どおり alertPolicies.create
にポリシーを渡します。詳細については、アラート ポリシーの条件をご覧ください。