Splunk查询问题:如何筛选10分钟内未成功获取changelog锁的等待记录
Splunk查询实现方案
你当前的查询仅在单条日志维度做内容匹配,无法实现跨事件的10分钟时间窗口校验逻辑,可使用以下语句实现需求:
完整查询语句
# 替换index为你实际的索引名称 index="[你的实际索引]" (log="Waiting for changelog lock.." OR log="Successfully acquired change log lock") | spath log | sort 0 _time # 按等待锁/获取锁事件做事务分组,时间窗口限制10分钟 | transaction startswith="Waiting for changelog lock.." endswith="Successfully acquired change log lock" maxspan=10m keeporphans=1 # 仅保留10分钟内没有匹配到获取锁事件的等待锁记录 | where eventcount=1 # 输出原始等待锁日志的时间、内容等字段,可按需调整输出字段 | table _time log
逻辑说明
- 第一步先仅拉取两类目标相关日志,大幅缩小检索范围,提升查询效率
sort 0 _time将所有事件按时间正序全量排序,0参数代表不限制排序的事件数量,避免数据截断transaction命令将关联事件划为同一分组:startswith定义事务起始事件为等待变更日志锁的日志endswith定义事务结束事件为成功获取变更日志锁的日志maxspan=10m限定单个事务的最大时间跨度为10分钟keeporphans=1保留没有匹配到结束事件的事务,也就是等待锁后10分钟内没有出现成功获取锁日志的场景
- 最后通过
where eventcount=1筛选出仅包含等待锁事件的事务,即为符合要求的记录
内容的提问来源于stack exchange,提问作者babboon
相关产品推荐
相关产品推荐

