在Java进程中使用千分尺计时器吗?

问题描述 投票:0回答:1

我想使用千分尺为在一个Java进程中开始并在另一个Java进程中完成(通过Kafka之间的通信)的任务收集持续时间度量。

我曾考虑使用LongTaskTimer.start()返回一个LongTaskTimer.Sample对象,然后将其与Kafka消息一起传递给第二个进程,然后使用LongTaskTimer.Sample.stop()记录任务持续时间。但是,尚不清楚LongTaskTimer.Sample对象是否可以序列化,而且一般来说这种方法是否可行。

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

[不确定是否重要-我的运行时环境是Spring Boot 2,并且我正在将度量标准收集到Prometheus(使用标准千分尺prometheus注册表)。

java spring-boot prometheus metrics micrometer
1个回答
0
投票

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

  1. 使用多个指标,然后在grafana中创建一个视图,该视图的查询将汇总两个(或更多)指标。它可能不是流量的精确度量,而是某种平均值,可以“感觉”系统中发生的事情。

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

  3. 您自己实施流程(例如,测量流程A中一个操作的时间差,然后将该值放入kafka消息中,然后在流程B中读取该值,并在完成时添加其自身的延迟,依此类推。最后一个流程链中的值可以记录值或其他内容(或根据需要使用千分尺)
© www.soinside.com 2019 - 2024. All rights reserved.