如何编写Splunk查询,生成含时间戳的24行每日每小时统计结果
Splunk查询获取当日24小时每小时结果方案
修改后的查询(确保生成24行数据)
index='xyz' sourcetype='abc' status='completed' | bin _time span=1h | stats count by _time status | eval hour=strftime(_time, "%I%p") | fields hour status | append [ | makeresults count=24 | eval _time=relative_time(now(), "@d") + (mvindex(range(24), 0)*3600) | eval hour=strftime(_time, "%I%p") | eval status="completed" | fields hour status ] | dedup hour | sort _time | rename hour as time | table time status
关键步骤说明
bin _time span=1h:将事件按小时粒度分桶,匹配时间维度需求stats count by _time status:聚合每个小时的完成事件,保留status字段eval hour=strftime(_time, "%I%p"):把时间戳格式化为1am/2pm这类12小时制带时段的格式append块:生成当日完整的24小时模板数据,确保即使某小时无匹配事件,也能生成对应行dedup hour:去重每个小时的记录,避免原查询数据和模板数据重复sort _time:按时间顺序排序结果,保证从凌晨到深夜的顺序table time status:最终输出需求的两列格式
简化版(适用于每小时必有事件的场景)
如果能确保当日每个小时都有status=completed的事件,可省略模板生成部分,用更简洁的查询:
index='xyz' sourcetype='abc' status='completed' | bin _time span=1h | stats values(status) as status by _time | eval time=strftime(_time, "%I%p") | sort _time | table time status
内容的提问来源于stack exchange,提问作者dev333
相关产品推荐
相关产品推荐

