![見出し画像](https://assets.st-note.com/production/uploads/images/51040889/rectangle_large_type_2_03d24a86d1801d3ef3340eec56fee242.jpeg?width=1200)
Splunkを用いたデータサイエンス その2
前回Splunkの超簡単な紹介をさせていただきましたが、軽くググると分かる通り結構多機能なソフトウェアのため、使い方次第で様々な利用目的に使えると思います。(前回)Splunkを用いたデータサイエンス
Splunk公式のドキュメントや日本の代理店が提供している事例はSIEMだったりセキュリティに特化しているかのような印象が強いかもしれません。ですが!
データサイエンスをこれから学びたい人のトレーニングにお使いいただくにもハードルは高くないと思って大丈夫です。
前回お伝えしたとおりSplunkの特徴はサーチエンジンとして全文検索に優れている点ですので、Twitterのデータを取り込んで見るところをやってみましょう。20分くらいでこんな感じのものができます。
準備するもの
・Splunk
・Google Import/Export (Splunkのadd-on APP)
https://splunkbase.splunk.com/app/2630/
・Twitterのデータ(もしくはTwitterAPIアカウント)
・GCPのプロジェクトとサービスアカウント
今回のためにTwitterアカウントとAPIの利用申請をしました。
割とこれもネット上の情報ですぐにできますね。
GAS、Google Apps Scriptでスクリプト作成してTwitterサーチAPIで取得したデータをスプレッドシートに吐き出します。(ここも面白かったので、また記事に書きます。)
ここではsplunk上の操作を書いていきます。
まずはadd-onの準備ですね。
上記のリンクよりダウンロードでユーザ情報求められるので、入力するとファイルダウンロードができます。
SplunkメニューのApp→Appの管理
右上の「ファイルからAppをインストール」
こちらの画面からダウンロードしたファイルをアップロードします。
このような感じで「GoogleDrive」のアプリが追加されるので、設定に移動します。
事前に発行したJSONキーをドラック&ドロップします。
それが完了したら、またメニューから今度は設定→データ入力と進みます。
(その前に取り込み先のルックアップファイルとルックアップ定義を用意しておく必要があります。データは空で良いのでLooku EditorというAppを使い新規作成するのが早いと思います。)
ローカル入力の一覧にスプレッドシートが追加されていると思います。
ルックアップのところに新規作成したルックアップ定義を選択します。
あとはファイル名とシート名を入力しておきます。(IDではないので、名前変更するとたぶんダメなのかな?)
さて、これで連携を待てばよいはず。
あれ?連携されないんですけど。。。
焦らずエラーログを確認します。
index=_internal (service_account_keys AND sourcetype=splunk_web_service)
OR (sourcetype=google_spreadsheet_modular_input)
SpreadSheetAPIとGoogleDriveのAPIの両方を有効にしないといけないんですね。
うっかり。GCP側のAPIの設定で許可します。
整理しておくと、
<GCP>
・サービスアカウントの作成
・「API とサービス」からAPIライブラリでGoogle Drive API とGoogle Spreadsheet APIを有効にする
<Spreadsheet>
・右上の共有からサービスアカウントのメールアドレスに編集を共有
無事にルックアップテーブルが作成されました!
tr_testとルックアップファイル定義をしたので、以下のクエリだけで結果がでてきます。
| inputlookup tr_test
ここまでやってルックアップファイルとしてデータをもたせるのではなく、インデックスしたデータとしてデータをもたせたいと思いました、、(遅い)
ということで、サマリーインデックスを作ります。
| inputlookup tr_test
| eval _time=strptime(created_at,"%Y/%m/%d %H:%M:%S")
| collect index=from_ss
こんな感じでインデックスを作成して、指定することでデータがインデックスされます。
元データからタイムスタンプとなるカラムは”_time”という名前でフィールド(カラム)を作成してあげると、ちゃんとタイムスタンプフィールドとして認識されます。
今回のおさらい
コマンド
inputlookup
collect
eval 時間の関数(かなり関数は充実しています/裏側はpythonなので)
あとは、index=_internalにてSplunkでの操作、サーチやデータインデックスなどの内部ログを確認することができます。
最初は何をキーワードに調べていいかわからないかもしれませんが、公式のマニュアルやSplunkコミュニティの質問などを調べるといいかなと思います。
ではでは、今回も読んでいただきありがとうございました!!