kafka 監控之mx4j-tool

      線上運行kafka集羣,集羣運行狀態察看是很是必要的。kafka自己在該方面也作的比較到位,目前從源碼級反應咱們能夠大體有兩種方式。我下面一一細說。
      kafka源碼包中有kafka.tools.JmxTool.scala,部分代碼以下:
java

object JmxTool {

  def main(args: Array[String]) {
    // Parse command line
    val parser = new OptionParser
    val objectNameOpt = 
      parser.accepts("object-name", "A JMX object name to use as a query. This can contain wild cards, and this option " +
                                    "can be given multiple times to specify more than one query. If no objects are specified " +   
                                    "all objects will be queried.")
      .withRequiredArg
      .describedAs("name")
      .ofType(classOf[String])
    val reportingIntervalOpt = parser.accepts("reporting-interval", "Interval in MS with which to poll jmx stats.")
      .withRequiredArg
      .describedAs("ms")
      .ofType(classOf[java.lang.Integer])
      .defaultsTo(5000)
    val helpOpt = parser.accepts("help", "Print usage information.")
    val dateFormatOpt = parser.accepts("date-format", "The date format to use for formatting the time field. " + 
                                                      "See java.text.SimpleDateFormat for options.")
      .withRequiredArg
      .describedAs("format")
      .ofType(classOf[String])
      .defaultsTo("yyyy-MM-dd HH:mm:ss.SSS")
    val jmxServiceUrlOpt = 
      parser.accepts("jmx-url", "The url to connect to to poll JMX data. See Oracle javadoc for JMXServiceURL for details.")
      .withRequiredArg
      .describedAs("service-url")
      .ofType(classOf[String])
      .defaultsTo("service:jmx:rmi:///jndi/rmi://:9999/jmxrmi")
       

      JmxTool.scala 的工做目的就是收集kafka集羣中jvm暴露的bean信息並打印出來。具體的運行示例是:
shell

./kafka-run-class.sh kafka.tools.JmxTool --jmx-url service:jmx:rmi:///jndi/rmi://:9999/jmxrmi
    

      可是利用該種監控方式,你將看到滿屏不知所云的消息,不明覺厲??
      所以該種方式只是提供了一種解決方案而已,真正要作的是仿照JmxTool.scala代碼寫出自行監控的代碼。 jvm

      難道沒有更好的方案了嗎???固然不是。 ui

      下一篇我將具體講到怎麼經過Mx4jLoader獲得kafka更好的監控方法。 this

相關文章
相關標籤/搜索