🐨コアラでもわかるSplunkシリーズ サブサーチとは何かを調べる
やあ、みんな だよ
いつもの作者は「の記事もわかりづらいですね」と言われて凹んだので、僕が呼ばれたよ。よろしくね。
今回はちょっと初心に戻って、ログに書いている値で集計してみるよ
Macosxで動かしているので、WindowsやLinuxの人はディレクトリやフォルダを読み替えてね。
今回使うもの
今回は、この起動した時のそのままの画面を使用するよ。
真っ黒い背景にSPL(エス・ピー・エル)を書いていくので、それを赤枠の中、ここにサーチを入力...
と書いているところにコピー&ペーストしてもらって、🔍をクリックすると動くよ
時間:過去24時間
やモード:スマートモード
は変更しないでね
サブサーチとは
サブサーチはSplunk>docsに書いている通り、別な検索結果を元に検索できるんだ。便利だよ。
[search index=]
と書くように、メインサーチとは別に検索するんだ。
内でearliset=
とか使えるので検索期間も変更できるよ。
だから、2度検索する感じになるので、検索時間は増えてしまうことが多いよ。
サブサーチの値をevalで入力する
result_to_eval.spl
|makeresults
| eval subsearch=[|makeresults | eval search=_time|fields search]
結果
|makeresults
| eval subsearch=[|makeresults | eval search=_time|fields search]
_time | subsearch |
---|---|
2020/05/30 21:10:37 | 1590840637 |
解説
でもこんな例文をだしてくるのが・・・
サブサーチの結果をsearch
かquery
フィールドに代入すると、こんな感じでメインサーチに文字列として渡すことができるよ。
https://answers.splunk.com/answers/7472/subsearch-fields-query-search-how-do-i-know-which-to-use.html に細かい話は書いてあるから読んでね
format
https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/format に書いている通りで、search
フィールドを作ってくれるコマンドなんだ。
サブサーチはsearch
フィールドの値を文字列として渡すので、フィールド名=値
をOR
で繋いでくれるこのコマンドはとても使えるよ。
以前のSplunkサブサーチで検索期間を変化させるに細かい動作とか載っているから読んでね。
limits.conf
Subsearch_performance_considerationsに書いてある通り、サブサーチの検索結果には限界があるよ。
https://answers.splunk.com/answers/790410/ でも解説があるから確認してみてね。
join、append、appendcols
この二つのコマンドはサブサーチの結果で結合したりjoin
ただ下にくっつけたりappend
横にくっつけたりappendcols
するコマンドなんだ。
使い所がはまると便利だよ
使い所が悪いと遅くなる原因だよね。
appendpipe
このコマンドはさっきのコマンドとは違って、引き続き検索ができるよね
| 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 |
思ってたのと違うかも
| 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 |
どちらがいいのかは、状況次第だよね。
複数フィールドの場合
subsearch_no_format.spl
index=_internal [search index=_internal sourcetype=splunkd |stats values(sourcetype) as sourcetype values(source) as source]
サーチジョブ調査
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") |
解説
サブサーチの結果がどうなっているかは、サーチジョブ調査からわかるよ
綺麗にOR
で繋いでくれているよね
この時OR
とかAND
を変更したいなと思ったらformat
を使うんだ。
まとめ
サブサーチはsearch
フィールドの中を文字列としてメインサーチに戻すものだよ。
文字列だとわかれば、eval
に渡す時(空白)
が入っている時は"(ダブルコーテーション)
で囲わないといけないとか、いろいろわかるよね。
じゃ、またね〜
リクエストまってま〜す
Author And Source
この問題について(🐨コアラでもわかるSplunkシリーズ サブサーチとは何かを調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/toshikawa/items/82d52c8232797452b7e8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .