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

Cloud Monitor:アラート ルールの式

最終更新日:Apr 26, 2025

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

要素

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+6

      • 1_000_000

      array

      配列。

      [1, 2, 3]

      map または dict

      辞書。

      {"foo":"bar"}

      bool

      ブール値。

      true または false

      nil

      空の値。

      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) > 75LastHour(@cpu_total[60]).$Average > 75 と同等です。

シナリオ

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

シナリオ

アラート ルールの式

説明

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

@cpu_total[60].$Average > (@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].$Average > 50

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

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

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

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

メトリック レポートのレイテンシを監視する

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

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

説明

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