如何在Grafana Loki中使用二元运算符并统计金丝雀实例错误日志数
金丝雀实例日志错误计数PromQL实现
需求说明
要制作一个面板展示金丝雀实例的日志错误计数,判断规则为:当某个stack标签对应的实例数量为1时,该实例即为金丝雀实例,需仅统计这类实例中包含Unable to record关键词的日志错误数。
修正后的PromQL表达式
sum by(stack) ( count_over_time( {component=~"stack-blue.*", cloud=~"${cloud}", environment=~"${environment}", location=~"${location}"} |= "Unable to record" [$__interval] ) ) * on(stack) group_left() count by(stack) ( count_over_time( {component=~"stack-blue.*", cloud=~"${cloud}", environment=~"${environment}", location=~"${location}"} [$__interval] ) ) == 1
表达式说明
- 第一部分:按
stack标签分组,统计每个分组内包含Unable to record关键词的日志条目数 - 第二部分:先按
stack统计每个分组的实例数量(通过count by(stack)计算每个stack下的主机数),再筛选出实例数等于1的分组 * on(stack) group_left():将两部分按stack标签关联,仅保留实例数为1的stack的错误计数,其他stack的结果会被置为0,可在面板设置中过滤掉数值为0的条目
原表达式问题
原表达式使用and逻辑不符合PromQL语法逻辑,and在PromQL中是取两个时序集合的交集,无法实现“仅筛选实例数为1的stack”的条件过滤,必须通过标签关联的方式实现条件匹配。
内容的提问来源于stack exchange,提问作者Roopchand
相关产品推荐
相关产品推荐

