アラート ルールを作成する際に、アラート ルールの式を使用して複雑なアラート条件を設定できます。このトピックでは、アラート ルールの式の基本要素、履歴関数、およびシナリオについて説明します。
要素
CloudMonitor は、設定したアラート ルールの式に基づいて、メトリックの集計データまたはインスタンスのメトリックを計算します。モニタリング データが式と一致する場合、アラートがトリガーされます。アラート ルールの式は、メトリック名、メトリック メンバー、演算子、関数、およびモニタリング データで構成されます。例: @cpu_total[60].$instanceId != 'i-2ze3jvsy7620giru****' && @cpu_total[60].$Average > 60。
メトリック名
さまざまなクラウド サービスのメトリックの詳細については、「付録 1: メトリック」をご参照ください。
メトリックのアラート ルールの式は、
@メトリック名[集計期間]形式です。たとえば、CPUUtilization メトリックに基づいて Elastic Compute Service (ECS) インスタンスを監視するには、アラート ルールの式を@CPUUtilization[60]に設定します。説明ECS のメトリックの集計期間は、ECS のメトリック リスト ページ の表の [最小期間] 列に表示されます。別のクラウド サービスのメトリックの集計期間を表示するには、ドロップダウン リストからクラウド サービスを選択します。
メトリック名は、正規表現
[a-zA-Z][_a-zA-Z0-9]*に準拠している必要があります。メトリック名が正規表現に準拠していない場合は、@(メトリック名)[集計期間]形式を使用します (例:@('vm.DiskIORead')[60])。
アラート ルールの式では、メトリック名はメトリック メンバーと組み合わせて使用して、モニタリング データの範囲を指定する必要があります。
メトリック メンバー
メトリック メンバーは、関連するメトリックのモニタリング データの範囲を指定するために使用されます。メトリック メンバーはドル記号 ($) で始まる必要があります。
@メトリック名[集計期間].$メトリック メンバー形式でアラート ルールの式を指定する必要があります。たとえば、ECS の CPUUtilization メトリックの統計手法は、平均、最小、および最大です。メトリックの平均値のアラート ルールの式は、@CPUUtilization[60].$Averageです。ECS の CPUUtilization メトリックのディメンションは、userIdおよびinstanceIdです。指定されたインスタンスの CPUUtilization メトリックのアラート ルールの式は、@CPUUtilization[60].$instanceIdです。説明ECS のメトリックのメンバーは、ECS のメトリック リスト ページ の表の [ディメンション] 列と [統計] 列に表示されます。別のクラウド サービスのメトリックのメンバーを表示するには、ドロップダウン リストからクラウド サービスを選択します。
演算子
演算子は、モニタリング データがアラート条件を満たしているかどうかを計算するために使用されます。
基本演算子
カテゴリ
演算子と説明
算術演算子
+: 加算-: 減算*: 乗算/: 除算%: 剰余**: べき乗
比較演算子
==: 等しい!=: 等しくない>: より大きい>=: 以上<: より小さい<=: 以下
論理演算子
&&またはand: AND||またはor: OR!またはnot: NOT
例:
$Average > 50 && $instanceId != 'i-not-exist'。説明算術演算子または比較演算子の両側の値の型が同じでない場合、文字列は数値に変換されます (例:
'123' + 321 == 123 + '321' == 444)。文字列演算子
文字列演算子
説明
例
matches
正規表現と一致します。
論理演算子 NOT と
matches演算子を使用して、文字列が正規表現と一致するかどうかを判断します。!("hello" matches "^fo.+")説明!演算子は matches 演算子よりも優先順位が高くなります。したがって、正規表現をかっこ () で囲む必要があります。contains
文字列が含まれています。
'abcdef' contains 'cde'startsWith
文字列が指定されたプレフィックスで始まるかどうかを確認します。
'abcdef' startsWith 'abc'endsWith
文字列が指定されたサフィックスで終わるかどうかを確認します。
'abcdef' endsWith 'def'メンバーシップ演算子
メンバーシップ演算子
説明
例
in
含まれています
userld in [120886317861****, 425876]userldの値は、120886317861****または20654616023382****です。"foo" in {'foo':1, 'bar':2}foo の値は
fooまたはbarです。
not in
含まれていません
userld not in [120886317861****, 425876]userldの値は、120886317861****または20654616023382****ではありません。"foo" not in {'foo1':1, 'bar':2}foo の値は、
foo1またはbarではありません。
三項演算子
?:: この演算子は、C 言語および Java 言語の三項演算子と同じ効果があります (例: @CPUUtilization[60].$Average > 30? "ok": "lower")。
データ操作
データ型
データ型
説明
例
string
一重引用符または二重引用符で囲まれた文字列。
"hello", 'hello'number
数値。値は整数または浮動小数点数です。
説明値が整数の場合は、アンダースコア (_) を区切り文字として使用して、読みやすさを向上させ、管理を容易にすることができます。
103, 2.5, .5, 2e+61_000_000
array
配列。
[1, 2, 3]map または dict
辞書。
{"foo":"bar"}bool
ブール値。
trueまたはfalsenil
空の値。
nilビルトイン関数
ビルトイン関数
説明
len(array|map|string)配列、マップ、または文字列の長さを返します。
now()UTC タイムスタンプをミリ秒単位で返します。
abs(number)絶対値 (浮動小数点数) を返します。
rand()[0, 1)の間の浮動小数点数を返します。rand(N)[0, N)の間の浮動小数点数を返します。toLower(string)文字列を小文字に変換します。
toUpper(string)文字列を大文字に変換します。
比較
説明メトリックの例:
@cpu_total[60]。集計方法は文字列です。例:
'$Average'。比較結果はブール値です。現在期間のメトリック値が前期間のメトリック値よりも大きい場合、比較結果は
trueです。現在期間のメトリック値が前期間のメトリック値よりも小さい場合、比較結果はfalseです。
関数
説明
CompareLastPeriod(metric, 集計方法, 比較結果)前期間と比較したデータを取得します (例:
CompareLastPeriod(@cpu_total[60], '$Average', true))。現在期間の cpu_total の平均値が 20%、前期間の cpu_total の平均値が 15% の場合、この関数の戻り値は比較結果によって異なります。
比較結果が
trueの場合、この関数は (20 - 15) × 100/20 を返します。比較結果が
falseの場合、この関数は (15 - 20) × 100/20 を返します。
CompareLastHour(metric, 集計方法, 比較結果)前時間と比較したデータを取得します。
CompareLastHour(@cpu_total[60], '$Average', true) > 10: cpu_total の平均値が昨日と比較して 10% 増加した場合、アラートがトリガーされます。CompareYesterday(metric, 集計方法, 比較結果)前日と比較したデータを取得します。
CompareYesterday(@cpu_total[60], '$Average', true) > 10: cpu_total の平均値が前週と比較して 10% 増加した場合、アラートがトリガーされます。CompareLastWeek(metric, 集計方法, 比較結果)前週と比較したデータを取得します。
CompareLastWeek(@cpu_total[60], '$Average', true) > 10: cpu_total の平均値が前週と比較して 10% 増加した場合、アラートがトリガーされます。ComparePast(metric, 集計方法, 比較結果, seconds)現在の時刻より前の指定された秒数 (
seconds) と比較したデータを取得します。上記の 4 つの関数は、この関数の簡略版です。
CompareLastHour(@cpu_total[60], '$Average', true)はComparePast(@cpu_total[60], '$Average', true, 3600)と同等です。CompareYesterday(@cpu_total[60], '$Average', true)はComparePast(@cpu_total[60], '$Average', true, 24*60*60)と同等です。CompareLastWeek(@cpu_total[60], '$Average', true)はComparePast(@cpu_total[60], '$Average', true, 7*24*60*60)と同等です。
履歴関数
関数
説明
LastPeriod(metric)前期間のデータを取得します。例:
LastPeriod(@cpu_total[60]).$Average > 75。前期間のcpu_totalの平均値が 75% を超えると、アラートがトリガーされます。LastHour(metric)前時間のデータを取得します。例:
LastHour(@cpu_total[60]).$Average > 75。前時間のcpu_totalの平均値が 75% を超えると、アラートがトリガーされます。Yesterday(metric)前日のデータを取得します。例:
Yesterday(@cpu_total[60]).$Average > 75。前日のcpu_totalの平均値が 75% を超えると、アラートがトリガーされます。LastWeek(metric)前週のデータを取得します。例:
LastWeek(@cpu_total[60]).$Average > 75。前週のcpu_totalの平均値が 75% を超えると、アラートがトリガーされます。Past(metric, seconds)現在の時刻より前の指定された秒数のデータを取得します。数値は、メトリック集計期間の整数倍です。上記の関数は、この関数の簡略版です。たとえば、
Past(@cpu_total[60], 3600) > 75はLastHour(@cpu_total[60]).$Average > 75と同等です。
シナリオ
次の表に、アラート ルールの式の使用シナリオを示します。
シナリオ | アラート ルールの式 | 説明 |
アプリケーショングループ内の特定のインスタンスに優先度の高い排他的しきい値を設定し、他のインスタンスには別のしきい値を設定する |
| インスタンス |
特定のインスタンスのブラックリストを設定する |
| インスタンス |
複数のメトリックに基づいてアラート条件を設定する |
| インスタンスの cpu_total の平均値が 50% を超え、インスタンスの memory_usage の平均値が 80% を超えると、アラートがトリガーされます。 |
メトリック レポートのレイテンシを監視する |
| ハートビート タイムアウトが 1 分を超えると、アラートがトリガーされます。 説明 reportTime パラメーターは、メトリックがレポートされる時刻を示します。これは各メトリックのビルトイン パラメーターです。 |