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

CloudMonitor:アラートルールの式

最終更新日:May 14, 2024

アラートルールを作成するときに、アラートルール式を使用して、複雑なアラート条件を設定できます。 このトピックでは、アラートルール式の基本要素、履歴関数、およびシナリオについて説明します。

ポリシーの基本要素

CloudMonitorは、設定したアラートルールの式に基づいて、メトリクスの集計データまたはインスタンスのメトリクスを計算します。 モニタリングデータが式を満たす場合、アラートがトリガーされます。 アラートルール式は、メトリック名、メトリックメンバー、演算子、関数、およびモニタリングデータで構成されます。 例:@ cpu_total[60].$instanceId! ='i-2ze3jvsy7620giru **** ' && @ cpu_total[60].$平均> 60.

  • メトリック名

    さまざまなクラウドサービスのメトリックの詳細については、「付録1: メトリック」をご参照ください。

    メトリックのアラートルール式は、@ metric name [集計期間] 形式です。 たとえば、CPUUtilizationメトリックに基づいてElastic Compute Service (ECS) インスタンスをモニタリングするには、アラートルール式を @ CPUUtilization[60] に設定します。

    説明
    • ECSのメトリックの集計期間は、[ECSのメトリックリストページ] の表の [最小期間] 列に表示されます。 別のクラウドサービスのメトリクスの集計期間を表示するには、ドロップダウンリストからクラウドサービスを選択します。

    • メトリック名は、正規表現 [A-zA-Z][_a-zA-Z0-9]* に準拠している必要があります。 メトリック名が正規表現に準拠していない場合は、@ (メトリック名) [集計期間] 形式 (例: @('vm.DiskIORead')[60]) を使用します。

    アラートルール式では、モニタリングデータの範囲を指定するために、メトリック名をメトリックメンバーと組み合わせて使用する必要があります。

  • メトリックメンバー

    メトリックメンバーは、関連するメトリックのモニタリングデータの範囲を指定するために使用されます。 メトリックメンバーは、ドル記号 ($) で始まる必要があります。 アラートルール式は、@ Metric name [集計期間].$Metric member形式で指定する必要があります。 たとえば、ECSのCPUUtilizationメトリックの統計方法は、Average、Minimum、Maximumです。 メトリックの平均値のアラートルール式は、@ CPUUtilization[60].$averageです。 ECSのCPUUtilizationメトリックのディメンションは、userIdinstanceIdです。 指定されたインスタンスのCPUUtilizationメトリックのアラートルール式は、@ CPUUtilization[60].$instanceIdです。

    説明

    ECSのメトリックのメンバーは、[ECSのメトリックリストページ] のテーブルの [ディメンション] 列と [統計] 列に表示されます。 別のクラウドサービスのメトリクスのメンバーを表示するには、ドロップダウンリストからクラウドサービスを選択します。

  • 演算子

    オペレータは、モニタリングデータがアラート条件を満たすかどうかを計算するために使用されます。

    • 基本演算子

      カテゴリ

      演算子と説明

      数学演算子

      • +: 追加

      • -: 減算

      • *: 乗算

      • /: division

      • %: modulo

      • **: 指数

      比較演算子

      • ==: 等しい

      • ! =: 等しくない

      • >: より大きい

      • >=: より大きいか等しい

      • <: より少ない

      • <=: 以下

      論理演算子

      • && またはand: AND

      • | | またはまたは: or

      • ! またはしない: not

      例:$Average > 50 && $instanceId! ='i-not-exists'.

      説明

      数学演算子または比較演算子の両側の値が同じタイプでない場合、文字列は数値に変換されます。たとえば、「123」 + 321 == 123 + 「321」== 444です。

    • 文字列演算子

      文字列演算子

      説明

      一致

      正規表現と一致します。

      論理演算子NOTとmatches演算子は、文字列が正規表現に一致するかどうかを判断するために使用されます。

      ! (「こんにちは」は「 ^ fo.+ 」と一致)

      説明

      ! 演算子は一致演算子よりも優先度が高い。 したがって、正規表現を括弧 () で囲む必要があります。

      を含む

      文字列を含みます。

      'abcdef' には 'cde' が含まれています

      startsWith

      文字列が指定されたプレフィックスで始まるかどうかをチェックします。

      「abcdef」スタート「abc」

      endsWith

      文字列が指定されたサフィックスで終わるかどうかをチェックします。

      「abcdef」終了「def」

    • メンバーシップ演算子

      会員オペレーター

      説明

      in

      含まれています。

      • userld in [120886317861 ****,425876]

        userldの値は120886317861 **** または20654616023382 **** です。

      • {'foo':1,'bar':2} の "foo"

        fooの値はfooまたはbarです。

      ではない

      含まれていません。

      • userld not in [120886317861 ****,425876]

        userldの値は120886317861 **** または20654616023382 **** ではありません。

      • {'foo1':1,'bar':2} の "foo"

        fooの値はfoo1またはbarではありません。

    • Ternary演算子

      ?: この演算子は、CおよびJava言語の三元演算子と同じ効果があります。たとえば、 @ CPUUtilization[60] 。$平均> 30? "ok": "lower".

  • データ操作

    • データ型

      データ型

      説明

      String

      一重引用符または二重引用符で囲まれた文字列。

      「こんにちは」、「こんにちは」

      数値

      数値。 値は、整数または浮動小数点数とすることができる。

      説明

      値が整数の場合は、アンダースコア (_) を区切り文字として使用して、読みやすさを向上させ、管理を容易にできます。

      • 103、2.5、. 5、2e + 6

      • 1_000_000

      array

      配列。

      [1, 2, 3]

      マップまたはdict

      辞書だ

      {"foo":"bar"}

      bool

      ブール値。

      trueまたはfalse

      nil

      空の値。

      nil

    • 組み込み関数

      組み込み関数

      説明

      len (配列 | マップ | 文字列)

      配列、マップ、または文字列の長さを返します。

      now()

      UTCタイムスタンプをミリ秒単位で返します。

      abs (番号)

      絶対値 (浮動小数点数) を返します。

      ランド ()

      [0, 1) 間の浮動小数点数を返します。

      ランド (N)

      [0, N) 間の浮動小数点数を返します。

      toLower (文字列)

      文字列を小文字に変換します。

      toUpper (文字列)

      文字列を大文字に変換します。

    • 比較

      説明
      • メトリックの例: @ cpu_total[60]

      • 集計メソッドは文字列です。 例: '$Average'

      • 比較結果はブール値である。 現在の期間のメトリック値が前の期間のメトリック値よりも大きい場合、比較結果はです。 現在の期間のメトリック値が前の期間のメトリック値よりも小さい場合、比較結果はです。

      関数

      説明

      CompareLastPeriod (メトリック、集計方法、比較結果)

      前の期間と比較されたデータを取得します。たとえば、CompareLastPeriod(@ cpu_total[60], '$Average', true) です。

      現在の期間のcpu_totalの平均値が20% で、前の期間のcpu_totalの平均値が15% である場合。 この関数の戻り値は比較結果に依存します。

      • 比較結果がの場合、この関数は (20 - 15) × 100/20を返します。

      • 比較結果がの場合、この関数は (15 - 20) × 100/20を返します。

      CompareLastHour (メトリック、集計方法、比較結果)

      前の時間と比較したデータを取得します。

      CompareLastHour(@ cpu_total[60], '$Average', true) > 10: cpu_totalの平均値が昨日と比較して10% 増加した場合、アラートがトリガーされます。

      CompareLastWeek (メトリック、集計方法、比較結果)

      昨日と比較したデータを取得します。

      CompareYesterday(@ cpu_total[60], '$Average', true) > 10: cpu_totalの平均値が前週と比較して10% 増加した場合、アラートがトリガーされます。

      CompareLastWeek (メトリック、集計方法、比較結果)

      前週と比較したデータを取得します。

      CompareLastWeek(@ cpu_total[60], '$Average', true) > 10: cpu_totalの平均値が前週と比較して10% 増加した場合、アラートがトリガーされます。

      ComparePast (メトリック、集計方法、比較結果、秒)

      現在時刻より前の指定した秒数と比較したデータを取得します。

      前の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 (メトリック)

      前の期間のデータを取得します。 例: LastPeriod(@ cpu_total[60]).$Average > 75 前の期間のcpu_totalの平均値が75% を超えると、アラートがトリガーされます。

      LastHour (メトリック)

      前の時間のデータを取得します。 例: LastHour(@ cpu_total[60]).$Average > 75 過去1時間のcpu_totalの平均値が75% を超えると、アラートがトリガーされます。

      昨日 (メトリック)

      前日のデータを取得します。 例: 昨日 (@ cpu_total[60]) 。$Average > 75 前日のcpu_totalの平均値が75% を超えると、アラートがトリガーされます。

      LastWeek (メトリック)

      前週のデータを取得します。 例: LastWeek(@ cpu_total[60]).$Average > 75 前週のcpu_totalの平均値が75% を超えると、アラートがトリガーされます。

      過去 (メトリック、秒)

      現在の時刻より前の指定した秒数のデータを取得します。 この数は、メトリック集約期間の整数倍である。 前述の関数は、この関数の簡略化された形式です。 たとえば、Past(@ cpu_total[60], 3600) > 75LastHour(@ cpu_total[60]).$Average > 75に相当します。

シナリオ

次の表に、アラートルール式の使用シナリオを示します。

シナリオ

アラートルール式

説明

アプリケーショングループ内の特定のインスタンスに高優先度の排他的しきい値を設定し、他のインスタンスには異なるしきい値を設定します。

@ cpu_total[60].$平均> (@ cpu_total[60].$instanceId == 'i-io8kfvcpp7x5 **** '? 80: 50)

インスタンスi-io8kfvcpp7x5 **** の場合、cpu_totalの平均値が80を超えると、アラートがトリガーされます。 その他のインスタンスでは、cpu_totalの平均値が50を超えると、アラートがトリガーされます。

特定のインスタンスのブラックリストの設定

@ cpu_total[60].$instanceId! ='i-io8kfvcpp7x5 **** ' && @ cpu_total[60].$平均> 50

インスタンスi-io8kfvcpp7x5 **** の場合、falseが返され、アラートはトリガーされません。 その他のインスタンスでは、cpu_totalの平均値が50を超えると、アラートがトリガーされます。

複数のメトリックに基づいてアラート条件を設定する

@ cpu_total[60].$平均> 50 && @ memory_usage[60].$平均> 80

インスタンスのcpu_totalの平均値が50% を超え、インスタンスのmemory_usageの平均値が80% を超える場合、アラートがトリガーされます。

測定レポートの待ち時間を監視するMonitor the metric reporting latency

now() - @ heartbeat[60].$reportTime > 60_000

ハートビートタイムアウトが1分を超えると、アラートがトリガーされます。

説明

reportTimeパラメーターは、メトリックが報告される時刻を示します。 各メトリックの組み込みパラメータです。 now() 関数は、UTCタイムスタンプをミリ秒単位で返す組み込み関数です。