对于Prometheus指标收集(例如标题),我无法真正找到只能通过Summary类型完成的用例,似乎它们也都可以通过直方图来完成。
让我们以请求并发指标为例,毫无疑问,这可以通过完成type Summary,但是我也可以通过使用来达到相同的效果type Histogram,如下所示:
费率(http_request_duration_seconds_sum [1s])/费率(http_request_duration_seconds_count [1s])
我可以看到的唯一区别是:对于摘要,百分位数是在客户端中计算的,它由一个计数和总和计数器(如直方图类型)和结果分位数组成。
因此,我对哪些用例真正使type Summary必要/独特感到迷茫,请帮助我。
当存在一组预定义的百分位数(必须为某些指标(例如request duration或 )公开response size,并且无需计算多个指标的聚合百分位数时,Prometheus 摘要指标类型非常有用。例如,如果您需要request duration在单个服务器上测量第 90、97 和 99 个百分位,则构成 Prometheus 摘要的以下指标对于导出非常有用:
http_request_duration_seconds{quantile="0.99"}
http_request_duration_seconds{quantile="0.97"}
http_request_duration_seconds{quantile="0.90"}
Run Code Online (Sandbox Code Playgroud)
用户更喜欢 Prometheus 汇总类型而不是Prometheus 直方图类型的另一个常见原因是汇总指标更容易理解和处理。
与直方图指标类型相比,摘要指标类型具有以下限制:
http_request_duration_seconds{quantile="0.99"}指标是针对集群中的每个服务器单独公开的,则无法计算集群中所有服务器的请求持续时间的第 99 个百分位。用户有时会使用avg(http_request_duration_seconds{quantile="0.99"})或max(http_request_duration_seconds{quantile="0.99"})作为解决方法,但结果值可能与实际百分位相差甚远。Prometheus 中的直方图指标类型也有其自身的问题:
当导出的直方图桶没有足够的测量覆盖范围时,计算的百分位数精度太低。例如,如果http_request_duration_seconds直方图有以下桶:[0-0.1], (0.1-1.0], (1.0-10.0]- 并且大多数请求在 0.5 秒内执行,那么所有这些请求都会进入该[0.1-1.0]桶。但不可能从这样的数据中高精度地计算出任何百分位。
导出的桶数量过多。当用户偶然发现第一个问题时,最常见的反应是创建大量存储桶,以便更好地覆盖测量。这可能会导致高基数问题,因为每个存储桶都作为单独的指标(也称为时间序列)公开。
无法使用不同的桶集聚合直方图。例如,http_request_duration_seconds直方图可以针对每个受监控的服务具有不同的桶组。那么就不可能计算多个服务的该直方图的百分位数。
这些问题在 VictoriaMetrics 直方图类型中得到解决 - 有关详细信息,请参阅本文。
| 归档时间: |
|
| 查看次数: |
1760 次 |
| 最近记录: |