java服务监控_Java 服务端监控方案(四. Java 篇)

本文介绍了如何使用JMX监控Java应用的性能参数,包括JMX的基本概念、自定义MBean以及利用jmxtrans将数据发送到Ganglia监控系统。文章还提及了一个内部使用的AverageMetric类,用于计算平均值、最大值和次数,并分享了jmxtrans的安装、配置和运行步骤。最后,作者提到了其他监控解决方案如collectd和Metrics库。
摘要由CSDN通过智能技术生成

http://jerrypeng.me/2014/08/08/server-side-java-monitoring-java/

这个漫长的系列文章今天要迎来最后一篇了,也是真正与 Java 有关的部分。前面介绍了我们的监控方案的 Ganglia 和 Nagios 及其整合的部分,这一次则介绍如何记录 Java 应用内的性能参数并将其暴露给监控系统。

主要介绍的内容有 JMX 以及将监控 JMX 并发送数据到 Ganglia 的 jmxtrans,同时还会介绍我实现的一个简单的记录性能参数的方法。

1. JMX

JMX 基本上是 Java 应用监控的标准解决方案,JVM 本身的诸多性能指标如内存使用、GC、线程等都有对应的 JMX 参数可供监控。自定义 MBean 也是十分简单的一件事。可以用两种方式来定义 MBean,第一种是通过自定义接口和对应的实现类,另一种则是实现 javax.management.DynamicMBean 接口来定义动态的 MBean。我们采用的是第二种方式,因此略过第一种方式的介绍,有兴趣的读者请参考Java Tutorial 里的教程和 Javalobby 上的文章。

下面是我们内部使用的 MetricMBean,使用 DynamicMBean 实现:

public class MetricsMBean implementsDynamicMBean {private final Mapmetrics;public MetricsMBean(Mapmetrics) {this.metrics = new HashMap<>(metrics);

}

@OverridepublicObject getAttribute(String attribute)throwsAttributeNotFoundException,

MBeanException,

ReflectionException {

Metric metric=metrics.get(attribute);if (metric == null) {throw new AttributeNotFoundException("Attribute " + attribute + " not found");

}returnmetric.getValue();

}

@Overridepublic voidsetAttribute(Attribute attribute)throwsAttributeNotFoundException,

InvalidAttributeValueException,

MBeanException,

ReflectionException {//我们仅仅需要做监控,没有设置属性的需要,所以直接抛异常

throw new UnsupportedOperationException("Setting attribute is not supported");

}

@OverridepublicAttributeList getAttributes(String[] attributes) {

AttributeList attrList= newAttributeList();for(String attr : attributes) {

Metric metric=metrics.get(attr);if (metric != null)

attrList.add(newAttribute(attr, metric.getValue()));

}returnattrList;

}

@OverridepublicAttributeList setAttributes(AttributeList attributes) {//我们仅仅需要做监控,没有设置属性的需要,所以直接抛异常

throw new UnsupportedOperationException("Setting attribute is not supported");

}

@OverridepublicObject invoke(String actionName,

Object[] params,

String[] signature)throwsMBeanException, ReflectionException {//方法调用也是不需要实现的

throw new UnsupportedOperationException("Invoking is not supported");

}

@OverridepublicMBeanInfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值