ZBLOG

prometheus 中,Histogram 与 Summary 的异同,并给出具体的示例,做出对比

好的,下面是关于 Prometheus 中 Histogram 和 Summary 的详细对比,并提供一些示例。

  1. 相同点
  • 都用于度量分布式系统性能。
  • 都可以记录和展示观测值的分布情况。
  • 都支持各种聚合操作,如 sum、count、quantile 等。
  1. 不同点
  • Histogram 通过将观测值划分成固定区间(桶)来记录数据分布情况;而 Summary 则通过百分位数来确定桶的边界。
  • Histogram 更适合处理长尾型数据或极端事件,Summary 则更适合记录短周期内的数据变化。

下面给出两个具体的示例:

Histogram 示例:假设我们要度量某个 Web 服务请求的延迟时间。我们可以使用 Histogram 记录每个请求花费的时间,并将其划分为若干区间。例如,我们可以定义以下四个桶:

  1. {le="10"} // 请求完成时间小于等于 10 毫秒
  2. {le="50"} // 请求完成时间大于 10 毫秒且小于等于 50 毫秒
  3. {le="100"} // 请求完成时间大于 50 毫秒且小于等于 100 毫秒
  4. {le="+Inf"} // 请求完成时间大于 100 毫秒

然后,我们可以在 Prometheus 中定义一个名为 request_latency_seconds 的 Histogram 类型指标:

  1. request_latency_seconds = Histogram(
  2. name = "request_latency_seconds",
  3. help = "Request latency in seconds.",
  4. buckets = [10, 50, 100, float('inf')],
  5. )

接下来,在每次请求完成时,我们可以记录请求的延迟时间:

  1. start_time = time.time()
  2. do_something()
  3. elapsed_time = time.time() - start_time
  4. request_latency_seconds.observe(elapsed_time)

最后,我们可以使用 Prometheus 的查询语句来计算各种聚合操作(如 sum、count、quantile 等),并在 Grafana 中绘制直方图等可视化图表。

Summary 示例:假设我们要度量某个 Web 服务的处理速率。我们可以使用 Summary 记录每秒钟处理请求数,并自动计算出不同百分位数的值。例如,我们可以定义以下三个百分位数:

  1. 0.5 // 50% 百分位数
  2. 0.9 // 90% 百分位数
  3. 0.99 // 99% 百分位数

然后,在 Prometheus 中定义一个名为 request_rate 的 Summary 类型指标:

  1. request_rate = Summary(
  2. name = "request_rate",
  3. help = "Request rate per second.",
  4. objectives = {
  5. '0.5': 0.01,
  6. '0.9': 0.001,
  7. '0.99': 0.0001,
  8. },
  9. )

接下来,在每次请求完成时,我们可以记录处理请求数:

  1. current_timestamp_ms = int(time.time() * 1000)
  2. requests_per_second = 1 / elapsed_time
  3. request_rate.observe(requests_per_second, current_timestamp_ms)

最后,我们可以使用 Prometheus 的查询语句来计算各种聚合操作(如 sum、count、avg 等),并在 Grafana 中绘制可视化图表。例如,以下查询语句可以计算出前一分钟内请求处理速率的平均值:

  1. rate(request_rate[1m])

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2694

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?