我在仪表板上有一个eval,它曾经工作,但它停止了,我还没能弄清楚为什么。
在仪表板上,我把_time转换成一个人类可读的字符串,使用strftime(_time, "%m/%d/%Y %H:%M:%S %Z")
,这工作得很好。问题来了,当我试图转换它回来后,使一个链接到一个搜索。
例如:
<eval token="endTimestamp">relative_time(strptime($row.Timestamp$, "%m/%d/%Y %H:%M:%S %Z"), "+30m")</eval>
过去可以工作并返回我添加了30m的unix时间,但现在strptime
只返回NaN,但这是正确的格式。我已经检查了所有Splunk文档,一切正常,但它仍然是坏的。
你知道我做错了什么吗?
下面是我的字段行代码片段:
<condition field="Search">
<eval token="startTimestamp">$row.Timestamp$</eval>
<eval token="endTimestamp">relative_time(strptime($row.Timestamp$, "%m/%d/%Y %H:%M:%S %Z"), "+30m")</eval>
<eval token="corKey">$row.Correlation Key$</eval>
<link target="_blank">search?q=(index=### OR index=###) earliest=$startTimestamp$ latest=$endTimestamp$ correlationKey=$corKey$</link>
</condition>
我去掉了$row以外的所有内容。时间戳$,它返回类似10/03/2021 07:41:27 PDT
的东西,这是我输入它的格式,我只是不能做相反的。我已经复制并粘贴了strftime
的格式,仍然没有运气将它转换回来,所以我可以在它上面做数学。
有什么建议吗?
我不认为你做错了什么…但似乎strptime/strftime在仪表板的评估似乎不喜欢%Z
的任何原因。(我的Splunk Cloud堆栈的版本是8.2.2107.1)
在SPL内部进行从epoch到字符串和返回的往返似乎工作得很好…只是(javascript驱动的)仪表板侧似乎不能很好地使用时区缩写。
relative_time从一个历元值工作正常…和使用UTC偏移量与%z
格式的str[pf]时间似乎也有效(这些可能是您的变通方法)
我拼凑了一个快速测试仪表板,用格式的变化来说明这些事情,以查看差异…如果您(或您公司的某个人)正在使用当前的支持权利,我会为此记录一个案例。(我认为至少在已发表的已知问题中我没有看到任何相关的内容)。
<dashboard version="1.1">
<label>Teddybear Time Drilldown Test</label>
<row>
<panel>
<table>
<search>
<query>
| makeresults
| eval epoch="1633272087", format=mvappend("%m/%d/%Y %H:%M:%S %Z","%m/%d/%Y %H:%M:%S %z","%m/%d/%Y %H:%M:%S"), Search="Go This Row", Reset="Clear"
| fields - _time
| mvexpand format
| eval Timestamp=strftime(epoch,format), roundtrip=strptime(Timestamp,format)
| table Search, Reset, *
</query>
<earliest>-1s</earliest>
<latest>now</latest>
</search>
<option name="drilldown">cell</option>
<option name="rowNumbers">true</option>
<drilldown>
<condition field="Search">
<eval token="timestamp">$row.Timestamp$</eval>
<eval token="strptime">strptime($row.Timestamp$, $row.format$)</eval>
<eval token="strftime">strftime($row.epoch$, $row.format$)</eval>
<eval token="relative_time">relative_time($row.epoch$,"-30m")</eval>
</condition>
<condition field="Reset">
<unset token="timestamp"/> <unset token="strptime"/> <unset token="strftime"/> <unset token="relative_time"/>
</condition>
</drilldown>
</table>
</panel>
</row>
<row>
<panel>
<title>timestamp</title>
<html>
<h2>$timestamp|s$</h2>
</html>
</panel>
<panel>
<title>strptime</title>
<html>
<h2>$strptime|s$</h2>
</html>
</panel>
<panel>
<title>strftime</title>
<html>
<h2>$strftime|s$</h2>
</html>
</panel>
<panel>
<title>relative_time</title>
<html>
<h2>$relative_time|s$</h2>
</html>
</panel>
</row>
</dashboard>