Grafana Graphite通配符查询中如何排除指定指标值?
解决方案
你可以使用Graphite原生的exclude()函数实现需求,该函数可以从通配符匹配到的指标列表中移除命中规则的项,不需要手动罗列所有需要保留的国家指标。
修改后的查询语句
如果需要排除3~4个国家,推荐直接用正则规则一次匹配所有需要排除的项,写法更简洁:
alias(summarize(sumSeries(exclude(stats.checkout-*.*.*.*.*, "checkout-(es|fr|jp|kr)")), '$time', 'sum', false), 'checkout')
你只需要把上述代码里(es|fr|jp|kr)括号中的国家码替换成你实际要排除的国家即可,多个国家用竖线分隔。
补充说明
exclude()第二个参数支持普通字符串匹配和正则匹配两种模式,上述示例用正则一次性匹配多个需要排除的国家,不需要嵌套多层函数- 如果你担心普通匹配会误命中其他字段,可以把正则写的更精准,比如只匹配
checkout-开头后接国家码的段:"^checkout-(es|fr|jp)$" - 如果偏好逐层排除的写法,也可以嵌套多层
exclude(),每一层排除一个国家,可读性更高:alias(summarize(sumSeries(exclude(exclude(exclude(stats.checkout-*.*.*.*.*, "checkout-es"), "checkout-fr"), "checkout-jp")), '$time', 'sum', false), 'checkout')
内容的提问来源于stack exchange,提问作者Neil Gilbert
相关产品推荐
相关产品推荐

