Splunk:提取字符串并将其转换为日期格式
Splunk: Extract string and convert it to date format
我有这样的事件:
something;<id>abc123<timeStamp>2021-12-10T23:10:12.044Z<timeStamp>2021-12-10T23:08:55.278Z>
我想提取 Id
abc123
和两个 timeStamp
。
index = something
|rex field=_raw "id>(?<Id>[0-9a-z-]+)"
|rex "timeStamp>(?<timeStamp>[T0-9-\.:Z]+)"
| table _time Id timeStamp
这适用于上面的查询。但是我现在努力的是将 timeStamp
-string 转换为日期格式以在最后提取 min(timeStamp)
以计算事件的 _time
和 [=16] 之间的差异=] 通过 id
字段。我很挣扎,因为时间戳的特殊格式包含 T
和 Z
。
查看 strftime.org,以及相关的 strptime
function used with eval
类似这样的东西(从你的 rex
中提取微秒,因为 Unix 纪元时间没有亚秒间隔的概念):
| rex field=_raw "timeStamp\>(?<timeStamp>[^\.]+)\.\d+Z"
| eval unixepoch=strptime(timeStamp,"%Y-%m-%dT%H:%M:%S")
这些时间戳没有什么特别之处 - 它们是标准格式。使用 strptime
函数进行转换。
index = something
|rex field=_raw "id>(?<Id>[^\<]+)"
|rex "timeStamp>(?<timeStamp>[^\<]+)"
| eval ts = strptime(timeStamp, "%Y-%m-%dT%H:%M:%S.%3N%Z")
| eval diff = ts - _time
| table _time Id timeStamp diff
我有这样的事件:
something;<id>abc123<timeStamp>2021-12-10T23:10:12.044Z<timeStamp>2021-12-10T23:08:55.278Z>
我想提取 Id
abc123
和两个 timeStamp
。
index = something
|rex field=_raw "id>(?<Id>[0-9a-z-]+)"
|rex "timeStamp>(?<timeStamp>[T0-9-\.:Z]+)"
| table _time Id timeStamp
这适用于上面的查询。但是我现在努力的是将 timeStamp
-string 转换为日期格式以在最后提取 min(timeStamp)
以计算事件的 _time
和 [=16] 之间的差异=] 通过 id
字段。我很挣扎,因为时间戳的特殊格式包含 T
和 Z
。
查看 strftime.org,以及相关的 strptime
function used with eval
类似这样的东西(从你的 rex
中提取微秒,因为 Unix 纪元时间没有亚秒间隔的概念):
| rex field=_raw "timeStamp\>(?<timeStamp>[^\.]+)\.\d+Z"
| eval unixepoch=strptime(timeStamp,"%Y-%m-%dT%H:%M:%S")
这些时间戳没有什么特别之处 - 它们是标准格式。使用 strptime
函数进行转换。
index = something
|rex field=_raw "id>(?<Id>[^\<]+)"
|rex "timeStamp>(?<timeStamp>[^\<]+)"
| eval ts = strptime(timeStamp, "%Y-%m-%dT%H:%M:%S.%3N%Z")
| eval diff = ts - _time
| table _time Id timeStamp diff