前章までで、Splunkのサーチの基本やフィールドについて学習しました。 しかしSplunkのSPLの価値の本質は、サーチを行った後、データを加工・計算したり、ダッシュボード上に表示するための出力形式を自由に変換できることにあります。
本章では、SPLの概念と特徴を説明し、いくつかの基本的なSPLコマンドを説明します。
1. SPLの概念と特徴
SPLは、Splunkの独自サーチ言語です。 そしてその価値の本質は「サーチを行った後、データを加工・計算したり、ダッシュボード上に表示するための出力形式を自由に変換できること」です。
この機能を実現するために、SPLには以下の特徴があります。
- Linuxコマンドのように、パイプ(
|)でサーチ結果を引き継ぐことができる - 140以上のSPLコマンドが用意されており、データの生成/変更/変換など多種多様な処理を行うことができる
同じデータを処理するための言語としてSQLがありますが、SQLはデータベースに対して追加/読み取り/更新/削除を行うことが目的である言語であるのに対し、SPLはデータを取り出し、加工し、人間が理解・分析できる形式に変換することが目的の言語であると言えます。
SPLの例を以下に挙げます。
index=main sourcetype=access_combined_wcookie status>=400
| stats count AS failures BY clientip
| sort 5 - failures
上記は1行目でサーバーログイン失敗ログをフィルタリングしています。
次に、パイプ(|)を使ってそれを引き継ぎ、statsという統計処理を行うSPLコマンドを実行し、ユーザー別にログ数をカウントしています。
最後に、得られたデータをカウント数の降順(つまり、大きい順)にソートします。
上記のSPLを実際に実行すると、以下のような結果を得られます。(時間範囲を全期間にして実行してください)
| clientip | failures |
|---|---|
| 87.194.216.51 | 142 |
| 211.166.11.101 | 94 |
| 128.241.220.82 | 78 |
| 194.215.205.19 | 71 |
| 188.138.40.166 | 59 |
このように、パイプによる引き継ぎと、SPLコマンドによる処理を組み合わせによって、Splunkは非常に柔軟にデータ処理を行うことができます。
2. 基本的なSPLコマンド
Splunkが用意しているSPLコマンドの数は非常に多いため、まずは最も基本的なコマンドを紹介します。
これらSPLコマンドは、フィールドや文字列を指定してサーチを実行した後、基本的にはパイプ(|)で引き継がれたイベントに対して後続処理を行います。
以下のコマンドは、Splunk Core Certified User試験の出題範囲として指定されている基本的なコマンドとなります。
table
イベントをテーブルフォーマットに変換するコマンドです。ヘッダーを引数として指定します。
| table <field1> <field2> ...などと指定することで、field1 field2 ...を列に持つ表を作成して表示することができます。
index=main sourcetype=access_combined_wcookie
| table _time clientip method status action
上記のコマンドは、得られたイベントから_time, clientip, method, status, actionフィールドをヘッダーとするテーブルデータを作成します。
rename
フィールド名を一時的に変更するコマンドです。
index=main sourcetype=vendor_sales
| rename VendorID AS vendor_id
上記のコマンドは、得られたイベントからVendorIDの名前をvendor_idに変更して表示します。
fields
イベントについて、指定したフィールドのみを残したり、指定したフィールドのみを削除できます。 これによって、表示されるフィールドを限定させることができ視覚性を向上させることができます。
index=main sourcetype=access_combined_wcookie action=purchase
| fields - host source
上記のコマンドは、得られたイベントからhost, sourceを削除します。
dedup
指定したフィールドをもつ重複イベントを削除し、最初の1件のみを残します。複数フィールドを指定した場合、それらフィールドの組み合わせが完全に一致するイベントのみをそれぞれ1件のみ残します。
index=main sourcetype=access_combined_wcookie action=purchase
| dedup clientip
上記のコマンドは、得られたイベントからclientipについて先頭のイベントのみを残して表示します。
sort
指定したフィールドでソートするコマンドです。
index=main sourcetype=vendor_sales
| stats count AS sales BY VendorID
| sort - sales
上記のコマンドは、VendorID別のログ数を集計してsalesという名前にした後、salesを昇順に並べ替えます。
3. まとめ
- SPLの価値の本質はサーチ後のデータを加工・計算し、出力形式を自由に変換できること
- SPLの特徴は二つ。パイプ(
|)で処理を連結できることと、140以上のコマンド種類があり多様な処理を行えること table/rename/fields/dedup/sortは、Splunk Core Certified User試験で指定されている最も基本のSPLコマンド