前回、では 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 に対してそれぞれのサーチコマンドを実行してみましょう。
まず始めに紹介するのは、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 コマンド です。dedupコマンドを使用することで、フィールド値のユニークな ”モノ” を取得 できます。
(3) sourcetype が Secure server logs であるイベントの中で、host が何台あるのかをサーチします。
sourcetype="Secure server logs" | dedup host
下記の結果から、4台のホストが存在することがわかります。
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 コマンド です。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コマンド です。table を使用することで、サーチ結果をテーブル表示 します。特に、イベントで注目したいフィールドを抜き出すときによく使います。
(8) sourcetype が Secure server logs であるイベントの ipアドレスと port番号をテーブル表示します。
sourcetype="Secure server logs" | table ip port
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
最後に紹介するのは、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 では、今回のマップ以外にも、折れ線グラフ、面グラフ、縦棒グラフ、横棒グラフ、など 多数のビジュアル化方法 が用意されておりますので、ビジュアル化の種類については次回のコラムで紹介します。お楽しみに!!
記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。