现在公司使用的Monitoring and Reporting System是由ITG建置而成。
最近公司在QA环境上了Kafka,预计取代servicebus处理log作业,
由于telegraf无法直接收集JVM applications,
加上我们使用influxdb当我们的datasource,
GDD后发现jmxtrans完全符合我的需求,这篇简单纪录一下设定和使用方式。
1.所有kafka node必须启用JMX
2.下载jmxtrans并透过json设定收集JMX server
{
"servers" : [ {
"port" : "9991",
"host" : "192.168.10.136",
"alias": "kafka-1",
"ssl": false,
"username" : "",
"password" : "",
"queries" : [ {
"outputWriters" : [
{
"@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
"url" : "http://192.168.10.98:8096/",
"database" : "kafka",
"username" : "1",
"password" : "1"
} ],
"obj" : "java.lang:type=Memory",
"attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ],
"resultAlias" : "jvmMemory"
}
],
"numQueryThreads" : 1
} ]
}
Note:你可以在每一台kafka node执行,我个人是在独立dashboard server收集所有远端kafka node的metrics,
另外你可以透过jconsole.exe查看你想要的kafka相关object,type和attribute
3.都没问题后,执行jmxtrans.jar
java -Djmxtrans.log.level=10 -jar jmxtrans.jar -e -f kafka.json -s 10
note:使用NSSM包装为windows services
最后再透过grafana建立漂亮的dashboard就可以收工了
参考
jmxtrans
Monitoring JVM applications with jmxtrans
shahsaifi/jmxtrans