PromQL 查询以绘制传入请求的速率

Posted

技术标签:

【中文标题】PromQL 查询以绘制传入请求的速率【英文标题】:PromQL query to graph the rate of incoming requests 【发布时间】:2020-06-01 23:41:22 【问题描述】:

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

假设这是我的指标的定义方式(在运行中)

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

path 传入的url路径,status为http响应状态。 我的 promQL 查询(绘制图表)将是什么

    每分钟的传入请求数 基于 http 状态的失败率 代码(状态代码 >=400)

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

【问题讨论】:

【参考方案1】:

每分钟收到的请求数

rate(http_requests_total[5m]) * 60

基于http状态码的失败率(状态码>=400)

rate(http_requests_totalstatus=~"[45].."[5m])

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

【讨论】:

必须是这样的rate(http_requests_totalstatus=~"[45].."[5m])~

以上是关于PromQL 查询以绘制传入请求的速率的主要内容,如果未能解决你的问题,请参考以下文章

针对事件(审核日志)查询 Azure Insights REST API 的速率限制策略

确定请求的速率限制

SlimDX:限制帧速率以降低 CPU 使用率

aiohttp:限制并行请求的速率

如何限制/速率限制请求以防止 Axios 出现 429 错误

如何配置 New Relic 插件以显示速率