LoginSignup
2
1

More than 3 years have passed since last update.

🐨コアラでもわかるSplunkシリーズ サブサーチとは何かを調べる

Posted at

やあ、みんな :koala:だよ

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

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

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

今回使うもの

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

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

サブサーチとは

:koala:サブサーチはSplunk>docsに書いている通り、別な検索結果を元に検索できるんだ。便利だよ。

:koala:[search index=]と書くように、メインサーチとは別に検索するんだ。

:koala:内でearliset=とか使えるので検索期間も変更できるよ。

:koala:だから、2度検索する感じになるので、検索時間は増えてしまうことが多いよ。

サブサーチの値をevalで入力する

result_to_eval.spl
|makeresults
| eval subsearch=[|makeresults | eval search=_time|fields search]

結果

_time subsearch
2020/05/30 21:10:37 1590840637

解説

:koala:でもこんな例文をだしてくるのが・・・

:koala:サブサーチの結果をsearchqueryフィールドに代入すると、こんな感じでメインサーチに文字列として渡すことができるよ。

:koala:https://answers.splunk.com/answers/7472/subsearch-fields-query-search-how-do-i-know-which-to-use.html に細かい話は書いてあるから読んでね

format

:koala:https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/format に書いている通りで、searchフィールドを作ってくれるコマンドなんだ。

:koala:サブサーチはsearchフィールドの値を文字列として渡すので、フィールド名=値ORで繋いでくれるこのコマンドはとても使えるよ。

:koala:以前のSplunkサブサーチで検索期間を変化させるに細かい動作とか載っているから読んでね。

limits.conf

:koala:Subsearch_performance_considerationsに書いてある通り、サブサーチの検索結果には限界があるよ。

:koala:https://answers.splunk.com/answers/790410/ でも解説があるから確認してみてね。

join、append、appendcols

:koala:この二つのコマンドはサブサーチの結果で結合したりjoinただ下にくっつけたりappend横にくっつけたりappendcolsするコマンドなんだ。

:koala:使い所がはまると便利だよ

:koala:使い所が悪いと遅くなる原因だよね。

appendpipe

:koala:このコマンドはさっきのコマンドとは違って、引き続き検索ができるよね

appendpipe.spl
| makeresults
| eval _raw="testA"
| appendpipe [ eval _raw="testB"]
| appendpipe [ eval _raw="testC"]
| appendpipe [ eval _raw="testD"]

結果

_raw _time
testA 2020/05/30 21:46:23
testB 2020/05/30 21:46:23
testC 2020/05/30 21:46:23
testC 2020/05/30 21:46:23
testD 2020/05/30 21:46:23
testD 2020/05/30 21:46:23
testD 2020/05/30 21:46:23
testD 2020/05/30 21:46:23

:koala:思ってたのと違うかも

appendpipe_modify.spl
| makeresults
| eval _raw="testA"
| appendpipe [ eval _raw="testB"
| appendpipe [ eval _raw="testC"
| appendpipe [ eval _raw="testD"]]]
_raw _time
testA 2020/05/30 21:48:01
testB 2020/05/30 21:48:01
testC 2020/05/30 21:48:01
testD 2020/05/30 21:48:01

:koala:どちらがいいのかは、状況次第だよね。

複数フィールドの場合

subsearch_no_format.spl
index=_internal [search index=_internal sourcetype=splunkd |stats values(sourcetype) as sourcetype values(source) as source]

サーチジョブ調査

job parameter
phase0 litsearch (index=_internal (source="/Applications/Splunk/var/log/splunk/health.log" OR source="/Applications/Splunk/var/log/splunk/license_usage.log" OR source="/Applications/Splunk/var/log/splunk/metrics.log" OR source="/Applications/Splunk/var/log/splunk/metrics.log.1" OR source="/Applications/Splunk/var/log/splunk/splunkd.log") sourcetype="splunkd")

解説

:koala:サブサーチの結果がどうなっているかは、サーチジョブ調査からわかるよ

:koala:綺麗にORで繋いでくれているよね

:koala:この時ORとかANDを変更したいなと思ったらformatを使うんだ。

まとめ

:koala:サブサーチはsearchフィールドの中を文字列としてメインサーチに戻すものだよ。

:koala:文字列だとわかれば、evalに渡す時(空白)が入っている時は"(ダブルコーテーション)で囲わないといけないとか、いろいろわかるよね。

:koala:じゃ、またね〜

:koala:リクエストまってま〜す

2
1
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
2
1