Splunkで取り込んだデータをサーチし可視化するための肝が、SPLとダッシュボードです。 Splunkでは、データをサーチし、加工するためにSPLを使用します。 SPLによって得られた結果を可視化するための機能がダッシュボードです。
1. SPL(Search Processing Language)
SPL(Search Processing Language)は、Splunkでデータをサーチし加工するためのSplunk独自言語です。 データベースにおけるSQLに相当します。
SQLに相当すると言ってしまうと抵抗がある人もいるかもしれません。 しかし、実は単なる文字列を全文検索したり、単純に一つのフィールドを指定してフィルタリングすることも、広い意味でのSPLと言えます。
単純なSPLの例は以下の通りです。
error
index=main user=john
SPLは、上記のように文字列やフィールドでテキストデータをフィルタリングしたあと、パイプ(|)を使って処理を連結させることができます。 これはSQLとは異なるSPLの特徴です。Linuxコマンドのパイプライン処理と同様に、パイプによって何回でも異なる処理を連結させることが可能です。
例えば以下は、mainインデックスからHTTPステータスコードが500(Internal Server Error)であるログだけをサーチし、クライアントIPアドレス毎に何回そのログが出力されたかを分析するSPLの例です。
index=main status=500
| stats count BY clientip
SPLは、パイプで処理を連結させ、データを目的に応じて自在に加工・変換することを実現しています。 これにより、Splunkは単純な集計から複雑な統計処理まで、様々な可視化に対応したデータセットを柔軟に作成することが可能になっています。
2. ダッシュボードとパネル
初めてSplunkを知った時、多くの人は綺麗で整理されたダッシュボードに目を奪われたのではないでしょうか。 Splunkでは、SPLによってサーチし加工した結果を、グラフやチャートなどの視覚効果を使って表現することができます。 サーチによって視覚化された一つのオブジェクトをパネルと呼びます。 パネルを複数並べたものがダッシュボードです。
Splunkのパネルは、SPLによって出力されたサーチ結果を可視化することで作成できます。 可視化の種類ごとに求められるデータ形式は異なるため、SPLではその形式に合わせてサーチ結果を出力する必要があります。 ただし、SPLの書き方にはある程度の自由度があり、Splunkが出力結果を解釈して適切な形で可視化してくれることも多くあります。
Splunkのパネル/ダッシュボードは、取り込むログや可視化の目的がユーザー毎に異なるため、要件やデータに合わせて、カスタマイズして作成することが一般的です。 ただ全て一から自作しなければならないというわけではなく、後述するsplunkbase上でAppとして他ユーザーによって公開されているダッシュボードを流用したりコピーして使用することも可能です。
3. Splunkのサーチ画面
以下が、実際のSplunkのサーチ画面です。
画面上にSPLを入力するサーチバーがあり、画面右下にサーチ結果であるイベントが表示されます。 画面左下に、サーチ結果に含まれるフィールドが表示されています。
4. まとめ
- SPLはSplunkの独自言語で、データベースにおけるSQLに相当する
- 単純な全文検索やフィールドサーチもSPLの一種
- Splunkでは、サーチ結果をパイプ(|)で接続することができる
- 一つの可視化オブジェクトのことをパネルと呼ぶ。パネルをまとめたものがダッシュボード
- Splunkのダッシュボードはユーザーが自分の要件に合わせてカスタマイズするケースがほとんど
- ダッシュボードはsplunkbase上で他ユーザーによって公開されているものを流用可能