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するよう。
制限事項と注意事項
- 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というディレクトリを掘ってます。

Cluster Masterから、indexerに設定を配布する
このパターンだと、AccesskeyとsecretIDをベタがきで、AWS的にはbad practiceな気がするので、あとでIAMで設定できないかやってみる
[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の設定は完了
# 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にも来ているかみてみると、確かにデータはある

IAMでやってみる
IndexerにIAMロール設定
こんな感じ

Cluster Masterから、remote keyを削除して、apply
# 設定修正
[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でやろう!!
[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の状態を確認できるようになっている〜
こんな感じ。


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