• 製品
  • 使用を開始する
  • 関連ドキュメント
  • リソース

アラートのカスタマイズとフィルタリングのための正規表現

Opsgenie は、Java に似た正規表現を使用して、アラートフィールドを定義するための情報のフィルターと抽出を強化する機会を提供します。フィルターと抽出はいずれも、インテグレーション、アラートポリシー、コールバックで使用できます。多くの場合、正規表現を使用することで、必要な情報をより効果的に抽出できるようになります。

正規表現は基本的に 2 つの目的で使用できます。一致演算子を使用したフィルターのルールの定義と、extract文字列処理メソッドを使用した、アラートフィールドに設定するデータの抽出です。

一致ルールでフィルターするための正規表現

文字列値全体が指定された正規表現のパターンと一致する場合、一致演算子を使用した条件が満たされます。入力値の型がリストの場合、少なくとも 1 つのリスト項目が指定された正規表現に一致する場合、条件が満たされます。この演算子は、単一の条件ルールで複雑なフィルターを定義する機能を提供し、すでに定義されている条件演算子への依存を減らします。条件演算子の詳細については、アクションフィルターを参照してください。

一致条件演算子の利用に適した一般的なユースケースの例を以下に示します。

  • AND/OR による複数ルールの結合
    件名に「日々のレポート」が、メッセージに「重要」、「エラー」、または「ダウン」のいずれかが含まれている場合にメール統合からアラートを作成するには、一致ルール内で次の正規表現を使用できます。

 

.*(Critical|Error|Down).*

2 つのルールを組み合わせてアラートを作成する方法を示す画像。

類似ルールの重複防止
アラートの説明が server1、server2、...、server100 のいずれかのサーバー名で始まる場合にアラートを再通知するには、20 個の次で始まるルールではなく、1 つの一致ルール内で次の正規表現を代用します。

^(server(100|[1-9]\d?)).*

ルールの重複を防ぐ方法を示す画像。

複雑なルールの定義
アラート メッセージに有効なメール アドレスが含まれている場合に Webhook コールバックを実行するには、次の正規表現を使用できます。

.*(\s+.*)?([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})(\s+.*)?

 

複雑なルールの作成方法を示す画像。

Extract 文字列処理メソッドを使用してアラート フィールドを設定するための正規表現

extract文字列処理メソッドを使用して、指定された正規表現に従って必要な一致グループを抽出し、アラートフィールドに設定できます。文字列処理メソッドの詳細については、こちらを参照してください。

extractメソッドを使用して必要な結果を得るには、キャプチャグループの理解が必要な場合があります。これには 2 つの定義があります。

  • field_name.extract(reg_exp)

    : 指定された正規表現の最初の括弧で囲まれたセクション (グループ) に一致する文字列の一部を指定します。文字列が指定された正規表現に一致しない場合は、空の文字列を返します。指定された正規表現が文字列と一致するが、括弧で囲まれたセクションを含まない場合は、文字列全体を返します。

  • field_name.extract(reg_exp, index)

    : 指定された正規表現の index 番目の括弧で囲まれたセクション (グループ) に一致する文字列を指定します。文字列が指定された正規表現に一致しない場合は、空の文字列を返します。指定された正規表現が文字列と一致するが、index の数以上の括弧で囲まれたセクションを含まない場合は、文字列全体を返します。

次に、両方のメソッド定義を使用する例をいくつか示します。

messageHost: First Second

  • message.extract(/Host: (\S+)/)

     = First

  • message.extract(/Host: (\S+) (\S+)/)

     = First

  • message.extract(/Host:(\S+)/)

     = 空の値

  • message.extract(/Host: (\S+)/, 0)

     = Host: First Second

  • message.extract(/Host: (\S+)/, 1)

     = First

  • message.extract(/Host: (\S+)/, 2)

     = Host: First

  • message.extract(/Host: (\S+) (\S+)/, 2)

     = Second

  • message.extract(/(\S)+/)

     = Host:

  • message.extract(/\S+/)

     = Host:

descriptionsome value server3

  • description.extract(/(server(100|[1-9]\d?))/)

    = server3

  • description.extract(/(server(100|[1-9]\d?))/, 1)

     = server3

  • description.extract(/(server(100|[1-9]\d?))/, 2)

     = 3

  • description.extract(/(server(100|[1-9]\d?))/, 3)

     = server3

  • description.extract(/server(100|[1-9]\d?)/, 0)

     = server3

  • description.extract(/server(100|[1-9]\d?)/, 1)

     = 3

  • description.extract(/server(100|[1-9]\d?)/, 2)

     = server3

  • description.extract(/(server(100|[1-9]\d?))/, 2)

     = 3

extract メソッドを使用して目的のアラートフィールドを設定できるようにするには、アラートフィールドに書き込まれたテキストが、次のいずれかのパターンである必要があります。

{{ field_name.extract(/reg_exp/) }}

{{ field_name.extract(/reg_exp/, group_number) }}

アラートフィールド内の式の入力場所を示す画像。

その他のヘルプ