PromQL 查询,用于绘制传入请求的速率



我是普罗米修斯的新手。我正在使用NewCounterVec来记录传入的http请求。我根据我在 git hub 上找到的许多其他人的代码使用它。

假设这就是我的指标的定义方式(在 go 中(

httpRequests = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Incoming http requests.",
},
[]string{"path", "status"},
)

路径 传入 URL 路径和状态是 HTTP 响应状态。 我的 promQL 查询(绘制图表(将用于什么

  1. 每分钟的传入请求数
  2. 基于 http 状态的故障率 代码(状态代码>=400(

我试过rate(http_requests_total[5m])[30m:1m]基于此,但无法在图表上显示。它抛出错误 执行查询时出错:invalid expression type "range vector" for range query, must be Scalar or instant Vector

每分钟传入请求数

rate(http_requests_total[5m]) * 60

基于 http 状态代码的故障率(状态代码>=400(

rate(http_requests_total{status=~"[45].."}[5m])

但是,这是脆弱的,如果没有 4xx 或 5xx 状态代码,则不会返回任何内容。

所有路径和状态代码的每分钟摘要请求数可以通过 increase(( 函数计算:

sum(increase(http_requests_total[1m]))

查询使用 sum(( 函数聚合所有路径和状态代码中每分钟的请求数。

以下查询返回每个path每分钟的请求数:

sum(increase(http_requests_total[1m])) by (path)

以下查询返回所有路径中每分钟失败的 http 请求的摘要数:

sum(increase(http_requests_total{status=~"[45].."}[1m]))

以下查询每分钟返回每path失败的 http 请求数:

sum(increase(http_requests_total{status=~"[45].."}[1m])) by (path)

有时,计算所有请求中失败请求的百分比可能很有用。这可以通过以下查询完成:

100 * (
sum(increase(http_requests_total{status=~"[45].."}[1m]))
/
sum(increase(http_requests_total[1m]))
)

每个路径失败请求的百分比:

100 * (
sum(increase(http_requests_total{status=~"[45].."}[1m])) by (path)
/
sum(increase(http_requests_total[1m])) by (path)
)

请注意,即使http_requests_total时间序列仅包含整数值,Prometheus 也可能从函数返回increase()分数结果。这是由于所选的数据模型 - 有关详细信息,请参阅此问题和此注释。

相关内容

  • 没有找到相关文章

最新更新