【问题标题】:Prometheus filtering when using a recording rule使用录制规则时的 Prometheus 过滤
【发布时间】:2020-04-16 21:07:54
【问题描述】:

我在 Prometheus 中设置了以下录制规则:

- record: web:prod:inbound_request_duration_seconds:by_private_ip:rate1m
  expr: sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web"}[1m])) by (private_ip)

当我通过在 Grafana(或 Prometheus Explorer)中指定规则名称来执行查询时,记录规则工作得很好。

我想要做的是通过httpStatus 过滤该记录规则,我在我的应用程序中设置的直方图中发送它。

如果我运行,请执行以下操作:

web:prod:inbound_request_duration_seconds:by_private_ip:rate1m{httpStatus="^5..$"}

我没有收到错误,只是没有输出,而如果我采用原始查询并执行此操作:

sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web", httpStatus="^5..$"}[1m])) by (private_ip)

我得到了我期望的输出。

是否可以过滤记录规则?还是我必须使用我想要包含的过滤器创建额外的录制规则?

【问题讨论】:

    标签: prometheus grafana promql


    【解决方案1】:

    您的记录规则按private_ip 聚合所有时间序列,并删除所有其他标签。使用以下表达式:

    sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web"}[1m])) by (private_ip, httpStatus)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 2017-04-16
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多