监控和警告低级别 JVM 指标的最佳实践是什么?

Tim*_*Tim 5 monitoring java

我希望为基于 Java 服务器的应用程序设置监控和警报,并希望找到一些最佳实践来监控 JVM 特定指标以及基于这些指标设计警报。

那么需要监控的关键 JVM 指标是什么?一些可能的竞争者:

  • 使用的堆空间
  • CPU使用率
  • GC频率
  • 在 GC 上花费的时间
  • 线程数
  • 班级数
  • 对象计数

一旦你开始观察一些指标,对于这些指标,什么是好的警报策略?CPU 使用情况似乎很简单,但是像堆空间这样的东西似乎很适合监视和查看,但它并没有像您期望的那样很好地转化为可警报的指标,因为它会增长到容量,触发 GC。但是像在 GC 中花费的时间,特别是与总时间的比率,它似乎具有很好的警报潜力。

我不是在寻找一种工具本身(即 Hyperic 或 Nagios)来执行监控,但如果有一个具有特别好的 Java 模板/默认图形/规则集的工具,那将是一个方便的指针。

Chu*_*Chu 1

我之前使用过hprof,它与JRE捆绑在一起。它进行 HEAP 和 CPU 监控。我通常用它来监视 CPU 使用情况并检查哪个线程占用了大部分 CPU。 http://java.sun.com/developer/technicalArticles/Programming/HPROF.html

我之前也用过JProbe,这是一个商业软件。 http://www.quest.com/jprobe/