MQL アラートのユースケース

Monitoring Query Language(MQL)ベースの条件が設定されたアラート ポリシーを使用すると、考えられる多くのユースケースでアラート環境を構成できます。一部の構成は、MQL クエリを使用する場合のみ利用できます。

このドキュメントでは、本番環境で MQL ベースの条件でアラート ポリシーをデプロイするためのユースケースとサンプルクエリについて説明します。

動的しきい値に関するアラート

MQL クエリを使用すると、曜日など、時間の経過とともに変化するしきい値に基づいてアラートをトリガーするアラート ポリシーを構成できます。この構成は、MQL クエリのないアラート ポリシー条件ではサポートされていません。

たとえば、Compute Engine インスタンスの CPU 使用率が 95% を超えた場合にアラートを送信する MQL クエリがあるとします。

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| condition utilization > 95'%'

しかし、サポートチームの応答により長い時間を要することを考慮して、週末には低い使用率(例: 85%)のしきい値を設定する必要があります。この場合、アラートのしきい値を含む値列を使用してクエリを構成できます。

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| value add [day_of_week: end().timestamp_to_string('%w').string_to_int64]
| value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6]
| value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')]
| condition utilization > scale(max_allowed_utilization)

value オペレーションは次の処理を行います。

  • value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] は、値が 0~6 の数値である値列を追加します。ここで、0 は日曜日、6 は土曜日です。
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] は、曜日番号を、データポイントが週末と平日のどちらであったかを示すブール値に置き換えます。
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] は、ブール値を is_weekend の値に応じて異なるしきい値に置き換えます。

条件 condition utilization > scale(max_allowed_utilization) は、2 つの値列を比較します。

動的基準に基づいてインシデントの重大度レベルを構成する MQL ベースの条件のアラート ポリシーの例については、MQL を使用して動的重大度を作成するをご覧ください。

変化率に基づくしきい値に関するアラート

アラート ポリシー MQL クエリを構成して、指標の変化率に基づいてしきい値を評価できます。たとえば、API リクエストで resource.method のインスタンスあたりの 5xx エラーの割合を評価する場合、そのレートは 1 秒あたりのリクエスト数に相当します。レートが 1 秒あたり 5 エラー レスポンスより大きい場合、Cloud Monitoring はアラートを送信します。

fetch consumed_api
| metric 'serviceruntime.googleapis.com/api/request_count'
| filter (metric.response_code_class == '5xx')
| align rate(10m)
| every 30s
| group_by [resource.method],
    [value_request_count_mean: mean(value.request_count)]
| condition val() > 0.05'1/s'

MQL を使用せずに変化率のアラート ポリシーを作成できます。

比率ベースのしきい値に関するアラート

アラート ポリシーでは、MQL クエリを使用して、2 つの指標を結合してから値列を分割することで導出された比率を評価できます。たとえば、Compute Engine インスタンスごとに write バイトに対する read バイトの比率をクエリするとします。比率が 3/5 または 60% より大きい場合、Cloud Monitoring はアラートを送信します。

{
  fetch gce_instance :: compute.googleapis.com/instance/disk/read_bytes_count;
  fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
}
| every 30s
| join
| value val(0) / val(1)
| condition val() > 0.6

集計値の比率をクエリすることもできます。たとえば、Compute Engine インスタンス全体でコアあたりの平均 CPU 使用時間を計算する必要があるとします。比率が 3/5 または 60% より大きい場合、Cloud Monitoring はアラートを送信します。

{
  fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
  | group_by [], .sum;
  fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
  | group_by [], .sum
}
| every 30s
| ratio
| condition val() > 0.6

MQL を使用せずに比率ベースのアラート ポリシーを作成できます。