【问题标题】:subtract count of metric in to specific time range in grafana将指标计数减去 grafana 中的特定时间范围
【发布时间】:2022-11-22 19:24:44
【问题描述】:

我想从现在减去一个指标的计数,例如 5 分钟前。 我怎样才能做到这一点?

这是行不通的:

count(istio_requests_total{destination_workload=~"production-api") -  count(istio_requests_total{destination_workload=~"production-api") [5m:5m]

每个返回的指标值如下:

istio_requests_total{connection_security_policy="none", destination_app="unknown", destination_canonical_revision="latest", destination_canonical_service="production-api", destination_cluster="Kubernetes", destination_port="81", destination_principal="unknown", destination_service="production-api.production.svc.cluster.local", destination_service_name="production-api", destination_service_namespace="production", destination_version="unknown", destination_workload="production-api", destination_workload_namespace="production", instance="10.233.64.228:15090", job="envoy-stats", path="/favicon.ico", reporter="destination", request_duration="0.013466636s", request_host="api.test.com", request_protocol="http", request_size="0", request_time="2022-11-15T21:41:36.699467Z", request_total_size="1233", response_code="404", response_flags="-", source_app="unknown", source_canonical_revision="latest", source_canonical_service="unknown", source_cluster="unknown", source_principal="unknown", source_version="unknown", source_workload="unknown", source_workload_namespace="unknown", url_path="/favicon.ico"}  1 @1668673800

由于 request_duration 和 request_time 之类的标签,返回的指标彼此不同。

运行查询时出现此错误:

执行查询时出错:参数“查询”无效:1:197:解析错误:二进制表达式只能包含标量和即时向量类型

我也测试过这样的东西?

delta(count(istio_requests_total{destination_workload=~"production-api"))[5m])

【问题讨论】:

  • 使用偏移量获取“先前”值

标签: prometheus promql


【解决方案1】:

尝试以下操作:

count(istio_requests_total{destination_workload=~"production-api") -  count(istio_requests_total{destination_workload=~"production-api") offset 5m

在 Prometheus 文档 here 中查看更多信息。

【讨论】:

    【解决方案2】:

    如果您需要计算过去 5 分钟内 istio 请求的总数,那么以下 PromQL 查询应该可以工作:

    sum(increase(istio_requests_total[5m]))
    

    它以下列方式工作:

    1. 它计算每个 time seriesistio_requests_total 名称和 increase(istio_requests_total[5m]) 在过去 5 分钟内的请求数。见increase() docs
    2. 它使用 sum(...) 聚合函数对从上一步返回的每个系列值求和 - 请参阅 sum() docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2021-10-13
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      相关资源
      最近更新 更多