Splunk - データの可視化とは

## 検証環境
Splunk Enterprise 9.2.1

## はじめに
Splunkを使うと、どのような可視化が出来るんだろう？という疑問をお持ちの方に対して、とりあえずSplunk Enterpriseを立ち上げて、AppやAdd-onを入れずともすぐにお試しできる可視化について紹介します。

## 前提条件
Splunk公式サイトにある「tutorialdata.zip」を使って、Splunkでどのような可視化が出来るのか確認したいと思います。チュートリアルデータは以下から入手可能です。
- [チュートリアルデータ - Splunk Enterprise 9.2.1](https://docs.splunk.com/Documentation/Splunk/9.2.1/SearchTutorial/Systemrequirements#Download_the_tutorial_data_files)

### [1] 取り込みデータの設定について
今回は以下の内容で tutorialdata.zip をSplunkに取り込みました。そのため格納するインデックスやソースタイプの指定方法によっては以降で提示するSPLでは動作しない可能性があります。

- ソースタイプ : 自動
- ホスト : パスのセグメント
  * セグメント番号 : 1
- インデックス : デフォルト

![スクリーンショット 2024-05-26 17.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/c66a9cf3-a5c6-5b16-eae0-1ca218a234c6.png)

### [2] サーチについて
tutorialdata.zip は約1週間分のデータが格納されていますが、ダウンロードするタイミングによってはいつのデータが格納されているのか不明なため、検索時間は「全時間(all)」とします。
![スクリーンショット 2024-05-26 17.59.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/395550b3-5894-b71e-cfdf-aeedb2ee4391.png)

### [3] App/Add-onについて
Splunkは[Splunkbase](https://splunkbase.splunk.com/)というサイトからApp/Add-onを取り込む事で、Splunkの可視化やデータ取り込みを拡張する機能がありますが、今回は利用しません。初期構築時にバンドルされている可視化できる表現のみ使います。

### [4] SPLについて
なるべく簡単なクエリ（SPL）で作りますので、実用性はあまり無いかも知れないです。コピペで試して頂けるようにSPLも貼り付けておきます。

## ダッシュボード
### [1] 折れ線グラフ
Webサーバのログ数について、ホスト毎に1時間間隔で統計を取得し、その結果を折れ線グラフで表示したものがこちらです。
![スクリーンショット 2024-05-26 18.08.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/fc2e5fe4-ed74-649f-3756-5ed07df29da8.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie" 
| timechart count span=1h by host
```

### [2] 面グラフ
先ほどの内容を面グラフ（各ホストの統計をスタック）で表示したものがこちらです。
![スクリーンショット 2024-05-26 18.15.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/5bac53be-f6f7-755f-c921-8ee06668c41a.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie" 
| timechart count span=1h by host
```

### [3] 縦棒グラフ
Webサイトの訪問者が実施したアクション毎に統計を取得し、その結果を縦棒グラフで表示したものがこちらです。
![スクリーンショット 2024-05-26 18.24.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/32d3eba8-c5a9-49c8-4461-cc17499eaa11.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie" 
| stats count by action
| sort - count
```

### [4] 横棒グラフ
先ほどの内容からWebサーバ毎のアクションについて統計を取得し、その結果を横棒グラフで表示したものがこちらです。
![スクリーンショット 2024-05-26 18.28.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/9bd17c73-cc69-4f3c-7c36-e555b6b5ed96.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie" 
| stats count by action,host
| xyseries action host count
```

### [5] 円グラフ
Wenサーバにアクセスした際のステータスコードを統計で取得し、円グラフで割合を表示したものがこちらです。
![スクリーンショット 2024-05-26 18.30.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/7553f03f-f9cf-f8b5-6e70-c6175530dc15.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie" 
| stats count by status
```

### [6] 散布図
WenサーバにアクセスしたクライアントIPアドレスから通信量の合計バイト数、アクセス数に関する統計を取得し、散布図で表示したものがこちらです。
![スクリーンショット 2024-05-26 22.35.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/4aa6c95c-e3de-f93f-192c-ca0a30ee45e2.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| stats count,sum(bytes) by clientip
```

### [7] バブルチャート
WenサーバにアクセスしたクライアントIPアドレスから通信量の平均バイト数、合計バイト数、アクセス数に関する統計を取得し、バブルチャートで表示したものがこちらです。
![スクリーンショット 2024-05-26 22.45.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/0e910903-3e54-4c5f-219b-74f55d1a9491.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| stats avg(bytes),sum(bytes),count by clientip
```

### [8] 単一値
Webサーバのログ数を1日毎に統計を取得し、単一値で表示したものがこちらです。差分は前日比です。
![スクリーンショット 2024-05-26 22.46.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/1b50aa4b-7267-e132-1259-70e05e879294.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| timechart span=1d count by sourcetype
```

### [9] 放射状ゲージ
Webサーバのログから直近100件の中でカテゴリIDフィールド(categoryId)を持つデータの統計を取得し、放射状ゲージで表示したものがこちらです。
![スクリーンショット 2024-05-26 22.55.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/023c1fb1-e8ec-5cb2-59bd-78718db1fb78.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| head 100
| stats count(categoryId)
```

### [10] フィラーゲージ
Webサーバのログから直近100件の中でアクションフィールド(action)を持つデータの統計を取得し、フィラーゲージで表示したものがこちらです。
![スクリーンショット 2024-05-26 22.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/18d11ce1-03b3-7a4d-cfe9-d1008608bf00.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| head 100
| stats count(action)
```

### [11] マーカーゲージ
Webサーバのログから直近100件の中で製品IDフィールド(productId)を持つデータの統計を取得し、フィラーゲージで表示したものがこちらです。
![スクリーンショット 2024-05-26 23.00.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/d109066a-cc62-650f-ee3f-924774830de2.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| head 100
| stats count(productId)
```

### [12] クラスターマップ
WebサーバのログにあるクライアントIPアドレスから地理情報(緯度、経度など)を割り出し、国別にログ統計を取得し、クラスターマップで表示したものがこちらです。
![スクリーンショット 2024-05-26 23.07.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/92234787-a833-4980-9301-667fad6a3573.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| iplocation clientip
| geostats count by Country
```

### [13] コロプレスマップ
WebサーバのログにあるクライアントIPアドレスから地理情報(緯度、経度など)を割り出し、国別にログ統計を取得し、コロプレスマップで表示したものがこちらです。
![スクリーンショット 2024-05-26 23.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3310888/024c00e9-1d26-b9f0-4519-95c324b85291.png)
```SPL:SPL
index=main sourcetype="access_combined_wcookie"
| iplocation clientip
| stats count by Country
| geom geo_countries featureIdField=Country
```

## 終わりに
ここで紹介した内容は、Splunkのほんの触りです。App/Add-onを入れる事で可視化表現の量や質が格段と向上します。また、可視化した内容はダッシュボードとして纏める事も可能です。奥が深くて沼ります。興味を持たれた方は体感してみてください。