Splunk Enterprise 如何在选定大时间范围内排除指定时段
Splunk 时间范围过滤操作解答
完全可以在datepicker选定的大时间范围内直接过滤掉不需要的指定时段,不需要拆分多次搜索执行,具体实现方法如下:
方法1:用内置时间字段快速过滤周期时段
如果需要排除的是固定周期的时段(比如每天的凌晨0点到2点、每周一的上午时段等),可以直接用Splunk自动提取的date_*系列字段加过滤条件,示例:
- 排除已选时间范围内每天0:00-2:00的日志,直接在原有搜索语句末尾追加:
NOT (date_hour>=0 AND date_hour<2)
- 排除已选时间范围内所有周一的日志,直接追加:
NOT date_wday="monday"
方法2:用_time字段过滤任意指定时段
如果需要排除的是零散的非周期固定时段,直接用Splunk内置的时间戳字段_time做范围过滤即可,有两种常用写法:
- 可读性更高的字符串转时间写法,示例排除2024年5月10日14:00-16:00的日志:
where NOT (_time >= strptime("2024-05-10 14:00:00", "%Y-%m-%d %H:%M:%S") AND _time <= strptime("2024-05-10 16:00:00", "%Y-%m-%d %H:%M:%S"))
- 直接用Unix时间戳写法,你可以提前把需要排除的时段转换成10位Unix时间戳直接填入即可。
注意事项
- 以上过滤逻辑都在datepicker选定的时间范围内执行,不会修改原有查询的时间边界
- 如果你的数据没有自动提取
date_hour等字段,可以先通过eval hour=strftime(_time, "%H")语句提取对应时间维度后再做过滤 - 所有过滤逻辑只需追加到原有搜索语句末尾,单次执行即可得到结果,查询效率和全量查询几乎无差异,不需要拆分多次搜索再合并结果
内容的提问来源于stack exchange,提问作者Erfan Tavoosi
相关产品推荐
相关产品推荐

