たまに必要となるのでメモ。
実施環境: Splunk Free 8.2.2
Splunk には、 addinfo というコマンドがあります。
このコマンドを使用すると、次のようなジョブ情報が取得できます。
| makeresults count=1
| addinfo
検索期間
検索期間として指定した日時情報を取得できます。
最も古い日時は info_min_time に、最も新しい日時は info_max_time に出力されます。
出力形式は UNIX 時間なので、適切な形式に変換して表示しましょう。
| makeresults count=1
| addinfo
| eval Earliest_Time = strftime(info_min_time, "%Y/%m/%d %H:%M:%S"),
Latest_Time = strftime(info_max_time, "%Y/%m/%d %H:%M:%S")
| table Earliest_Time, Latest_Time
SPL 中で検索期間を指定している場合も、きちんと SPL 中で指定した日時が表示されます。
index="_internal" earliest="-7d@d" latest="-6d@d"
| addinfo
| eval Earliest_Time = strftime(info_min_time, "%Y/%m/%d %H:%M:%S"),
Latest_Time = strftime(info_max_time, "%Y/%m/%d %H:%M:%S")
| table Earliest_Time, Latest_Time
ジョブ起動日時
サーチジョブを起動した日時は info_search_time に出力されます。
こちらも出力形式は UNIX 時間です。
| makeresults count=1
| addinfo
| eval Search_Time = strftime(info_search_time, "%Y/%m/%d %H:%M:%S")
| table Search_Time
ジョブの ID
ジョブの ID も取得できます。
出力されるフィールド名は info_sid です。
| makeresults count=1
| addinfo
| table info_sid
サブサーチ
無論、サブサーチから情報を取得することも可能です。
ただし、メインサーチから取得した情報と必ずしも値が一致するわけではないことに注意してください。
| makeresults count=1
| addinfo
| table info_search_time, info_sid
| appendcols
[
| makeresults count=1
| addinfo
| table info_search_time, info_sid
| rename info_search_time AS info_search_time_sub,
info_sid AS info_sid_sub
]
使い道
単発のサーチの場合サーチジョブ調査でジョブ情報を取得できるので、addinfo コマンドはあまり使い道がないかもしれません。
ただ、 CSV として結果を出力したり、スケジュールサーチを用いて自動でサマリデータを作成する時など、後からジョブ情報を見返す必要がある場合に情報を出力しておくことができます。
また、単発のサーチでも、ジョブ情報によって処理を分岐させたい場合は用いることができます。
以下の例では、指定した検索期間の長さに応じて集計間隔を変更しています。
| makeresults count=1
| timechart count
[
| makeresults count=1
| addinfo
| eval One_Day_Ago = relative_time(info_max_time, "-1d"),
One_Month_Ago = relative_time(info_max_time, "-1mon")
| eval Span_Time =
case(info_min_time <= One_Month_Ago, "span=1mon",
info_min_time <= One_Day_Ago, "span=1d",
true(), "span=1h")
| return $Span_Time
]