Splunk Smart Storeを使ってみる

Splunkで7.2くらいからリリースされてるSmart Storeを使ってみる。

#Smart Store(S2)とは

ざっくりいうと、
- Splunkのindex dataをS3 OR S3互換のStorageに入れることができる
- cacheが作成され、そこからデータを返すので早い(cache manager)
- 安価なストレージにデータを入れられる
- リバランスからの復帰が早い

っていう感じ。

動作的には、Hot BucketからWarmにロールするタイミングで、local cacheが作成されて、S3にデータがmoveするよう。

## 制限事項と注意事項
https://docs.splunk.com/Documentation/Splunk/7.3.0/Indexer/SmartStoresystemrequirements

- RFとSFのあたいは同じにしなければいけない
- standaloneで使えるのは7.3.0から
- 小規模環境だとあんまり使う意味がなさそう
- 30日以上のデータが必要で、1日100Gくらいいれてるのであれば、3000GBくらいローカルストレージがいるみたい。
- EC2だと同じregion上にS3作成する必要あり

# 設定してみる
今回はSearchhead x 1,Index Cluster(2台),Cluster Masterの構成で作りました。
versionは7.3.0です。

##S3のBucketを作る
今回はTokyo RegionにSmartstore73というbucketをつくって、そこにindexdataというディレクトリを掘ってます。

<img width="1367" alt="Screen Shot 2019-06-14 at 2.29.16 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/aac87900-6ab9-847c-cd8c-7f840d00b8a6.jpeg">

##Cluster Masterから、indexerに設定を配布する
このパターンだと、AccesskeyとsecretIDをベタがきで、AWS的にはbad practiceな気がするので、あとでIAMで設定できないかやってみる

```bash
[root@v6-cm01 local]# vim /opt/splunk/etc/master-apps/_cluster/local/indexes.conf

[default]
# put all indexes on SmartStore
remotePath = volume:rstore/$_index_name

[volume:rstore]
storageType = remote
path = s3://smartstore73/indexdata
remote.s3.access_key = XXXXXXXXXXXXXXXXXXXX
remote.s3.secret_key = XXXXXXXXXXXXXXXXXXXX

#設定後、Cluster Masterからindexerに配布
[root@v6-cm01 local]# /opt/splunk/bin/splunk apply cluster-bundle
```

## Indexerの一台からS3に接続できるかチェックする
これでうまくいけば、Smart Storeの設定は完了

```bash
#S3に接続できていればこんなメッセージが出る
[root@v6-idx01 ec2-user]# /opt/splunk/bin/splunk cmd splunkd rfs -- ls --starts-with volume:rstore
size,name
0,/
7,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/.rawSize
6,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/.sizeManifest4.1
258688,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/1560343533-1560341448-148104895620861667.tsidx
265,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/Hosts.data
111,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/SourceTypes.data
107,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/Sources.data
10880,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/bloomfilter
67,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/bucket_info.csv
53783,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/rawdata/journal.gz
49,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/rawdata/slicemin.dat
260,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/rawdata/slicesv2.dat
94,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/splunk-autogen-params.dat
```

##S3側からみてみる
index=mainに入ってるデータがS3にも来ているかみてみると、確かにデータはある

<img width="1408" alt="Screen Shot 2019-06-14 at 2.36.30 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/926a63b3-a156-3613-7eff-75cfed012943.jpeg">

## IAMでやってみる

### IndexerにIAMロール設定
こんな感じ

<img width="961" alt="Screen Shot 2019-06-14 at 2.38.45 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/b3f13f0c-c14f-8bb0-09ef-44e1359a79c0.jpeg">

### Cluster Masterから、remote keyを削除して、apply

```bash
#設定修正
[root@v6-cm01 local]# cat /opt/splunk/etc/master-apps/_cluster/local/indexes.conf
[default]
# put all indexes on SmartStore
remotePath = volume:rstore/$_index_name

[volume:rstore]
storageType = remote
path = s3://smartstore73/indexdata

[cs_index]
coldPath = $SPLUNK_DB/cs_index/colddb
homePath = $SPLUNK_DB/cs_index/db
thawedPath = $SPLUNK_DB/cs_index/thaweddb
[root@v6-cm01 local]#

#apply bundle
[root@v6-cm01 local]# /opt/splunk/bin/splunk apply cluster-bundle
Your session is invalid.  Please login.
Splunk username: admin
Password:
Created new bundle with checksum=56A423DEFD916390439C766C596A4C90
Applying new bundle. The peers may restart depending on the configurations in applied bundle.
Please run 'splunk show cluster-bundle-status' for checking the status of the applied bundle.
OK
[root@v6-cm01 local]#
```

### Indexer側からS3に接続できるか確認
ちゃんと見えてるので、IAMでやろう！！

```bash
[root@v6-idx01 ec2-user]# /opt/splunk/bin/splunk cmd splunkd rfs -- ls --starts-with volume:rstore
size,name
0,/
7,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/.rawSize
6,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/.sizeManifest4.1
258688,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/1560343533-1560341448-148104895620861667.tsidx
265,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/Hosts.data
111,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/SourceTypes.data
107,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/Sources.data
10880,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/bloomfilter
67,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/bucket_info.csv
53783,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/rawdata/journal.gz
49,/_audit/db/0d/83/3~52B19030-207D-4F20-B2F4-ED28D94C979F/guidSplunk-52B19030-207D-4F20-B2F4-ED28D94C979F/rawdata/slicemin.dat
```

##DMCからも確認できる
7.3から、DMC上にSmartStoreの状態を確認できるようになっている〜
こんな感じ。

<img width="570" alt="Screen Shot 2019-06-14 at 2.43.57 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/c02832a6-25b5-6465-1744-2bb2a1ed497d.jpeg">

<img width="302" alt="Screen Shot 2019-06-14 at 2.44.02 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/8d642972-c819-e7fb-2404-b12951057299.jpeg">

![FireShot Capture 028 - SmartStore Activity_ Instance - Splunk 7.3.0 - 13.231.92.201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/8dc59d07-d636-7c48-e5d4-7fabe9add891.png)


#おわりに
設定自体は簡単にできるのと、得られる効果はそれなりにあるので、AWS上で環境がある人はやってみたらいいのでは！