データの中にタイムスタンプを持っていなかったり、出力時刻がファイル名に記載されている場合の対処法。
以前のSplunkVersionではdatetime.xmlを駆使する形だったけど、7.2以降は INGEST_EVAL が transforms.conf の中で使えるようになり、Eval関数で柔軟に定義できるようになってます。
まずベーシックな INGEST_EVAL の使い方は
[eval_sample]
INGEST_EVAL = create_field = length(_raw)* 2
[sample]
TRANSFORMS = eval_sample
上のように transforms.conf にフィールド(create_field)を作成して、取り込むデータの長さを2倍した値を代入 するような形をEvalでかけるので、それをprops.confから呼び出す。
これを使ってファイル名に埋め込まれた日付から_timeを取得
ファイル名 : PoC_test_2020-09-07T11-15-02
フォーマット : PoC_test_%Y-%m-%dT%H-%M-%S
[eval_time]
INGEST_EVAL = _time=strptime(replace(source,".*(?=/)/",""),"PoC_test_%Y-%m-%dT%H-%M-%S")
[date_from_filename]
TRANSFORMS = eval_time
以上です。
以下リファレンス
https://docs.splunk.com/Documentation/Splunk/8.0.6/Admin/Transformsconf
https://docs.splunk.com/Documentation/Splunk/latest/Data/IngestEval
https://community.splunk.com/t5/Getting-Data-In/How-do-you-extract-a-timestamp-from-a-filename/m-p/427089