Splunk: ジョブ情報を取得するaddinfoコマンドの使い方

たまに必要となるのでメモ。

###### 実施環境： Splunk Free 8.2.2

 Splunk には、 addinfo というコマンドがあります。
このコマンドを使用すると、次のようなジョブ情報が取得できます。

```Splunk:Splunk
| makeresults count=1
| addinfo
```

![スクリーンショット 2021-12-12 14.23.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9ade1455-41f5-5375-7232-51920976adcb.png "addinfo")

###### 検索期間

検索期間として指定した日時情報を取得できます。
最も古い日時は info_min_time に、最も新しい日時は info_max_time に出力されます。
出力形式は UNIX 時間なので、適切な形式に変換して表示しましょう。

```Splunk:Splunk
| 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
```

![スクリーンショット 2021-12-12 14.31.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0baa9465-3586-0d46-5f29-0d6f8449c66d.png "info_min_time1")

 SPL 中で検索期間を指定している場合も、きちんと SPL 中で指定した日時が表示されます。

```Splunk:Splunk
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
```

![スクリーンショット 2021-12-12 14.43.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ecb347b5-f08e-6c08-f47b-9ec7b59042d1.png "info_min_time2")

###### ジョブ起動日時

サーチジョブを起動した日時は info_search_time に出力されます。
こちらも出力形式は UNIX 時間です。

```Splunk:Splunk
| makeresults count=1
| addinfo
| eval Search_Time = strftime(info_search_time, "%Y/%m/%d %H:%M:%S")
| table Search_Time
```

![スクリーンショット 2021-12-12 14.48.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/128d57d3-1f86-2ff1-3560-4f20d6b6c11e.png "info_search_time")

###### ジョブの ID

ジョブの ID も取得できます。
出力されるフィールド名は info_sid です。

```Splunk:SPlunk
| makeresults count=1
| addinfo
| table info_sid
```

![スクリーンショット 2021-12-12 14.51.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/29ab50dc-d2c5-719a-3efc-648eea9d4e2f.png "info_sid")

###### サブサーチ

無論、サブサーチから情報を取得することも可能です。
ただし、メインサーチから取得した情報と必ずしも値が一致するわけではないことに注意してください。

```Splunk:Splunk
| 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
    ]
```

![スクリーンショット 2021-12-12 15.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/aefa2b0c-9258-121a-d5ff-86e048326abb.png "サブサーチ")

###### 使い道

単発のサーチの場合サーチジョブ調査でジョブ情報を取得できるので、addinfo コマンドはあまり使い道がないかもしれません。
ただ、 CSV として結果を出力したり、スケジュールサーチを用いて自動でサマリデータを作成する時など、後からジョブ情報を見返す必要がある場合に情報を出力しておくことができます。
また、単発のサーチでも、ジョブ情報によって処理を分岐させたい場合は用いることができます。
以下の例では、指定した検索期間の長さに応じて集計間隔を変更しています。

```Splunk:Splunk
| 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
    ]
```

![スクリーンショット 2021-12-12 15.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2ffdf26c-4e41-2461-0372-9d557167aedf.png "使い道")