Grafana使用Elasticsearch数据源时如何解析过滤及聚合日志消息?
问题1:实现Counter值大于5的日志过滤
Counter值当前存储在message文本字段中,分两种情况实现过滤:
- 已提前将Counter提取为独立的数值类型字段(字段名假设为
counter):直接在Grafana的ES查询栏输入Lucene表达式counter > 5即可完成过滤。 - 未提取Counter为独立字段:可以用正则匹配实现,在查询栏输入:
该正则会匹配所有Counter值为6-9、或两位及以上数字的日志,刚好对应数值大于5的过滤需求。message:/Counter: ([6-9]|\d{2,})/
补充:如果长期需要基于Counter做统计,建议提前把Counter提取为独立数值字段:可以通过Elasticsearch Ingest Pipeline添加Grok处理器,匹配规则设为
%{DATA}: %{NUMBER:counter:int}处理message字段,即可将Counter转为整数类型存储,方便后续各类统计操作。
问题2:按id分组并获取每个id对应的Counter最大值
该操作需要先把Counter提取为独立的数值类型字段,文本字段不支持最大值聚合操作。提取完成后在Grafana v7.2中按以下步骤配置即可:
- 数据源选择对应的Elasticsearch实例,索引配置为日志存储的索引模式
- Metrics配置项:选择聚合方式为
Max,字段选择提取后的counter字段,可自定义别名为最大Counter值 - Group By配置项:选择聚合方式为
Terms,字段选择id,size可根据你需要展示的id数量调整,排序规则可选择按Max(counter)降序排列 - 可在查询过滤栏加上
counter >5的条件,仅统计符合阈值的日志数据。
内容的提问来源于stack exchange,提问作者Karan Bhomia
相关产品推荐
相关产品推荐

