PromSQL实用查询语句总结(一直更新)

一、过滤掉某一个接口或者某一个错误码

sum(http_request_total{api!="example",code!="500"}offset 2m)

二、过滤掉某一个接口的某一个错误码

sum(http_request_total{}offset 2m unless on(api,code){api="example",code="500"})

三、定义一个流量暴涨或者暴跌的告警规则

sum by(code)(http_request_total{code="200"} offset 3m) >400 and abs(sum by(code) (delta(http_request_total{code="200"}[2m] offset 2m))) / sum by (code)(http_request_total{code="200"} offset 3m) >0.5

其中指标http_request_total表示的是网关集群调用总量,标签code代表状态码。

这个表达式的意思可以分为以下几部分解释:

1. `sum by(code)(http_request_total{code="200"} offset 3m) >400` 表示在过去的三分钟内,状态码为 200 的 http 请求总量按照状态码进行汇总,并且这个总量大于 400。

2. `delta(http_request_total{code="200"}[2m] offset 2m)` 表示在过去的两分钟内,状态码为 200 的 http 请求总量的变化量。

3. `sum by(code) (delta(http_request_total{code="200"}[2m] offset 2m))` 表示在过去的两分钟内,状态码为 200 的 http 请求总量的变化量按照状态码进行汇总。

4. `abs(sum by(code) (delta(http_request_total{code="200"}[2m] offset 2m))) / sum by (code)(http_request_total{code="200"} offset 3m) >0.5` 表示过去两分钟内状态码为 200 的 http 请求总量的变化量与过去三分钟内状态码为 200 的 http 请求总量的比值大于 0.5,并且变化量和总量都按照状态码进行汇总。

综合起来,这个表达式的意思是:如果在过去的三分钟内,状态码为 200 的 http 请求总量大于 400,同时过去两分钟内状态码为 200 的 http 请求总量的变化量与过去三分钟内状态码为 200 的 http 请求总量的比值大于 0.5,就认为这个网关集群存在异常情况。

猜你喜欢

转载自blog.csdn.net/zfw_666666/article/details/130564600