PromQL如何编写查询检测指标涨跌超阈值持续10分钟触发告警
PromQL 指标涨跌告警阈值与写法解答
首先修正你原有查询的语法问题:原语句缺少闭合括号,且sum by()需要包裹rate()计算结果保证聚合逻辑正确,标准比值计算写法为:
sum by() (rate(cmd_get{}[10m])) / sum by() (rate(cmd_get{}[50m] offset 10m))
针对你的三个问题解答如下:
- 涨幅超过50%对应的常量阈值为1.5
该查询返回的是当前10分钟速率和历史基准速率的比值,涨幅50%意味着当前值是基准值的1.5倍,当查询结果> 1.5时即满足涨幅超50%的判断条件。建议判断时增加分母大于0的校验,避免除零错误,可追加前置判断条件:sum by() (rate(cmd_get{}[50m] offset 10m)) > 0 - 跌幅达到或超过50%对应的常量阈值为0.5
跌幅50%意味着当前值仅为基准值的50%,当查询结果< 0.5时即满足跌幅≥50%的判断条件。 - 直接查询指标百分比变化的PromQL语句如下:
( sum by() (rate(cmd_get{}[10m])) - sum by() (rate(cmd_get{}[50m] offset 10m)) ) / sum by() (rate(cmd_get{}[50m] offset 10m)) * 100
结果说明:返回值为正数代表涨幅百分比,为负数代表跌幅百分比。例如返回
60代表当前速率较基准上涨60%,返回-50代表当前速率较基准下跌50%。
内容的提问来源于stack exchange,提问作者samantha
相关产品推荐
相关产品推荐

