我已经在Kubernetes集群中部署了Istio Bookinfo应用程序。根据文档,我尝试使用以下查询来衡量平均请求持续时间:
rate(istio_request_duration_milliseconds_sum[1m]) / rate(istio_request_duration_milliseconds_count[1m])
此查询为我返回“加倍”结果,即对于每个请求,我得到两个结果,它们的 Value 不同,但 source 和 destination 相同,一个标记为 reporter =“ source” ,另一个标记为 reporter =“ destination” 。我找不到任何澄清,也不清楚这些措施的工作方式。为什么我要返回两个值?
答案 0 :(得分:2)
度量确实是从两个来源报告的,一次来自请求发送者,另一次来自请求接收者。这有点多余,但是在某些情况下值会有所不同,尤其是对于请求持续时间:从请求发送者(reporter=source
)开始,持续时间代表整个请求延迟(服务器处理时间+网络往返),而从请求开始接收者(reporter=destination
),主要代表服务器处理时间。
在一些特殊情况下,没有冗余,并且度量标准仅报告一次(无论是从源还是从目标):例如当诸如故障注入或流量镜像之类的istio功能发挥作用时。
因此,在Prometheus中,您应始终使用{reporter="source"}
或{reporter="destination"}
过滤所有查询。