使用Jmxtrans的理由:
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。利用JMX可以对外暴露jvm内部的一些指标,但是要获取那些jvm的内部信息,就还需要自己写java程序调用jmx接口去获取数据,并按照某种格式发送到其他地方(如监控程序Graphite,Zabbix,时序数据库Influxdb等)。这时jmxtrans就派上用场了,jmxtrans的作用是自动去jvm中获取所需要的jmx数据,并按照某种格式(json文件配置格式)输出到其他应用程序。
如果我们要监控Kafka、Kettle等一些开源的应用程序,市面上很难找到一款现成的监控平台,通过Jmxtrans + Influxdb + Grafana我们就可以轻松的打造属于自己的监控平台(包括Java的JMX监控)
2、rpm安装jmxtrans
1、下载rpm包
wget https://repo1.maven.org/maven2/org/jmxtrans/jmxtrans/272/jmxtrans-272.rpm
2、安装说明
rpm -ivh jmxtrans-272.rpm
warning: jmxtrans-272.rpm: Header V4 RSA/SHA512 Signature, key ID ed17de0a: NOKEY
Preparing... ########################################### [100%]
1:jmxtrans ########################################### [100%]
安装如下文件目录
rpm -ql jmxtrans
/etc/init.d/jmxtrans
/etc/jmxtrans
/usr/bin/yaml2jmxtrans
/usr/share/jmxtrans/
/var/lib/jmxtrans
/var/log/jmxtrans
/var/run/jmxtrans
jmxtrans安装目录:/usr/share/jmxtrans
jmxtrans配置文件 :/etc/jmxtrans/wrapper.conf
json文件默认目录:/var/lib/jmxtrans/
init脚本: /etc/init.d/jmxtrans
日志:/var/log/jmxtrans/jmxtrans.log
# ll /etc/jmxtrans
lrwxrwxrwx 1 root root 23 6月 28 11:25 /etc/jmxtrans -> /usr/share/jmxtrans/etc
/etc/init.d/jmxtrans
lrwxrwxrwx 1 root root 32 6月 28 11:25 /etc/init.d/jmxtrans -> /usr/share/jmxtrans/bin/jmxtrans
3、配置开机启动
jmxtrans配置文件增加JAVA_HOME的配置,例如:
vi /etc/sysconfig/jmxtrans
export JAVA_HOME=/usr/java/default
chkconfig --add jmxtrans
chkconfig jmxtrans on
service jmxtrans start
#启动日志的文件在/var/log/jmxtrans/jmxtrans.log,大家可以通过查看日志来判断是否可以接收数据
4、测试样例
cd /var/log/jmxtrans
{
"servers" : [ {
"port" : "8022",
"host" : "172.20.1.1",
"queries" : [ {
"obj" : "java.lang:type=Memory",
"attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ],
"resultAlias":"jmxtrans_jvmMemory",
"outputWriters" : [ {
"@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
"url" : "http://1.1.1.1:8086/",
"username" : "admin",
"password" : "admin",
"database" : "test001",
"tags" : {"application" : "kafka_server"}
} ]
} ]
} ]
}