码迷,mamicode.com
首页 > 其他好文 > 详细

JMXClient

时间:2015-07-21 15:30:47      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

以读取kafka metrics为例。

实际使用中可将读取的metrics存入时序数据库中,然后从页面展示。kafka-manager等不支持历史的指标展示。

JMXClient.scala

import javax.management.remote.{JMXConnector, JMXConnectorFactory, JMXServiceURL}
import javax.management._
import kafka.server.BrokerTopicMetrics
import kafka.utils.Logging
import kafka.metrics.KafkaMetricsGroup

object JMXClient {

    def useage() {
        println("Useage: java JMXClient <RMI url>")
    }

    def main(args: Array[String]) {
        if (args.length != 1) {
            useage
            System.exit(-1)
        }

        val url: JMXServiceURL = new JMXServiceURL(args(0))
        val connector: JMXConnector = JMXConnectorFactory.connect(url)
        val mbsc: MBeanServerConnection = connector.getMBeanServerConnection

        val beanSet: java.util.Set[ObjectInstance] = mbsc.queryMBeans(new ObjectName("*kafka*:type=*,name=*"), null)
        val beans: Array[ObjectInstance] = beanSet.toArray(
            new Array[ObjectInstance](0)).sortWith((o1, o2) => o1.getClassName.compare(o2.getClassName) < 0)
        for (bean <- beans) {
            val objectName: ObjectName = bean.getObjectName
            println(objectName)
            mbsc.getMBeanInfo(objectName).getAttributes.foreach(attr =>
                println("\t%s\t\t\t%s".format(attr.getName, mbsc.getAttribute(objectName, attr.getName))))
        }
    }
}

构建脚本build.sh,需设置好SCALA_HOME和KAFKA_HOME

#!/usr/bin/env bash

SCALA_HOME=~/opt/scala-2.9.2
KAFKA_HOME=~/opt/kafka_2.9.2-0.8.1.1
SCALAC=$SCALA_HOME/bin/scalac
LIBS=.
for i in $KAFKA_HOME/libs/*.jar; do
  LIBS="$LIBS:$i"
done

cmd="$SCALAC -classpath $LIBS JMXClient.scala"
echo "$cmd"
$cmd


JMXClient

标签:

原文地址:http://my.oschina.net/u/1445655/blog/481196

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!