はじめてのSplunk ― 概要から応用までを体系的に学ぶ

4-2 フィールドの利用

1. フィールドとは

フィールドとは、サーチのときに条件として指定できるKey-Valueペアの情報です。 action=viewであれば、actionがフィールド名、viewがフィールド値になります。

フィールド名は大文字・小文字を区別します(case-sensitive)。 Splunkは、actionとActionをそれぞれ別のフィールド名として認識します。 従って次の二つのサーチ結果は一致しません。

SPL: 異なるフィールド名のサーチ
index=main action=view
index=main Action=view

一方、フィールド値は大文字・小文字を区別しません(case-insensitive)。 従って次の三つはいずれも同じサーチ結果になります。

SPL: 同じフィールド値のサーチ
index=main action=view
index=main action=View
index=main action=VIEW

Splunkではフィールドを指定せず、特定の文字列を含むイベントを全文検索することができます。 これに加えて、フィールド値に*を指定することで、フィールド名が存在するイベントだけをサーチすることも可能です。 以下が特定のフィールドを含むイベントをサーチする例です。

SPL: mainインデックスの中から`action`フィールドを持つイベントだけをサーチ
index=main action=*

2. フィールドの種類

フィールドの中には、特別な意味を持つものがいくつかあります。ここではよく使う4種類を説明します。

  • デフォルトフィールド(Default Fields)

    Splunkがログデータをインデクシングする際に、イベントへ自動で付与するフィールドです。インデックス化した後は変更できません。host, source, sourcetype, timestampなどが該当します。

  • 関連するフィールド(Interesting Fields)

    サーチ結果画面の左下に表示される、サーチ結果イベントの20%以上に登場するフィールドです。サーチを実行するたびに、Splunkが結果を分析し、多く含まれるフィールドを自動抽出して表示します。

  • 選択されたフィールド(Selected Fields)

    サーチ結果画面の左上に表示される、ユーザーがチェックして選ぶお気に入りのフィールドです。既定ではhost, source, sourcetypeの三つが選択されたフィールドとして設定されています。ユーザーの操作で追加・削除が可能です。

  • 計算済みフィールド(Calculated Fields)

    statsコマンドやevalコマンドなどによって、元のイベントに含まれるデータを計算・変更したり、新しく作成したりしたフィールドです。たとえばbytesフィールドを特定期間で合計してsum_bytesという新しいフィールドを作成した場合、このsum_bytesが計算済みフィールドにあたります。

3. フィールドの抽出タイミング

Splunkがフィールドを抽出するタイミングは、大きく二つあります。

  1. サーチ時フィールド抽出

サーチ実行時に取得したイベント内のデータに対し、フィールドをマッピングします。

  1. インデックス時フィールド抽出

インデックス化(データ取り込み)の時点で、フィールドを含めてインデックスに格納します。

基本的には、1.サーチ時フィールド抽出がSplunkのデフォルトの動作です。 フィールドはインデックス時にフィールドを付与されて保存されているのではなく、サーチ実行のたびにフィールドを抽出して画面上に表示するのが基本的な動作である、と理解しておくのがよいでしょう。 この仕組みが、データを取り込んだ後もフィールドを柔軟に変更できるという、Schema on the flyのベースになっています。

2.インデックス時フィールド抽出が行われることもありますが、これはCSVやJSONなどの構造化データ向けの動作です。 構造化データはすでにスキーマが定義されており変更の可能性も低いため、インデックス化と同時に抽出したほうが効率的だからです。 ただし、フィールドに関するデータも一緒にインデックス化する必要があるため、この場合は処理・保存されるデータ量が増える点に注意が必要です。

4. まとめ

  • フィールドはサーチで指定できる「名前と値のペア(Key-Valueペア)」。Keyは大文字・小文字を区別し、Valueは区別しない
  • 値を*にすると、そのフィールドが存在するイベントだけを絞り込める
  • フィールドにはデフォルトフィールド/関連するフィールド/選択されたフィールド/計算済みフィールドといった種類がある
  • フィールドの抽出タイミングには二種類(サーチ時/インデックス時)あるが、サーチ時フィールド抽出がSplunkのデフォルト動作