【问题标题】:Using Micrometer Timer across Java processes?在 Java 进程中使用 Micrometer 计时器?
【发布时间】:2020-08-17 15:19:49
【问题描述】:

我想使用 Micrometer 来收集在一个 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】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      相关资源
      最近更新 更多