我想使用千分尺为在一个Java进程中开始并在另一个Java进程中完成(通过Kafka之间的通信)的任务收集持续时间度量。
我曾考虑使用LongTaskTimer.start()
返回一个LongTaskTimer.Sample
对象,然后将其与Kafka消息一起传递给第二个进程,然后使用LongTaskTimer.Sample.stop()
记录任务持续时间。但是,尚不清楚LongTaskTimer.Sample
对象是否可以序列化,而且一般来说这种方法是否可行。
是否可以使上述方法起作用?怎么样?如果没有,实现既定目标的最简单方法是什么?
[不确定是否重要-我的运行时环境是Spring Boot 2,并且我正在将度量标准收集到Prometheus(使用标准千分尺prometheus注册表)。
Micrometer不支持跨多个JVM生成的指标。您的选择是:
使用多个指标,然后在grafana中创建一个视图,该视图的查询将汇总两个(或更多)指标。它可能不是流量的精确度量,而是某种平均值,可以“感觉”系统中发生的事情。
使用某种跟踪软件。像Jaeger这样的东西(请参见here示例)