Splunk如何按提取的Id字段统计字符串lat的出现次数
Splunk 单事件内字符串计数实现方案
完整查询语句
<替换为你的日志搜索范围,比如 index=xxx 或 source=xxx> # 提取Id字段,如果你环境中Id已经自动提取可删除此行 | rex "Id\":\"(?<Id>[^\"]+)" # 统计单条日志中lat的出现次数 | eval lat_count = countmatches(_raw, "lat") # 按Id分组汇总总次数 | stats sum(lat_count) as occurrences by Id
逻辑说明
rex行:用正则从原始日志中提取Id字段值,若你已配置好Id的字段提取规则可直接跳过该步骤eval行:核心计数逻辑,countmatches函数会返回第一个参数(这里是原始日志内容_raw)中第二个参数(这里是lat)的出现次数
低版本Splunk兼容写法:用split拆分后统计段数减1得到出现次数,效果完全一致:| eval lat_count = mvcount(split(_raw, "lat")) - 1stats行:按Id维度分组,汇总每个Id对应的lat总出现次数,输出结果和你预期的格式完全匹配
可选优化
如果要避免误统计包含lat的其他字符串(比如字段名latitude),可以调整匹配规则为精确匹配JSON键格式:
| eval lat_count = countmatches(_raw, "\"lat\":")
内容的提问来源于stack exchange,提问作者Tobitor
相关产品推荐
相关产品推荐

