グループ評価は、アラートルールのパラメーターです。アラートシステムがクエリと分析の結果を計算する際に、特定フィールドで結果をグループ化できます。その後、アラートシステムは各グループをトリガー条件に対して個別に評価し、個別のアラートを生成します。これにより、単一のアラートルールで複数のターゲットを監視し、各グループのアラートとイベントを個別に管理できます。
-
グループ評価を設定すると、1 回の評価で最大 100 個のアラートグループが生成される可能性があります。100 個を超えるグループが生成された場合、システムはランダムに 100 個を選択し、アラートポリシーに送信します。
-
グループ評価のフィールドを選択する際は、監視対象エンティティを一意に識別し、取りうる値の数が限られているものを選択してください。エンティティを区別できないフィールドは選択しないでください。このようなフィールドを使用すると、多数のグループが作成され、それぞれが個別のアラートをトリガーする可能性があります。これにより、アラートストームが発生し、重大なアラート通知を見逃す原因となることがあります。
たとえば、Nginx ログの場合は host や method などのフィールドを使用します。OSS アクセスログの場合は bucket フィールドを使用します。Nginx ログの request_time や body_size、またはエラーログの err_cnt などのフィールドは使用しないでください。
例 1:時系列データのグループ監視
たとえば、複数のサーバーからのメトリックデータを単一の時系列データベースに保存しているとします。各サーバーの CPU 使用率 (cpu_util) が 95% を超えたときに、Log Service がサーバーごとに個別のアラートを送信するように設定したいとします。これを実現するには、アラートルールを作成する際にグループ評価を設定します。
設定は以下の通りです。
-
[クエリと統計]:
* | select promql_query_range('cpu_util') from metrics limit 1000このクエリは CPU 使用率を計算します。
-
[グループ評価]: [自動ラベル]
Log Service は、時系列データのクエリと分析の結果を自動的にグループ化します。
-
トリガー条件: データ一致, 値 > 95, 重要度: 高
クエリと分析の結果の value が 95 を超えると、システムは深刻度「高」のアラートをトリガーします。
-
ラベルを追加する: アラートのタイトルや説明などのアノテーションを設定します。アノテーションでは、${host} などのフィールド変数を参照できます。詳細については、「ラベルとアノテーションの追加」をご参照ください。
title を「ホスト ${host} の CPU 使用率が急上昇」に、desc を「ホスト ${host} の CPU 使用率が ${value} に達しました」に設定します。
例 2:ログのグループ監視
たとえば、OSS アクセスログを監視する際に、1 分あたりの HTTP 500 エラーが 1,000 件を超えたバケットごとに個別のアラートを受信したいとします。これを実現するには、アラートルールを作成する際にグループ評価を設定します。
設定は以下の通りです。
-
[クエリと統計]:
http_status=500 | select bucket,count(1) as pv group by bucket having pv >1000 order by pv descこのクエリは、HTTP 500 エラーが 1,000 件を超えたバケットを検索します。
-
グループ評価: カスタムラベル、バケット
システムは、クエリと分析の結果をバケットごとにグループ化します。
-
トリガー条件:
-
条件 1: [データ一致]、pv > 3000、[深刻度:高]
クエリと分析の結果の pv 値が 3,000 を超えると、システムは深刻度「高」のアラートをトリガーします。
-
条件 2: [データ存在]、[深刻度:中]
クエリと分析で何らかの結果が返された場合、システムは深刻度「中」のアラートをトリガーします。
-
-
ラベルを追加する: アラートのタイトルや説明などのアノテーションを設定します。アノテーションでは、${pv} などのフィールド変数を参照できます。詳細については、「ラベルとアノテーションの追加」をご参照ください。
title を「${bucket} バケットで 500 エラーが発生」に、desc を「エラー数: ${pv}」に設定します。