splunk

Splunk サブサーチ(subsearch)使い方と上限について

投稿日:

searchの中で、別のsearchを実行したい場合、サブサーチ(subsearch)を使います。
便利ですが、サブサーチの件数には上限がありますので、注意が必要です。

使い方

[] カッコ(square bracket)でサーチ分を囲って記載します。

【例】
[sub_search]

利用目的

サブサーチは、主にサブサーチ結果をメインサーチに結合する目的で利用されます。

サブサーチ結果をメインサーチに結合する

結合コマンドの後に、サブサーチを実行することでメインサーチとイベントやフィールドを結合します。以下の3つをよく利用します。

  • append
  • appendcols
  • join

append

appendは、イベント(行)を追加するサーチコマンドです。
コマンドの後ろに[](square bracket)で囲ったサーチ分を記載します。
(makeresultsはイベント(行)を生成するサーチコマンド)

【code】

| makeresults
| eval "A field" = "A1" ,"B field" = "B1"
| append 
[makeresults | eval "A field" = "A2","B field" = "B2"]
| fields - _time

【結果】
2行目がサブサーチで追加されたイベントです。

appendcols

appendcolsは、サブサーチの結果をフィールド(列)で追加するコマンドです。

【code】

| makeresults
| eval "A field" = "A1" ,"B field" = "B1"
| appendcols 
[makeresults | eval "C field" = "C2","D field" = "C2"]
| fields - _time

【結果】
「C field」と「D field」がサブサーチで追加されています。

join

メインサーチとサブサーチの結果を指定したフィールドで結合します。
以下の2サーチ結果を「B field」でLeft Joinします。

【code】

| makeresults
| eval "A field" = "A1" ,"B field" = "B1"
| append 
[makeresults | eval "A field" = "A2","B field" = "B2"]
| join "B field" type=left
[makeresults | eval "B field" = "B2","C field" = "C3"]
| fields - _time

【結果】
「B field」が同一値のイベントに「C field」が設定されました。

注意事項

冒頭に記載しましたが、サブサーチは件数の上限(10000件)が設定されているため、大量の件数をサーチすると正しい結果が出力されません。
上限は、limit.confを変更することで変更可能なので、必要に応じて変更してください。

まとめ

サブサーチは非常に便利ですが、検索コストも高く上限設定もあるので、できるだけ使わないサーチ文を考えるがsplunk的なのかもしれません。
とはいえ、結局使ってしまうのですが、、、







-splunk
-

Copyright© Tech Log , 2020 All Rights Reserved Powered by STINGER.