LoginSignup
53
54

More than 5 years have passed since last update.

Splunkコマンド集 その1

Last updated at Posted at 2017-06-20

Splunkを使ってて面白い最大の理由(個人的な意見ですが)がサーチコマンドです。
いろいろなサーチコマンドを組み合わせてグラフィカルに表現できたときは楽しいですよね。

ということで、今回はSplunkサーチコマンドを紹介します。

はじめに

Splunkには合計約140のサーチコマンドがあります。
とはいえ、実際によく使うのは10〜20くらいのものなので、それらを押さえておけばたいていのことはできます。

Splunkサーチコマンドについて

ログを検索するだけではなく、整形したり集計するのに使います。
基本的な使い方はLinuxコマンドと同じで、パイプ(|)でつなげて、前のコマンドの出力が次のコマンドの入力になるイメージです。

例えば

sourcetype=access_combined | stats count by status | sort - count

という具合です。

コマンド紹介

stats

統計をとるコマンド。
一番よく使うといっても過言ではないコマンド。
countavgsumといった関数を使って集計します。
by句の後には、集計の単位となるフィールドを指定。

例)

... | stats avg(score) as avg_score by user_id

chart

こちらも統計をとるものでstatsと同じように関数を利用可能。
statsとの違いは、行・列の表形式にまとめてくれること。その際、over句を使います。
overが行に、byが列になります。

例)

sourcetype=apache:access | chart count over useragent by http_status

timechart

時系列に統計をとるコマンド。
関数を利用可能。
span= オプションで時間間隔を指定可能。単位は s(秒) m(分) h(時間) d(日)。

例)

sourcetype=apache:access | timechart span=5m count by http_status

top

頻出値を集計するコマンド。
指定したフィールドの値で件数が多い順に集計してくれる。
limit= オプションで表示件数を指定可能。

例)

sourcetype=access_combined | top limit=10 useragent

同じことを stats でやろうとすると、、、

sourcetype=access_combined | stats count by useragent | sort - count | head 10

こう書かなきゃいけないので、 top の方がラクですね。

rare

topの逆。稀少値を集計。
指定したフィールドの値で件数が少ない順に集計してくれる。

例)

sourcetype=access_combined | rare limit=10 useragent

search

検索するコマンド。
一番最初に sourcetype=... とか書いていますが、これはsearchを省略した形になります。
当然、パイプの後に書くこともできます。

例)

sourcetype=access_combined | stats count by status | search count>100

where

こちらも検索するコマンド。
searchとの違いは、isnull()isnotnull()といった関数を使ったり、フィールド同士の比較ができること。

例)

sourcetype=access_combined | stats count by status  | where isnotnull(count)

eval

計算するためのコマンド。evaluationの略か。
例えばログの中のバイトをメガバイトに換算したり、関数を使ってエポック時間を人間が読み取れる形式に変換したりできます。

例)

... | eval human_time=strftime(unix_time, "%Y/%m/%d:%H:%M:%S")

rex

ログの中からフィールドを抽出するコマンド。
正規表現を使ってフィールド抽出します。けっこうコツがいるのですが、思い通りに抽出できると気持ちいいです。

例) User-Agentからデバイスを抽出してみた

sourcetype=apache:access | rex field=http_user_agent "^[\w\-\/\.]+\s\((?P<device>[^\s\/\;]+)"

regex

searchの正規表現版。
正規表現にマッチするイベントのみ表示します。

例) IPアドレスが10.xxx.xxx.xxxのログを検索

sourcetype=linux_secure | regex src_ip="10\.(\d+\.){2}\d+"

dedup

指定したフィールドの値を重複除外するコマンド。
個人的にはあまり使い道ないです。

lookup

外部参照のコマンド。
例えば、ログの中にある製品IDから製品名を取得するためにCSVファイルを参照したり、HTTPステータスコードからステータス概要をCSVファイル参照したりするときなんかに使います。

例)

... | lookup products.csv product_id OUTPUT product_name price

最後に

というわけで、ざっくり基本的なコマンドを紹介しました。
まだまだ使えるコマンドはあるので、その2以降で紹介します。

Splunk使う上では自分がほしい出力に向けてコマンドを使いこなすことが大事なので、いろいろ知っておいて損はないです。
コマンド覚えるの大変、とか、とっつきづらい、という感想を持つかもしれませんが、慣れてくれば簡単に使いこなすことができるようになります。
そうなると楽しいですよね。

リンク集

Splunkコマンド集 その2
http://qiita.com/kikeyama/items/4d5cae888020c247ae3c

53
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
54