如何在Splunk的mstats命令中按host字段的部分内容分组?
解决Splunk mstats按字段部分内容分组的问题
针对你遇到的无法在mstats的BY子句中直接使用提取的env字段的情况,有两种实用的解决方法:
方法一:先按host分组,提取env后重新聚合
先通过mstats按host和result细分聚合,提取env字段后,再用stats重新按result和env合并计算:
| mstats sum(s3-worker.ndjson.aggregation) AS aggregations WHERE index="service_metrics" AND result=success AND host=my-worker-*-aggregator* earliest=-2h BY result, host span=1h | eval env = replace(host, "^my-worker-(?<env>[^-]+)-aggregator.*$", "\1") | stats sum(aggregations) AS aggregations BY result, env, _time | eval active = IF(aggregations > 0, true, false)
先让mstats保留host维度的聚合结果,提取env后再合并同环境的数据,最终得到按result和env分组的统计值。
方法二:先提取env再执行mstats(适用于非纯度量索引场景)
如果你的数据是普通事件索引(而非专门的度量索引),可以先搜索事件并提取env,再执行mstats聚合:
| search index="service_metrics" result=success host=my-worker-*-aggregator* earliest=-2h | rex field=host "^my-worker-(?<env>[^-]+)-aggregator.*$" | mstats sum(s3-worker.ndjson.aggregation) AS aggregations BY result, env span=1h | eval active = IF(aggregations > 0, true, false)
注意:该方法仅适用于先搜索事件再处理度量的场景,纯度量索引建议优先使用方法一。
内容的提问来源于stack exchange,提问作者Trevor
相关产品推荐
相关产品推荐

