如何使用千分尺和普罗米修斯(PromQL)测量异步进程的总时间?

How to measure the total time of an asynchronous process using micrometer and prometheus (PromQL)?

我有以下微服务场景

微服务 1

1 - 收集一个 System.getCurrentTimeMillis

2 - 在数据库中操作后生成一个 id

3 - 这一步应该将ID和操作的初始时间发送给Prometheus

微服务 7

1 - 完成处理第一个微服务中生成的 ID 的消息

2 - 收集一个 System.getCurrentTimeMillis

3 - 此步骤应将 ID 和操作的最终时间发送给 Prometheus

如何实现第 3 步,然后使用 PromQL 测量总交易时间?

如果可能的话,数据可以在 prometheus 中显示为直方图,就像在 http 请求的显示中一样。

您描述的方法并不是 Prometheus 的实际用途。您正在描述日志记录或跟踪。 (参见 Zipkin, Jaeger 等)

发送到 Prometheus 的指标是汇总的。因此,您(通常)无法梳理出个别电话。 (用于使其工作的任何黑客都不会扩展太远)

Micrometer/Prometheus 最好用于跟踪处理的各个步骤所花费的总持续时间。