【问题标题】:Can spring boot actuator expose remote jvm metrics?spring boot 执行器可以公开远程 jvm 指标吗?
【发布时间】:2021-02-25 12:28:50
【问题描述】:

对于一些老客户,我们希望公开一些指标用于健康监控。 正在查看 Spring Boot 应用程序,它从本地 JVM 公开了许多有用的指标。 如果我在服务器中单独安装 sprint 启动执行器应用程序,是否有可能从远程 JVM 公开所有这些信息? 任何其他建议//替代路径表示赞赏?

【问题讨论】:

    标签: spring-boot metrics spring-boot-actuator micrometer


    【解决方案1】:

    Micrometer 公开有关正在加载它的 JVM 的 JVM 指标。 如果您想公开有关应用程序的指标,只需向其添加 micrometer,您不一定需要 spring-boot,例如:如果您的后端是 prometheus:https://micrometer.io/docs/registry/prometheus
    选择你要使用的后端:https://micrometer.io/docs

    【讨论】:

    • 你是对的。我可以使用千分尺。唯一的问题是客户不打算更新产品。我正在寻找不需要更新主应用程序的解决方案
    • 不更新是什么意思?如果这是一个 spring-boot 应用程序,您甚至不需要添加千分尺,它已经存在,您只需要告诉如何公开指标(默认情况下它们在 /actuator/metrics 中可用,但您需要打开此端点来自配置)。
    • 我想挂钩的应用程序是一个传统的基于xml的spring应用程序。我们无法更新产品,因此想检查是否有其他可用的解决方案而不更改源代码
    • 对于标题中的问题:“spring boot actuator 可以公开远程 jvm 指标吗?”答案是肯定的。但是 spring-boot-actuator 是一个 spring-boot 库,你需要 spring boot 并添加到你的依赖项中。另外,如果你想添加一个现在不存在的特性,你需要改变一些东西:配置、类路径、java代理、spring xml配置、代码等,因为你想改变行为。
    【解决方案2】:

    从您的问题中不清楚“旧版”应用程序是否是 Spring Boot 应用程序。我不相信执行器适用于非 Spring Boot 应用程序,它当然不能远程监控应用程序。千分尺很好,但您确实需要一些设置才能使其正常工作,这通常由 Spring Boot 自动配置完成(例如,配置 GraphiteReporter)。

    如果您不/不能修改您要监控的应用程序的来源,您可以使用OpenTelemetry Java agent

    【讨论】:

    • 仅供参考:就目前情况而言 (2021-03-01),OTel 指标规范稳定的目标日期是今年年底。此后一段时间,不同语言(即:java)的规范实现将趋于稳定。 “OTEL 将很快发布他们的第一个稳定版本。”对于跟踪而言,可以认为是真实的(已经发生),但对于指标“很快”可能是夸大其词。
    • @JonatanIvanov 我应该更清楚。感谢您的注意,我已经更新了我的答案。
    • 老实说,这里最简洁的说法是:“您可以试验 OTel 指标,但不要在生产中使用它。”,让我引用一位 OTel 提交者的话:“绝对不要指望用户如果他们使用我们的 alpha 指标,那就玩得开心”:github.com/open-telemetry/opentelemetry-java/discussions/…
    • @JonatanIvanov 这完全取决于您的冒险意愿。 alpha 并不一定意味着“它不起作用,远离”,它的意思是“如果事情发生变化并破坏您的代码或存在错误,请不要责怪我们”。我不止一次在 Prod 中使用过最前沿的代码,但从未有过任何影响。关键是做好功课并了解您正在从事的工作。
    • 我认为说 OTel 指标是实验性的,在不久的将来它不会稳定,并且绝对不建议使用 prod 对用户来说是一个公平的信息。我认为这与您在 prod 中使用前沿代码的次数无关。
    猜你喜欢
    • 2018-11-29
    • 2015-07-04
    • 2015-06-29
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2020-05-22
    • 2018-11-16
    • 2017-08-31
    相关资源
    最近更新 更多