現在公司使用的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=INFO -jar jmxtrans-267-all.jar -e -f kafka.json -s 10
note:使用NSSM包裝為windows services
最後再透過grafana建立漂亮的dashboard就可以收工了
參考