はじめてのSplunk ― 概要から応用までを体系的に学ぶ

4-3 SPLについての基本(table/rename/fields/dedup/sort)

前章までで、Splunkのサーチの基本やフィールドについて学習しました。 しかしSplunkのSPLの価値の本質は、サーチを行った後、データを加工・計算したり、ダッシュボード上に表示するための出力形式を自由に変換できることにあります。

本章では、SPLの概念と特徴を説明し、いくつかの基本的なSPLコマンドを説明します。

1. SPLの概念と特徴

SPLは、Splunkの独自サーチ言語です。 そしてその価値の本質は「サーチを行った後、データを加工・計算したり、ダッシュボード上に表示するための出力形式を自由に変換できること」です。

この機能を実現するために、SPLには以下の特徴があります。

  • Linuxコマンドのように、パイプ(|)でサーチ結果を引き継ぐことができる
  • 140以上のSPLコマンドが用意されており、データの生成/変更/変換など多種多様な処理を行うことができる

同じデータを処理するための言語としてSQLがありますが、SQLはデータベースに対して追加/読み取り/更新/削除を行うことが目的である言語であるのに対し、SPLはデータを取り出し、加工し、人間が理解・分析できる形式に変換することが目的の言語であると言えます。

SPLの例を以下に挙げます。

SPL: アクセスに失敗したユーザーと失敗回数を集計し、多い順に5つのIPを表示
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 ...を列に持つ表を作成して表示することができます。

SPL: tableコマンドの例
index=main sourcetype=access_combined_wcookie
| table _time clientip method status action

上記のコマンドは、得られたイベントから_time, clientip, method, status, actionフィールドをヘッダーとするテーブルデータを作成します。

rename

フィールド名を一時的に変更するコマンドです。

SPL: renameコマンドの例
index=main sourcetype=vendor_sales
| rename VendorID AS vendor_id

上記のコマンドは、得られたイベントからVendorIDの名前をvendor_idに変更して表示します。

fields

イベントについて、指定したフィールドのみを残したり、指定したフィールドのみを削除できます。 これによって、表示されるフィールドを限定させることができ視覚性を向上させることができます。

SPL: fieldsコマンドの例
index=main sourcetype=access_combined_wcookie action=purchase
| fields - host source

上記のコマンドは、得られたイベントからhost, sourceを削除します。

dedup

指定したフィールドをもつ重複イベントを削除し、最初の1件のみを残します。複数フィールドを指定した場合、それらフィールドの組み合わせが完全に一致するイベントのみをそれぞれ1件のみ残します。

SPL: dedupコマンドの例
index=main sourcetype=access_combined_wcookie action=purchase
| dedup clientip

上記のコマンドは、得られたイベントからclientipについて先頭のイベントのみを残して表示します。

sort

指定したフィールドでソートするコマンドです。

SPL: 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コマンド