Splunk のサーチ文を使ってみよう!!

Splunk のサーチ文を使ってみよう!!

前回、では Splunk という技術があるということを紹介しました。Splunk に触れば触るほど、「あんな情報も取り出したい」、「こんな情報も見てみたい」などやりたいことがドンドン出てきます。使うたびに楽しくなってきます。「情報を取り出す」、「情報を見つけ出す」ために使うのが、サーチ処理言語 ( SPL ) とよばれる Splunk 独自の処理言語です。SPL はなんと全部で数百種類ありますが、安心してください。よく使う SPL の種類は限られています。つまり、主要なSPLはすぐに覚えられます。ということで、今回のコラムでは、よく使うサーチ処理言語 ( SPL ) を紹介していきます。

前回の記事はこちら

基本的なサーチコマンド

よく使う サーチコマンド は、7つあります。


1つの命令文の中で、各サーチコマンドを ” | “ (パイプ) で繋げて使用することで、より 詳細な分析結果 を得ることができます。

例えば、sourcetype が Secure server logs であるイベントの中で、host が何台あるのかをサーチし、ホスト名の昇順で出力したい時には、下記のように命令文を書きます。

記述例

sourcetype="Secure server logs"
 |dedup host
 |sort host

 

ちなみに、dedup コマンド は SQL でいうところの distinct で、sortコマンド は、SQL でいうところの order by に相当します。SQL をご存知であれば、よりとっつきやすいかと思いますが、SQL をご存知なくても簡単につかいこなせる 所が、SPL の魅力です。

この後も、前回 で取り込んだ、 Secure server logs に対してそれぞれのサーチコマンドを実行してみましょう。

1. searchコマンド

まず始めに紹介するのは、search コマンド です。searchコマンドを使用することで、特定ワードを含んでいるイベントをサーチ できます。ワードのサーチは小文字、大文字を区別しません。

(1)  sourcetype が Secure server logs であるイベントの中で、failed ワードを含むイベントをサーチします。

sourcetype="Secure server logs"
 | search failed

(2)  sourcetype が Secure server logs であるイベントの中で、FAILED ワードを含むイベントをサーチします。

sourcetype="Secure server logs"
 | search FAILED

上記は同じ結果が得られます。

 

2. dedup コマンド

2つ目に紹介するのは、dedup コマンド です。dedupコマンドを使用することで、フィールド値のユニークな ”モノ” を取得 できます。

(3) sourcetype が Secure server logs であるイベントの中で、host が何台あるのかをサーチします。

sourcetype="Secure server logs"
 | dedup host

下記の結果から、4台のホストが存在することがわかります。

 

3. sort コマンド

3つ目に紹介するのは、sort コマンド です。sort コマンドを使用することで、フィールド値のサーチ結果を並び替えた状態で出力 することができます。デフォルトでは、昇順(小さいもの順)で出力され、降順(大きいもの順)に並び替えるには ” – “ を使用します。

(4) sourcetype が Secure server logs であるイベントの中で、host が何台あるのかをサーチし、ホスト名の昇順で出力します。

sourcetype="Secure server logs"
 | dedup host
 | sort host

(5) sourcetype が Secure server logs であるイベントの中で、host が何台あるのかをサーチし、ホスト名の降順で出力します。

sourcetype="Secure server logs"
 | dedup host
 | sort – host

4. stats コマンド

4つ目に紹介するのは、stats コマンド です。stats コマンドを使用することで、イベントやフィールド値の統計計算 を行うことができます。例えば、stats count ~ と使うことで、フィールドの数をカウントすることができます。グルーピングするには、by を使用しましょう。

(6) sourcetype が Secure server logs であるイベントの総数をサーチする。

sourcetype="Secure server logs"
 | stats count as Total

※as を使用することでフィールドに別名を付けることができます。

(7) sourcetype が Secure server logs であるイベントの port別の数をサーチし、利用頻度の多い port 番号(降順)から並び替える。

sourcetype="Secure server logs"
 | stats count as Total by port
 | sort - Total

 

5. table コマンド

5つ目に紹介するのは、tableコマンド です。table を使用することで、サーチ結果をテーブル表示 します。特に、イベントで注目したいフィールドを抜き出すときによく使います。

(8) sourcetype が Secure server logs であるイベントの ipアドレスと port番号をテーブル表示します。

sourcetype="Secure server logs"
 | table ip port

 

6. eval コマンド

6つ目に紹介するのは、eval コマンド です。eval コマンドを使用することで、計算式に基づいた新たなフィールドの作成 ができます。
※evalコマンドの詳細は、 こちら をご確認ください。

(9) sourcetype が Secure server logs であるイベントの、port 番号が2000より大きいものを Large、port 番号が2000より小さいものを Small として、結果を新たなフィールド Large-Port に書き込みます。

sourcetype="Secure server logs"
 | eval Large-Port=if(port>2000,"Large","Small")
 | table Large-Port port

 

7. chart コマンド

最後に紹介するのは、chart コマンド です。chart コマンドを使用することで、サーチの出力結果をグラフ表示 することができます。 ” by “ と “ over “ の使い方に注意が必要です。

(10) sourcetype が Secure server logs であるイベントのホストごとのアクセス数をサーチします。

sourcetype="Secure server logs"
 | chart count by host

(11) sourcetype が Secure server logs であるイベントのホストごとのアクセス数を、アクセス元IPアドレスか毎にサーチします。

sourcetype="Secure server logs"
 | chart count over ip by host

このように、overを使用することで、より詳細な内訳を確認できるようになります。

データのビジュアル化

Splunk では、SPL を使って サーチした結果をビジュアル化 することもできます。

例えば、 sourcetype が Secure server logs のイベントについて、アクセス元の IP アドレスの地域をビジュアル化してみましょう。

(12) Secure server logs 内のイベントを地図上に表示します。

sourcetype="Secure server logs"
 | iplocation ip
 | geostats count

※iplocation コマンド は、アクセス元のIPアドレスから、位置情報となる緯度と経度を算出 します。
※geostats コマンド は、位置情報別のアクセス数 をカウントします。

Splunk では、今回のマップ以外にも、折れ線グラフ、面グラフ、縦棒グラフ、横棒グラフ、など 多数のビジュアル化方法 が用意されておりますので、ビジュアル化の種類については次回のコラムで紹介します。お楽しみに!!

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。