【Splunkデモ】Splunkことはじめ〜初心者が作るデモ環境構築〜

こんばんは。torippy1024です。
本日は、Splunk実務経験なしの私が、公式サイトのチュートリアルに沿ってSplunk Cloudのデモ環境を構築した手順を示します。

これを読めば、初心者でもSplunkのデモ環境を構築できます！


というか、やる気がある方はこれを読まなくても、公式サイトのチュートリアル手順を読めばできるので、お試しください。
やる気がないわけではないがあまり気が進まない方は、まずこの記事を読んでやった気になった後、この程度なら簡単にできるな！と気分を上げてから実際に手を動かしてみてください。
やる気のない人は記事を読む前に昼寝をするとよいと思います。たぶん睡眠不足です。

>公式サイトのチュートリアル手順
https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/WelcometotheSearchTutorial (英語版)
https://docs.splunk.com/Documentation/Splunk/9.1.2/Translated/Japanesemanuals (日本語版。こちらのリンク集から「サーチチュートリアル」を参照。日本語版を参照する場合、バージョンが最新版かも要確認)

## Splunkとは何なのか？どんな製品なのか？
そもそも、Splunkとは何か？ということについて、念のため超概要を書いておきます。
一言で説明すると「サーバーやNW機器のログを収集し、分析するためのソフトウェア」となりますが、もう少しだけ詳細に説明をすると、以下の3製品くらいで構成されています。
(公式サイトhttps://www.splunk.com/en_us/products.html より引用)

- Splunk Platform
  - Splunkの根本であるSplunk Cloud(SaaS版)と、Splunk Enterprise(オンプレミス版)を合わせた製品がPlatformです。Splunk Coreとも呼ばれることがあります。ログの収集・蓄積・GUIによるサーチ/レポーティング機能などを持っています。最初はオンプレミスであるEnterpriseから始まりましたが、世の中の流れに沿ってクラウド上で実行されるCloudも使えるようになり、最近の押しはSplunk Cloudです。チュートリアルで使うものもSplunk Cloudです。
- Splunk Security
  - 名前の通りのセキュリティ製品です。SplunkはSIEM(Security Information and Event Management)機能でシェアが高く、Gartnerのマジッククアドラントで9年連続リーダー評価を取得したことがあります。SIEMの実現には、ITシステムを構成するサーバー/NW機器などからリアルタイムにログを収集し、分析することが必要であり、Splunkはこの機能に優れています。
- Splunk Observability
  - 最近いろいろなところで利用され始めているオブザーバビリティ製品です。一応この製品もGartnerのマジッククアドラントで2023年にリーダー評価をもらっています。(DynatraceとかNew RelicとかDatadogとかと一緒ですが・・・)オブザーバビリティ製品とは何かを一言でいうと、従来のシステム運用観点の監視とは観点が異なり、ユーザー観点でレスポンス時間やシステム(主にアプリケーション等)の挙動を監視することを主眼においた製品です。

今回、チュートリアルで用意するデモ環境は、Splunk Cloud上に構築します。これにはSecurity機能やObservability機能は含まれません。

## 【手順1】アカウント作成
Splunk Cloudのトライアル版を申し込むため、まずはアカウント作成をします。
以下からアカウントを作成してください。
https://www.splunk.com/ja_jp/sign-up.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/e28de687-7f84-9d35-6537-912cd05a60d7.png)

アカウントを作成し、ログインしたらSplunk Cloudトライアル版の申し込みです。
https://www.splunk.com/ja_jp/download/splunk-cloud.html
上記から申し込みすると、ログイン先URL、ユーザーID、パスワードが書かれたメールを受け取れます。
トライアル版の期限は15日ですが、一回きりというわけでもなく、交渉次第で延長もできそうです。またトライアル期限が切れた後に再申込みしてもよいようです。


Splunk Cloudにログインすると以下のような画面になるはずです。

![900px-9.0.2303_splunk_home-compressor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/493be631-b73a-4ed8-9b64-84f92b36dec9.png)
(画像引用元：https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/NavigatingSplunk ってチュートリアル画面まんまですが許して)

## 【手順2】サンプルデータの取得とアップロード
画面を見ただけではSplunkで何ができるのかわからないので、データが必要です。
実際にサーバーを用意してエージェントを入れてログ収集するほうがいいのですが、Splunkがサンプルデータを用意してくれているので、今回はそれを使うことにします。
以下リンクより、「tutorialdata.zip」と「Prices.csv.zip」の二つのファイルをダウンロードしておきます。
(この記事の範囲では「tutorialdata.zip」しか使いませんが)
https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/Systemrequirements#Download_the_tutorial_data_files

サンプルデータファイルは、そのままデモ環境にアップロードするので、解凍する必要はありませんが、好奇心のある方は解凍して中身を見てもよいと思います。
Buttercup Gamesという架空の企業のサンプルデータが格納されています。
https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/Aboutthetutorialdata

余談ですが、ButtercupというのがSplunkの子馬のマスコットキャラクターの名前だそうです。
(公式サイトを見ても全然見つからないのですが・・・・・・ライセンス等の問題があるんでしょうか？？)

![ButtercupMascotDashStudio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/e313bdd4-e2ea-8594-115e-e9d777da6402.png)
上記がButtercupです。
(画像引用元：https://docs.splunk.com/Documentation/SplunkCloud/9.0.2209/DashStudio/polishDashboard )


ちなみに、サンプルデータは、ダウンロード時点からさかのぼって過去7日間のタイムスタンプとなるデータを提供する仕組みになっているため、日付をまたいで作業するときは注意が必要です。(同日に作業しなかった場合、後でデモ環境でサーチを実行する際、指定する日付を工夫する必要が発生します)

Splunk Cloudのログイン後の画面に戻り、「Settings」 > 「Add Data」を選択した後「Upload」を選択します。

「Select Source」で「click Select File」を選択しtutorialdata.zipをアップロードします。

Input Settingで「Segment in path」を選択し"1"を指定します。

Review画面でパラメータが以下となっていることを確認し、Submitをします。

![700px-7.1.0_adddata_review-compressor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/f0439db6-9944-387f-2ce0-9140f7397f12.png)
(画像引用元：https://docs.splunk.com/Documentation/SplunkCloud/9.0.2209/DashStudio/polishDashboard )

ぶっちゃけ、上記の説明よりチュートリアルを読んだほうがよいと思います。(本当に。。)
https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/GetthetutorialdataintoSplunk



## 【手順3】サーチの実行
サーチを実行してみます。Splunkのサーチ実行コマンドは、SPL(Search Proccessing Language)と呼ばれる構文で定義されています。(Splunk Proccessing Languageではありません！ここテストに出たことあるなら注意な！本当だぞ！！)
ざっくりとした説明としては、SPLは、< Key > = < Valuse >の形式でログをフィルターする言語です。Splunkでは、SPLにおけるKey-ValueペアのことをFieldと呼んでいます。

ログを分析する際は、一般的にはまずログを収集した後、Excelなどで列フィルターをかけられるように整形している人も多いと思いますが、Splunkでは、このログのフィルターに使用するFieldを、Splunk自身がログからうまい具合に抽出して定義してくれるのが非常に便利な点です。


とりあえず、以下コマンドをサーチバーに入力してみます。まんまですが、categoryidをFieldとして、sportsという値を持つログを抽出するコマンドです。

`categoryId=sports`
![800px-8.2.0_tutorial_searchassistant2-compressed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/ee7335af-7505-03c6-51f5-8c37cb3e9563.png)
(画像引用元：https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/Startsearching)

>※画面イメージでは、"categoryid=sports"を指定しており、この文字列指定でも動作しますが、正確にはcategoryId=sportsとダブルクォーテーションなしで指定するほうが適切です。
"categoryid=sports"は、単なる文字列として、categoryid=sportsを検索しているコマンドです。単なる文字列指定のため、大文字小文字区別をしないサーチとなっています。
これに対し、categoryId=sportsは、Key-Valueペアを指定してサーチを実行しています。このためにKeyは大文字小文字区別ありでcategoryIdを指定し、Valueは大文字小文字区別なしでsportsを指定するサーチをしています。
>(チュートリアルを実施している時点では、上記の文章の意味が分からないと思いますので読み飛ばしてください。。。)

よっしゃあ動作した！とまずは喜んでください。
よく見ると、指定した値を含むログを表示してくれているようですが、大文字小文字を区別なく抽出してくれています。またそもそも、Splunk自身がうまい具合にcategoryidをFieldとして認識してくれていることがわかります。

AND構文やOR構文、* によるワイルドカード表現も使えます。以下コマンドをサーチバーに入力します。以下はFieldを指定していません。単純に、buttercupgamesという文字列と、かつerror OR fail* OR severeという文字列を含むログをフィルタリングしています。OR文は自動でオレンジ色になっており見やすいですね。

`buttercupgames (error OR fail* OR severe)`

![900px-8.2.0_search_events-compressed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/766c279f-9a53-4036-1902-6d87d60c225f.png)
(画像引用元：https://docs.splunk.com/Documentation/SplunkCloud/9.1.2308/SearchTutorial/Startsearching)

こんな感じで、エラーログを見つけることも一瞬でできます。


いったんは以上です。
ここまでやれば、公式チュートリアルを参照しながら、もっといろいろなことを試すことができるようになると思います。頑張ってください。
Fieldについての理解をもっと深め、Lookup、Report、Dashuboard作成などを学習すれば、Splunk Core Certified Userへの道は目前！だと思います。たぶん。。。