Splunk: statsとevalの使い分け


時々微妙に迷うのでメモ。

実施環境: Splunk Free 8.2.2

Splunkには eval と stats という2つのコマンドがあり、 eval は評価関数(Evaluation functions)、 stats は統計関数(Statistical and charting functions)を使用することができます。
この2つは全く別物ではありますが、一見似たような処理を行う関数も多いため、どちらを使用すればよいか迷うこともあります。
さて、ではどのように使い分けるべきか。
結論から言いますと、「横に処理(単一のイベント内に閉じて処理)」する場合は eval 、「縦に処理(複数のイベントにまたがって処理)」する場合は stats を使用します。

以下のダミーデータを例にしてみます。

Splunk
| makeresults count=3
| streamstats count AS Test1
| eval Test2 = Test1 + 3, Test3 = Test1 + 6
| fields - _time, Test

stats を使用した場合、処理は「縦に」行われ、結果のみが表示されます。

Splunk
| makeresults count=3
| streamstats count AS Test1
| eval Test2 = Test1 + 3, Test3 = Test1 + 6
| fields - _time, Test
| stats sum(Test1), sum(Test2), sum(Test3)

eval を使用した場合、処理は「横に」行われ、結果は既存項目に追加する形で表示されます。

Splunk
| makeresults count=3
| streamstats count AS Test1
| eval Test2 = Test1 + 3, Test3 = Test1 + 6
| fields - _time, Test
| eval TestSum = sum(Test1, Test2, Test3)