🐨コアラでもわかるSplunkシリーズ ログに書いている値で集計する


やあ、みんな だよ

いつもの作者は「の記事もわかりづらいですね」と言われて凹んだので、僕が呼ばれたよ。よろしくね。

今回はちょっと初心に戻って、ログに書いている値で集計してみるよ

Macosxで動かしているので、WindowsやLinuxの人はディレクトリやフォルダを読み替えてね。

今回使うもの


今回は、この起動した時のそのままの画面を使用するよ。
真っ黒い背景にSPL(エス・ピー・エル)を書いていくので、それを赤枠の中、ここにサーチを入力...と書いているところにコピー&ペーストしてもらって、🔍をクリックすると動くよ

時間:過去24時間やモード:スマートモードは変更しないでね

ログに書いている値で集計する。

その1

aggregate_words.spl
index=_internal TERM("SUCCESS") OR TERM("ERROR")
| eval status=case(searchmatch("SUCCESS"),"SUCCESS",searchmatch("ERROR"),"ERROR",true(),NULL)
| stats count by status
status count
ERROR 16
SUCCESS 26

searchmatch()

この関数を使用して、検索文字列 (X) がイベントに一致した場合に TRUE を返します。

なので、文字列だよ。match()と違って正規表現じゃないよ。

その2

aggregate_words2.spl
| tstats count where index=_internal TERM("status") by PREFIX("status=") sourcetype
status= sourcetype count
skipped scheduler 4
success scheduler 25

Splunkの一番新しいのを使っていると、こんなこともできるよ。

TERM()PREFIX()もログに書かれている文字列で検索しているんだ。

詳しくはTERMはこっちなんだ。意外と使いづらいけど、使えるときは使ってね。

PREFIXはこっちだよ。これも読んでみてね。

その3

aggregate_words3.spl
index=_internal TERM("SUCCESS") OR TERM("ERROR")
| rex "(?i)(?<status>success|error)"
| stats count by status sourcetype
status sourcetype count
ERROR splunk_web_service 2
ERROR splunkd 7
ERROR splunkd_ui_access 4
SUCCESS splunkd_ui_access 27
error splunk_web_service 4
success scheduler 25
success splunkd 1

正規表現でその文字を抽出してフィールド名をつけてあげているよ。

意外と思いつかないけど、集計するには便利だよ。

まとめ

いくつかの方法を説明してきたけど、大丈夫だよね?

検索したときに使ったキーワードで数を数えるのって、意外と困るときがあるかもしれないけど、どれかの方法を使ってみてね

じゃ、またね〜

リクエストまってま〜す