如何在Splunk中筛选今日首次出现的payload.procName字段值
Splunk 筛选今日首次出现的全新payload.procName值
核心需求
找出今日首次出现且历史从未被记录过的payload.procName唯一值,即仅保留今日存在、但指定历史时间范围内完全没出现过的字段值。
原有查询的优化点
你的现有查询逻辑方向正确,但有几个细节可以调整:
earliest=-1d是取最近24小时数据,而非自然日的今日,替换为earliest=@d可精准匹配今日零点至今的数据- 子查询中
latest=-1d应改为latest=-1d@d,确保只取到昨日结束的历史数据 - 可通过调整子查询的执行逻辑,减少不必要的数据传输
优化后的查询(修正原有逻辑)
tags.appInstance=your_index earliest=@d latest=now() payload.procName=* | where NOT [ search tags.appInstance=your_index earliest=-1mon@mon latest=-1d@d | dedup payload.procName | fields payload.procName ] | dedup payload.procName | table payload.procName
更高效的大数据量适配版本
如果你的数据量较大,使用stats聚合的方式性能更优:
tags.appInstance=your_index earliest=-1mon@mon latest=now() payload.procName=* | eval is_today=if(_time>=relative_time(now(), "@d"), 1, 0) | stats max(is_today) as today_count values(is_today) as all_days by payload.procName | where today_count=1 AND mvcount(all_days)=1 | table payload.procName
该逻辑通过一次性拉取历史+今日数据,标记并聚合每个payload.procName的出现时间段,最终筛选出仅今日存在的字段值。
内容的提问来源于stack exchange,提问作者Yarin Michael Bouzaglo
相关产品推荐
相关产品推荐

