【问题标题】:How to monitor JVM without installing JDK如何在不安装JDK的情况下监控JVM
【发布时间】:2014-07-28 06:41:52
【问题描述】:

我想在我的生产环境中监控 JVM 性能。我只安装了 JRE,没有安装 JDK,因此我无法使用 jstat、jconsole 等来监控 JVM 性能。

有人可以帮助了解在这种情况下如何监控 JVM 性能吗?

有什么办法可以做到吗?

(请注意,我不想通过 JMX 或其他方式远程监控它。我想在每台机器上安装本地代理,它将每隔 1 分钟将指标发送到服务器。)

谢谢, KS

【问题讨论】:

  • JMX 是你的朋友,这里有教程stackoverflow.com/questions/151238/…
  • 对于那些投票结束这个话题的人,我相信这个问题属于“程序员常用的软件工具”类别,因此是话题。关闭的原因本身强化了问题应该保持开放,因为它“直接涉及[s]编程或编程工具。”
  • 您正在监控什么类型的应用程序 - 网络,独立?您考虑商业工具还是免费工具或两者兼而有之?您在公司中使用任何监控/APM 解决方案吗?
  • 我说的是独立的 java,而不是 web。我正在使用 sensu 和石墨进行监控。所以我希望 sensu 客户端将此指标发送到 sensu 服务器。如果我遗漏了什么,请告诉我。

标签: jvm monitoring


【解决方案1】:

如果您设法让 JMX 在您的 VM 上启动并运行(来自评论),那么您可以使用 jmxtermjmxfetch 将这些 JMX 指标推送到指标系统(如石墨或 Datadog)中。

【讨论】:

    【解决方案2】:

    如果你有足够的耐心和时间来写,你大概可以看看JVMTI。您可以用 C/C++ 编写代码并在您的 Java 进程中运行它,您可以收集有关 JVM 的信息而不影响它。

    另一种简单而幼稚的方法是使用用 java 编写的 javaagent 启动 VM,但 JVMTI 甚至比这更好。 javaagent 和 JVMTI 应用程序之间最关键的区别在于加载机制。虽然代理加载在堆内,但它们由同一个 JVM 管理。而 JVMTI 代理不受 JVM 规则的约束,因此不受 GC 或运行时错误处理等 JVM 内部结构的影响。

    如果您使用的是 JDK7 或更高版本,您甚至可以尝试 Java Mission Control :)

    【讨论】:

      【解决方案3】:

      Jolokia 是一个 java 代理,可用于将 JMX 公开为 http。运行 jmx2graphite 并将这些指标导入 Graphite。该链接包含 Graphite 安装说明(10 分钟)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-05
        • 2020-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-15
        • 1970-01-01
        相关资源
        最近更新 更多