[Kafka]Monitor Kafka with jmxtrans

現在公司使用的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就可以收工了

 

參考

jmxtrans

Monitoring JVM applications with jmxtrans

shahsaifi/jmxtrans