使用 Prometheus 的平均请求持续时间

Average request duration using Prometheus

我已经在 Kubernetes 集群中部署了 Istio Bookinfo 应用程序。按照文档,我尝试使用以下查询来测量平均请求持续时间:

rate(istio_request_duration_milliseconds_sum[1m]) / rate(istio_request_duration_milliseconds_count[1m])

这个查询 returns 我 "doubled" 结果即对于每个请求我得到两个结果,具有不同的 Value 但相同的 sourcedestination,一个标记为 reporter="source",另一个标记为 reporter="destination"。我找不到任何关于它的说明,我也不清楚这些措施是如何运作的。为什么我返回了两个值?

指标确实是从两个来源报告的,一次来自请求发送者,另一次来自请求接收者。这有点多余,但在某些情况下,值会有所不同,尤其是请求持续时间:来自请求发送方 (reporter=source),持续时间代表整个请求延迟(服务器处理时间 + 网络往返),而来自请求receiver(reporter=destination),主要代表服务器处理时间。

在一些特殊情况下,没有冗余并且指标只报告一次(无论是来自源还是来自目标):例如当故障注入或流量镜像等 istio 功能发挥作用时。

因此,在 Prometheus 中,您应该始终使用 {reporter="source"}{reporter="destination"}.

过滤所有查询