LoginSignup
3
3

More than 3 years have passed since last update.

Splunkのstreamstatsを使って移動平均線(trendline)を描画

Last updated at Posted at 2019-06-03

移動平均線をグラフにマップしたい

  • streamstatsについては、前回eventstatsとの比較を元に紹介しました。
  • 今回は、tutorialdataのWebアクセスログを対象にしてStatusCodeの件数集計とWebアクセス全体件数の移動平均線(trednline)を描画したいと思います
  • あわせてstreamstatsと似ていることができるtrendlineコマンドについても触れます

streamstatsを使って7時間毎の移動平均線を描画

  • 使用するSPL
    • timechart
    • addtotals (←ポイント)
    • streamstats
    • fields
index="tutorial" sourcetype=access_combined_wcookie
|timechart span=1h count by status
|addtotals fieldname=sum
|streamstats window=7 avg(sum) as Trend
|fields - sum
  • 検索結果イメージ
    スクリーンショット 2019-06-03 10.07.55.png

  • ポイント

    • timechartを使って1時間間隔でstatusコードを集計
    • addtotalsを使ってsumフィールドを作成し、時間毎のstatus合計値を算出
    • streamstatsを使って、過去7イベント分のsum値を対象に移動平均を計算しTrendフィールドを作成
    • グラフ化に不要なフィールド(sum)を除外

trendlineを使って7時間毎の移動平均線を描画

  • 使用するSPL
    • timechart
    • addtotals
    • trendline streamstats (←ポイント)
    • fields
index="tutorial" sourcetype=access_combined_wcookie
|timechart span=1h count by status
|addtotals fieldname=sum
|trendline sma7(sum) as Trend
|fields - sum
  • 検索結果イメージ
    スクリーンショット 2019-06-03 10.20.01.png

  • ポイント

    • timechartを使って1時間間隔でstatusコードを集計
    • addtotalsを使ってsumフィールドを作成し、時間毎のstatus合計値を算出
    • trendlineを使って、過去7イベント分のsum値を対象に移動平均を計算しTrendフィールドを作成
    • グラフ化に不要なフィールド(sum)を除外

それぞれの違いを確認

  • streamstatsとtrendlineどちらでも移動平均線は導き出せる
  • 違いは?
    • 下記スクリーンショット2つを見比べてみます。上がstreamstats、下がtrendlineの結果 スクリーンショット 2019-06-03 10.26.18.png
    • streamstatsは7件分のデータがなくても、過去2件、過去3件・・と存在するデータ分を元に移動平均を自動的に計算して値を生成していることがわかります。
    • trendlineはデータ対象が7件揃っている場合にのみ、移動平均を計算しています
    • もしかすると、それぞれのSPLのオプションでいろいろとチューニングができるかもしれませんが、シンプルに使うとこのような差がでます。

実はtrendlineコマンドには、複数のtrendlineを一度に計算し描画する事ができる

index="tutorial" sourcetype=access_combined_wcookie
|timechart span=1h count as sum
|trendline sma7(sum) as 7h_Trend sma24(sum) as 24h_Trend sma72(sum) as 3d_Trend
  • 検索結果イメージ
    スクリーンショット 2019-06-03 10.41.44.png

  • ポイント

    • 下記trendlineコマンド1行の中で、7時間、24時間、3日間の移動平均を計算
    • timechartではこれができない。一つのwindow幅しか指定できない。

|trendline sma7(sum) as 7h_Trend sma24(sum) as 24h_Trend sma72(sum) as 3d_Trend

まとめ

  • シンプルに過去7時間の移動平均を求めるならstreamstatsコマンド
  • 複数の移動平均を描画したいならtrendlineコマンド (FX、株トレーダー向け?)
3
3
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
3
3