SumoLogic – FER(Field Extraction Rules)の作成方法と注意点について

SumoLogic の FER(Field Extraction Rules)と、その作成方法 + 作成のベストプラクティスをご紹介します!
2022.12.11

記事の内容が古い場合は、公式サイトもご確認ください。

SumoLogic については以下をご参照ください。

最初に

SumoLogic では、メッセージデータ(ログ・メトリクス)を受信したときに以下の順でデータを評価します。

※ 今回はフィールド抽出ルール(Field Extraction Rules)をご紹介します!

FER(Field Extraction Rules)について

SumoLogic に配信されてくるログメッセージは、JSON、XML、CSV などのデータ構造体です。
フィールド抽出ルール (FER) は、こういった生データの必要な部分だけをパースして「フィールド:値」として抽出してくれます。

FER で抽出したデータは、後の工程でインデックスが作成されます。

FER 作成のタイミング
FER は、作成時点以降のメッセージデータに適用されます。 そのため、早い段階で設定することが推奨されています。 また、FER を作成・変更した場合、ルールは即時適用されます。

FER 作成時の注意点

FER の作成には、以下の制限や、作成のベストプラクティスがあります。

FER 作成に必要なロール

  • Manage field extraction rules
  • 「フィールドの管理」、「フィールドの表示」、「フィールド抽出ルールの表示」に関する権限です。

FER の制限

  • FER の数は、最大 50 件まで
  • FER 管理画面の下部に上限・使用数・使用率が表示されます。

  • FER に指定可能なフィールド数は、最大 200 個まで
  • また、フィールドの制限は、アカウント単位です。
    Field 管理画面の下部に上限・使用数・使用率が表示されます。

  • 式は、最大 16k (16,384) 文字まで

FER のベストプラクティス

  • 正確なキーワードを含める
  • データのサブセットを識別するためにメッセージデータ自体のスコープを出来る限り絞って作成してください。 広いスコープを定義すると、解析するフィールドが増えてしまい、不要なフィールドが抽出されてしまう可能性が高まります。

  • 用途に応じて複数のルールを作成 & 適用する
  • 1つの FER で複雑なルールを定義するより、ルールの粒度を細かく区分した複数のルール作りをおすすめします。 明確な用途に応じて作成されたルールは管理しやすくなります。例えば改修した時の影響範囲を最小限に抑えられます。

  • 不要なフィールドを抽出させない
  • スコープを絞ったうえで、さらに抽出するフィールドも絞ってください。 必要最低限のデータを選定したフィールドの抽出が推奨されています。

  • ルールを作成する前にスコープをテストする
  • Log Search でフィールドに該当する予定のデータが正常に取得できるか確認してください。

  • 定義した FER で必要なフィールドが存在しているか確認する
  • フィールド抽出ルールを作成しても、フィールドが存在していなければデータを取得できません。 抽出したメッセージデータのフィールドが削除・無効化されてないか、確認してください。

  • 複数の FER で、同じスコープ + 同じメッセージデータの同じフィールド名をターゲットにしない
  • この場合、対象のフィールド名に対する FER は、ランダムに 1 つしか適用されないためです。

    ※ スコープが分離している別々のメッセージデータに対して、複数の FER で同じフィールド名を指定することは可能です。

  • parse nodrop ステートメントを使用する
  • 指定した条件に一致、もしくは一致しないデータの選別が可能になります。 parse operator のオプションとして、ルール式の中で使用可能です。

FER の作成方法

以下のステップで、FER の作成ページに移動します。
① Manage Data > ② Logs > ③ Field Extraction Rules > ④ + Add Rule

すると、以下の FER 作成メニューが右側に表示されます。

① Rule Name

分かりやすいルール名を指定します。
FER は用途に応じて複数作成することになるためです。

② Applied At

パース方式について以下、2タイプのいずれかを選択します。

  • Ingest Time
  • 任意の構造データ型をサポートします。パースするための式を記述する必要があります。
    FER は最大 50 件、フィールドは最大 200 個までの制限があります。
    FER 作成以降のメッセージデータに適用されます。

  • Run Time
  • JSON データ型のみを自動的に解析します。
    FER 数、フィールド 数ともに制限はありません。
    自動解析モード(Auto Parse Mode)を使用したときに JSON データのみをパースします。

    - 自動解析モード(Auto Parse Mode) -
    SumoLogic では、ログ検索する際、JSON 型のみを動的にパースする機能が存在します。

③ Scope

解析対象のログの範囲を決定できます。
設定するログの範囲内部に対して、後述の ④ Parsed template が適用されます。

  • All Data
  • すべてのメッセージデータをスコープ範囲内とします。

  • Specific Data
  • - Metadata
    以下に該当する組み込みメタデータをログの抽出範囲として指定します。

    - Value
    Metadata のフィールド値を指定します。
    例)_sourcecategory=/Prod/NginxWebServer/Access

    ※ フィールドには、Bool 値、ワイルドカードなどの検索式を使用できます。
    詳細は Keyword Search Expressions をご確認ください。

    - Switch To Advanced -

    Switch To Advanced を選択すると、すべてを手入力するフォームになります。
  • Parsed Template(Optional)
  • ② Applied At で、Ingest Time を指定した場合のみ表示されます。
    後述の ④ Parse Expression に使用するテンプレート群です。

④ Parse Expression

② Applied At で、Ingest Time を指定した場合のみ表示されます。
サポートされている解析・検索オペレータを使用して、フィールドと値の抽出式を書きます。

例)

オペレータについては、各種以下をご確認ください。
Search Operators
Parse Operators

⑤ Extracted Fields

④ Parse Expression で指定したフィールド名が列挙されます。

- 注意点 -
フィールド抽出ルールで指定されたフィールドは、 フィールドテーブルスキーマに自動的に追加され、有効になります。

まとめ

FER を作成した後は、新たなログを配信するとき以外ほとんど触れない機能になります。 新たなログを配信するときや、そもそも取得する/しているログが多い場合は、複雑になりやすいです。 そのため、しっかりテストしながら細かく設定して、将来的な管理上のオーバーヘッドを減らしたいところです。

参考元