Splunkを使って、ログの流れ(Flow)を可視化してみる - Splunk Business Flow

Splunkの.conf2019で発表されたSplunk Business Flow (SBF)がリリースされたので
とりあえず使ってみよう。

# Splunk Business Flowとは・・・？

https://docs.splunk.com/Documentation/SBF/1.0.0/Tutorial/overview

要はログの中に存在する一意の値(value）をkeyとして、それに紐づくeventを可視化できる機能らしい。
Journey(旅？って何）って感じだがとりあえずやってみよう。

## Splunk business flowをインストールしてみる
App自体は下記になるので、通常通りインストールしてみよう。

https://splunkbase.splunk.com/app/4445/

splunkbaseからダウンロード後、Main menuの歯車マークからinstall appでsplunk business flowをupしてみよう。uploadすると、再起動をしてね！ってでるからいったん再起動しよう。

<img width="1440" alt="Screen Shot 2019-06-02 at 9.27.24 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/e91245b9-12b7-6f04-9a8d-0d4ba4331c38.jpeg">

## Splunk Business Flowを使ってみよう
再起動後、AppのリストにSplunk Business flowがでてくるので、クリックしてみよう。
そうすると、以下の画面出てくるけど、lincenseはいったんもってないので、Use trial licenseをクリックしてみる。

<img width="1440" alt="Screen Shot 2019-06-02 at 9.29.28 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/e6c2f126-fcab-662e-139d-3325a60da4f1.jpeg">

そしたら、Use Trial Versionの緑ボタンをおしてみよう。(多分30日は使えるくさい）

##可視化してみるぞい
いったん、可視化する前に別タブで、サンプルデータをupしましょう。
https://docs.splunk.com/Documentation/SBF/1.0.0/Tutorial/Uploadthetutorialdata

上のリンクから、Game_store.zipをlocalにダウンロードして、自分の環境にupしてみてください。
私の場合は
- index : tutorial
- sourcetype : default
- host : 適当

でupしました。

データうp後、Business flowの画面からNew Flow modelをクリック。

<img width="1440" alt="Screen Shot 2019-06-02 at 9.38.10 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/30bade14-74cb-8621-2f5e-78637506ec3f.jpeg">

そしたら、SPLを書く画面でてくるので、SPLをこんな感じで入れて、saveしましょう。

```
index="tutorial" sourcetype="web-6"
```

<img width="888" alt="Screen Shot 2019-06-02 at 9.39.03 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/7e9520c4-9850-e5e9-6ec9-56254fc1ee24.jpeg">

saveすると、どのfieldでcorrelationするの？って言うのを聞いてくるので、こんな感じで選択。
今回はcustomer_idとorder_idをkeysにて、actionでsplit、attributeはcountry。

そのあと、右上のpreviewを押す。

<img width="1380" alt="Screen Shot 2019-06-02 at 9.40.57 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/c8ec55be-0dd1-eb8c-da71-60f683bddf82.jpeg">

そうすると、フロー図が出てくるけど、データが古いので、左上のtime rangeを24hからall timeに変更しすると、こんな画面が出てくる。

<img width="1440" alt="Screen Shot 2019-06-02 at 9.44.32 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/8662d9b1-78f3-7cbf-8555-fb27c1f4aa4d.jpeg">

右側のペインにある、Journey step countをクリックすると、actionごとのカウント数が表示される。

<img width="1440" alt="Screen Shot 2019-06-02 at 9.46.01 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/e979ef4e-ed06-4d7d-cf26-e8b9b8a849e7.jpeg">

おもしろいのは、タブにあるConversionかな！<img width="392" alt="Screen Shot 2019-06-02 at 9.52.08 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/baee9c4d-453b-171f-edc1-31a8bda13169.jpeg">

conversionをクリックすると、"Choose a step"という画面がでてくるのでそれぞれのactionを選択してみる。

今回はカートに入れた後に実際に購入したcustomerをみてみると、11.8%しかいなかったことがわかる。

<img width="990" alt="Screen Shot 2019-06-02 at 9.49.18 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/0ab9839b-e8ef-843c-9ec2-5a2be17f7a33.jpeg">

となると、カゴに入れた後に課金するまでの導線(UI/UX/システムのレスポンス、、etc)がよくない想像ができるのかな！

あと、もう一つ面白い機能としては、日で比較できることかな！
画面左上のABのボタンを押すと、画面が分割されるんだよね。

<img width="392" alt="Screen Shot 2019-06-02 at 9.52.08 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/5f6ab031-8da4-bba9-4b3d-23b3975fc616.jpeg">

分割された後、それぞれのA/Bパネルの日付を選択すると、前日・翌日のrateが簡単に見れるっていう便利さ。

<img width="1364" alt="Screen Shot 2019-06-02 at 9.55.06 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/6cd0950a-35b8-05ae-abf3-ea0b6ba74eeb.jpeg">

###最後に

これ、普通にSPLでやろうとするとtransaction駆使しないといけないし、相当きついので、便利かなって思います。
一意に識別できるkeyとかがあるログであれば結構使えるんじゃないかな！
まだやってないけど、firewallとかのsession idとかclient ipをkeyにしてどういう動作をしているとか可視化すると、securityとかにも使えるんじゃないか説。