在 Java 个进程中使用 Micrometer Timer?

Using Micrometer Timer across Java processes?

我想使用 Micrometer 收集在一个 Java 进程中开始并在另一个 Java 进程中完成(通过它们之间的 Kafka 通信)的任务的持续时间指标。

本来想用LongTaskTimer.start()那个returns一个LongTaskTimer.Sample对象,然后连同Kafka消息传给第二个进程,然后用LongTaskTimer.Sample.stop()记录任务持续时间。但尚不清楚 LongTaskTimer.Sample 对象是否可以序列化,也不清楚这种方法是否可行。

是否可以使上述方法起作用?如何?如果没有,实现既定目标的最简单方法是什么?

不确定这是否重要 - 我的运行时环境是 Spring Boot 2,我正在向 Prometheus 收集指标(使用标准千分尺 prometheus 注册表)。

Micrometer 不支持跨多个 JVM 生成的指标。 您的选择是:

  1. 使用多个指标,然后在 grafana 中创建一个视图,该视图将包含一个对两个(或更多)指标求和的查询。它可能不是流量的精确测量值,而是某种可以提供系统中发生的情况的 "feeling" 的平均值。

  2. 使用某种跟踪软件。像 Jaeger 这样的东西(参见 here 示例)

  3. 自己实现流程(比如在进程A中测量一个操作的时间差异,然后将这个值放入kafka消息中,然后在进程B中读取这个值并在完成时添加自己的延迟等等。链中的最后一个过程可以记录值或其他东西(或者如果需要,可以使用千分尺)