Splunk の計算済みフィールドを理解する

計算済みフィールドの設定と使用例についてご紹介します。
2024.05.22

計算済みフィールドとは

計算済みフィールド(Calculated Fields)は、既存のフィールドから新しいフィールドを動的に作成する機能です。

例えば、ログ検索するときに A+B を毎回 SPL で実行させるのではなく、この計算済みフィールドを使用して A+B の計算結果として C という新しいフィールドで作成しておくことが出来ます。

事前構築は必要ですが、ログ検索でのフィールド作成処理の削減やダッシュボード表示の時短など、分析での効率化が見込めます。

計算済みフィールドを使う主な目的

  • 動的なフィールド生成
  • 計算済みフィールドは既存のフィールドを基にしてリアルタイムで生成されるため、データの取り込み後に追加の処理を行う必要がありません。

  • 柔軟なデータ操作
  • 演算、文字列操作、日付操作など、さまざまなSplunkの関数を使用して新しいフィールドを作成できます。

  • 保存と再利用
  • 作成した計算済みフィールドは、他の検索やレポートで再利用できます。

計算済みフィールドで出来ること

計算済みフィールドで出来ることは次の通りです。

  • フィールドの結合
  • 数値計算
  • 文字列の操作

(他にもあるかもしれません)

計算済みフィールドの設定方法

計算済みフィールドの設定方法は非常にシンプルです。

設定 > フィールド > 計算済みフィールド を選択して次の画面から作成できます。

上記赤枠を選択して、次の画面が表示されます。

項目 説明
宛先App どの App に計算済みフィールドを保存するか指定する項目
適用先 どのデータソースに適用するか指定する項目
名前 計算結果の値を入れるフィールド名
Eval 式 計算方法を指定する項目

まずは数値計算をしてみましょう。次のように設定して、Apache_Access ログの bytes を KB にして、新しい値としてフィールド size_kb を作成しました。

では、検索してみてみましょう。

sourcetype="Apache_Access"
| stats list(bytes), list(size_kb)

ログのデフォルトフィールド bytes と、bytes / 1024 = ??? の解の小数点第2位を四捨五入して小数点第1位までを表示した計算済みフィールド size_kb を表示してます。

無事、求めていた結果を得られました。

これでフィールドを作成せずとも自動でフィールド size_kb を作成してくれるようになりましたね。便利な機能なので、他にも使い方があるか見てみましょう。

計算済みフィールドのユースケース

計算済みフィールドのユースケースとして、文字列結合の設定例を説明します。設定の要領は先ほどと同じです。

先ほど作成した計算済みフィールド size_kb の値に "KB" の文字列を入れてみましょう。

計算済みフィールドの設定

既存の計算済みフィールドを使うことは出来ないので、size_kb とは別に新たに KB という計算済みフィールドを作成しました。.(ドット) は文字列の連結をする時に使います。

次の SPL で検索してみます。

sourcetype="Apache_Access"
| stats list(bytes), list(size_kb), list(KB)

検索結果です。

こんな感じで文字列を付与できます。

その他制限

全ての計算済みフィールドは並列して処理されます。そのため計算済みフィールド A を使って計算済みフィールド B を作成することは出来ません。

ですが、検索時の動作シーケンスを見てわかる様に計算済みフィールドは 6番目の処理になるのでフィールドエイリアスなどは使うことが出来ます。

まとめ

いかがでしたでしょうか。計算済みフィールドの設定と例をご紹介しました。App や Add-on、データモデルなどを使っていると知らぬ間によく使ってたりする裏側の処理ですが、自分たちでクエリ、ダッシュボード、レポートを作成するときなどにも使えるので知ってて損はないです。

皆様の一助になれば幸いです。