すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:評価式の指定

最終更新日:Aug 29, 2024

アラートルールでは、評価式の実行結果を使用して、アラートをトリガーする条件が満たされているかどうかを確認し、アラートの動的な重大度を評価します。 このトピックでは、evaluate式の使用方法について説明します。

概要

アラートルールでは、クエリステートメントの結果を入力として指定し、集合演算の結果のフィールドを変数として指定できます。 評価式がtrueを返すと、アラートがトリガーされます。

制限事項

アラートルールで指定できる評価式には、次の制限があります。

  • 負の数は括弧 () で囲む必要があります。 例: x +(-100)<100

  • 数値は64ビットの浮動小数点数に変換されます。 数値が比較に使用される場合、エラーが発生する可能性があります。 たとえば、2つの数値を比較して、数値が等しいかどうかを確認できます。

  • 変数名には文字と数字のみを使用でき、先頭は文字である必要があります。

  • 評価式の長さは 1 ~ 128 文字です。

  • アラートがトリガーされるのは、評価式がtrueを返し、トリガー条件が満たされた連続回数がパラメーターのThresholdの値に達した場合にのみです。 たとえば、評価式が100 + 100の場合、計算結果は200となり、値はtrueではありません。 この場合、アラートはトリガーされません。

  • true、false、ドル記号 ($) 、およびピリオド (.) は、評価式の予約語です。 予約語を変数として使用することはできません。

構文

次の表に、アラートルールの評価式でサポートされている構文の種類を示します。

説明

フィールド名は、結果セットで返されるフィールドの名前です。 フィールド名として文字列を使用することを推奨します。 数字のみを含むフィールド名や特殊文字を含むフィールド名は使用しないことをお勧めします。 特殊文字にはパーセント記号 (%) が含まれます。 フィールド名に特殊文字または数字のみが含まれる場合は、フィールド名を [] で囲む必要があります。 例:

  • [5xxパーセント (%)] > 20

  • [404] > 20

構文タイプ

演算子

操作方法

変数間の操作

文字列以外の定数と変数の操作

文字列定数と変数の操作

算術演算子

加算 (+) 、減算 (-) 、乗算 (*) 、除算 (/) 、およびモジュラス (%)

算術演算子が適用される前に、左右のオペランドは64ビットの浮動小数点数に変換されます。

算術演算子が適用される前に、左右のオペランドは64ビットの浮動小数点数に変換されます。

サポートされていません。

  • x * 100 + y > 200

  • x % 10 > 5

比較演算子

比較演算子:

greater-than (>) 、greater-than-or-equal-to (>=) 、less-than (<) 、less-than-or-equal-to (<=) 、equal-to (=) 、not-equal-to (!=)

Simple Log Serviceは、優先順位でソートされた次の比較ルールを使用します。

  1. 左右のオペランドは64ビットの浮動小数点数に変換され、番号順に基づいて比較されます。 変換に失敗した場合は、次の優先順位のルールが適用されます。

  2. 左右のオペランドは文字列に変換され、アルファベット順に基づいて比較されます。

左右のオペランドは64ビットの浮動小数点数に変換され、比較されます。

左右のオペランドは文字列に変換され、アルファベット順に基づいて比較されます。

  • x >= 0

  • x < 100

  • x <= 100

  • x == 100

  • x == "foo"

  • (x > 100) == true

    説明

    ブール定数がサポートされています。

正規表現演算子:

regex match (=~) とregex not match (!~)

説明
  • バックスラッシュ (\) はエスケープする必要があります。

  • 正規表現 2 (RE 2) の構文が使用されます。 詳細は、「構文」をご参照ください。

正規表現演算子を適用する前に、左右のオペランドが文字列に変換されます。

サポートされていません。

正規表現演算子を適用する前に、左右のオペランドが文字列に変換されます。

正規表現一致: x =~ "\\w +"

論理演算子

論理演算子:

AND (&&) および OR (||)

左右のオペランドは部分式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は $0.success_ratio < 90 && $1.Average response time > 60です。

左右のオペランドは部分式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は $0.success_ratio < 90 && $1.Average response time > 60です。

左右のオペランドは部分式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は $0.success_ratio < 90 && $1.Average response time > 60です。

  • x >= 0 && y <= 100

  • x > 0 | | y >0

否定演算子

否定演算子 (!)

必要なオペランドはサブ式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は!($0.success_ratio < 90).

この演算子は、集合演算の結果のフィールドに直接使用することはできません。

必要なオペランドはサブ式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は!($0.success_ratio < 90).

この演算子は、集合演算の結果のフィールドに直接使用することはできません。

必要なオペランドはサブ式でなければならず、演算の結果はブール値でなければなりません。 たとえば、評価式は!($0.success_ratio < 90).

この演算子は、集合演算の結果のフィールドに直接使用することはできません。

! (a < 1 && a > 100)

contains 関数

contains 関数

contains関数を実行する前に、左右のオペランドが文字列に変換されます。

サポートされていません。

contains関数を実行する前に、左右のオペランドが文字列に変換されます。

contains(foo, 'hello'): trueが返された場合、foo文字列にはhello部分文字列が含まれます。

括弧

括弧()

括弧 () は、計算の標準優先順位をオーバーライドするために使用されます。

括弧 () は、計算の標準優先順位をオーバーライドするために使用されます。

括弧 () は、計算の標準優先順位をオーバーライドするために使用されます。

x * (y + 100) > 100

セット操作の結果を評価する

Simple Log Serviceは、最大3つのデータセットの関連モニタリングをサポートし、セット操作の結果を評価します。

セット操作の結果

アラートルールでは、クエリ文の結果を入力として指定し、セット操作の結果のフィールドを変数として指定して、アラートをトリガーできるかどうかを評価できます。 集合操作の詳細については、「複数のクエリ操作と分析操作の結果の関連付け」をご参照ください。 次の表に、セット操作の結果を示します。

説明

クエリおよび分析結果に対して実行される集合演算の結果が評価される。 セット操作には、CROSS JOIN操作とLEFT JOIN操作が含まれます。

  • クエリ結果と分析結果に重複するフィールドが含まれていない場合は、フィールドにプレフィックスを追加することなく、評価式のフィールドを参照できます。 プレフィックスには、$0、$1、および $2が含まれます。 例: name == 'sls'

  • クエリと分析の結果に重複するフィールドが含まれている場合は、フィールドにプレフィックスを追加することで、評価式のフィールドを参照できます。 プレフィックスには、$0、$1、および $2が含まれます。 例: $0.name == 'sls' | | $1.name == 'ecs'

カテゴリ

サブカテゴリ

説明

ログ

SELECTを含まないクエリ文

ログのクエリには、検索文のみ使用されます。

トリガー条件に評価式を指定すると、クエリ結果に含まれるフィールドを参照できます。

SELECT * FROM ログを含むクエリ文

トリガー条件の評価式を指定すると、Enable Analyticsがオンになっているフィールドを参照できます。

SELECT * FROM (SELECT...) を含むクエリ文

トリガー条件に評価式を指定すると、指定したSELECTサブクエリに含まれるフィールドを参照できます。

メトリック

SELECT promql(...) を含むクエリ文

promql_query(string) 関数とpromql_query_range(string, string) 関数は、メトリック、ラベル、時間、値のフィールドを常に返すことができます。 Simple Log Serviceは、ラベルフィールドをマップ形式で展開します。

トリガー条件に評価式を指定すると、メトリック、ラベル、時間、値のフィールドを参照できます。 ラベルフィールドのサブフィールドを参照することもできます。

SELECT a, b FROM (SELECT promql(...)) を含むクエリ文

トリガー条件の評価式を指定すると、Enable Analyticsがオンになっているフィールドを参照できます。

SELECT * FROM ログを含むクエリ文

トリガー条件の評価式を指定すると、Enable Analyticsがオンになっているフィールドを参照できます。

リソースデータ

なし

リソースデータのフィールドの値は、文字列、浮動小数点数、または数値型にすることができます。 JSON 型はサポートされていません。

トリガー条件に評価式を指定すると、リソースデータのフィールドのIDを参照できます。

トリガー条件の設定

トリガー条件では、evaluate式を使用して、集合演算の結果を評価します。 評価式がtrueを返すと、アラートがトリガーされます。 トリガー条件は、次のオプションをサポートします。

  • データが返されました: セット操作の結果にデータが含まれている場合、アラートがトリガーされます。

    image

  • クエリ結果に含まれる: 集合演算の結果に特定の数のデータエントリが含まれている場合、アラートがトリガーされます。 サポートされている比較演算子には、greater-than (>) 、less-than (<) 、およびequal-to (==) が含まれます。 たとえば、トリガー条件としてのクエリ結果に> 10を指定し、集合演算の結果に4つのデータエントリが含まれている場合、結果のデータエントリの数が指定されたトリガー条件を満たしていないため、アラートはトリガーされません。

    image

  • data matches the expression: set演算の結果に、指定された評価式と一致するデータが含まれている場合、アラートがトリガーされます。 たとえば、data match the expression pv>1000をトリガー条件として指定し、設定操作の結果にページビュー (PV) が900されているデータエントリが1つだけ含まれている場合、結果のデータが指定されたトリガー条件を満たしていないため、アラートはトリガーされません。

    image

  • the query result contains and matches: set操作の結果に、指定された評価式と一致する特定の数のデータエントリが含まれている場合、アラートがトリガーされます。 たとえば、トリガー条件としてのクエリ結果に含まれ、一致する> 3、pv>1000を指定し、セット操作の結果にPVが900、1100、1200、1001の4つのデータエントリが含まれている場合、結果のデータが指定されたトリガー条件を満たしているため、アラートがトリガーされます。

    image

例 1

リクエストの成功率が90% 未満で、リクエストの平均応答時間が15分以内の60秒を超える場合、アラートがトリガーされます。 設定の詳細:

クエリ統計

  • s0: success_ratioで示されるリクエスト成功率を計算します。 クエリ文: * | select round(sum(if(status < 300, 1,0)) * 100.0 / count(1) , 2) as success_ratio

  • s1: 1分あたりのリクエストの平均応答時間を計算します。 クエリ文: * | select date_format(date_trunc('minute' ,__ time__), '% m-% d % H:% i') as t,avg(request_time) as "Average response time(s)" group by t order by t asc limit 2000

トリガー条件: 評価式として $0.success_ratio < 90 && $1.Average response time\(s\) > 60を指定します。

image

例 2

HTTPステータスコード500が15分以内に10回を超えると、アラートがトリガーされます。 設定の詳細:

クエリ統計: 各ステータスコードが返される回数を計算します。 クエリステートメント: * | select status, COUNT(*) as total group by status.

トリガー条件: 評価式としてstatus == 500 && total > 10を指定します。

image