LoginSignup
4
5

More than 3 years have passed since last update.

Splunkのeventstats と streamstatsの使い分け。

Posted at

eventstatsとstreamstatsの使い分けについて

  • Splunkを使い始めてすぐにつまずきやすい、違いがわかりにくいSPLの代表。eventstatsとstreamstats。
  • Proxyログを対象にしてeventstatsとstreamstatsをそれぞれ使ってSPLイメージの違いを理解してみましょう。

streamstats

利用例: ProxyログのWebアクセス件数をカウントし、12時間間隔で変動する動的閾値を設けて、閾値を超える回数のアクセスを外れ値として検知する

SPL(timechartとstreamstats組み合わせ)
sourcetype="intersafe_http"
|timechart count span=1h
|streamstats window=12 avg(count) as avg stdev(count) as stdev
|eval upper_bound = avg + 2*stdev
|fields - avg - stdev
|eval outlier = if(count > upper_bound, 1, 0)

スクリーンショット 2019-05-11 16.29.02.png

eventstats

利用例:ProxyログのWebアクセス件数をカウントし、検索期間全体の固定閾値を設けて、閾値を超える回数のアクセスを外れ値として検知する

SPL(timechartとeventstat組み合わせ)
sourcetype="intersafe_http"
|timechart count span=1h
|eventstats  avg(count) as avg stdev(count) as stdev
|eval upper_bound = avg + 2*stdev
|fields - avg - stdev
|eval outlier = if(count > upper_bound, 1, 0)

スクリーンショット 2019-05-11 16.30.14.png

eventstatsはtimechart(時系列グラフの可視化)との組み合わせ利用よりも、以下のように、「全体統計量に対する異常な乖離を探す」使い方のほうが一般的かもしれません。

SPL(statsとeventstat組み合わせ)
sourcetype="intersafe_http"
|eventstats avg(sum_bytes) as avg stdev(sum_bytes) as stdev
|stats sum(bytes) as sum_bytes by dest
| eval threshold = avg + 2*stdev

利用例:Proxyログのbytes_inをdest毎に合算し、全体の標準偏差から2σ以上のdestを外れ値として検知する
スクリーンショット 2019-05-11 16.19.15.png

ポイント

  • 閾値を動的に変えていきながら外れ値を見たい⇢⇢streamstats
    • 例:認証回数やネットワークのトラフィックボリュームなど1日の周期の中で上限値/下限値が変動するものに向いている
  • 1日また1週間ごとの期間全体の平均や標準偏差を求め、そこから乖離する送信元や宛先をあぶり出す⇢⇢eventstats
    • 例: 宛先サイト別のデータ転送量を見て、全体平均より大きく外れたボリュームの宛先をあぶり出す
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5