jmxtrans+influxdb+granafa监控hbase

目前监控hadoop集群的主要工具有ganglia,nagios,zabbix等。其中ganglia最方便,hadoop中有自带jmx接口,启用了就行,但使用默认的监控方式,监控服务器磁盘会吃不消,并产生大量数据,故需要进行过滤(支持正则表达式),能过滤大量无用信息,但效果没有想象的好,个人觉得主要原因在于ganglia默认界面太丑,重复图片过多,一个监控项有四个图,占位置,且默认使用rrd数据库,数据完整性无法保证。
使用jmxtrans+influxdb+granafa主要原因在于自由度高,按监控所需自由搭配,数据完整性得到保证,界面漂亮。

使用前应做的:

安装jdk,hbase集群。
influxdb,granafa(可参考:http://blog.csdn.net/qq_27078095/article/details/52088423)

开启jmx监控选项

编辑hbase-env.sh,修改如下

# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102"
# export HBASE_THRIFT_OPTS="$HBASE_THRIFT_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
# export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
# export HBASE_REST_OPTS="$HBASE_REST_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10105"

变成

 export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
 export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101"
 export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102"
 export HBASE_THRIFT_OPTS="$HBASE_THRIFT_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
 export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
 export HBASE_REST_OPTS="$HBASE_REST_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10105"

重启hbase,若想使用jmxtrans,建议先用jdk自带工具(jconsloe)进行访问:

jmxtrans+influxdb+granafa监控hbase_第1张图片
输入ip:port进入;
jmxtrans+influxdb+granafa监控hbase_第2张图片
如上所示,查看MBean信息,用蓝笔圈出为obj信息和用红笔圈出为属性信息,在jmxtrans中主要使用到这两样信息。

安装jmxtrans并配置

在此使用rpm包安装,下载地址:http://central.maven.org/maven2/org/jmxtrans/jmxtrans/
建议:influxdb安装版本若是1.0及之后版本可下载最新的几个rpm包,若是1.0之前版本请下载259或之前版本(不要下247之类的,貌似不支持influxdb),不然会报错,错误提示为:java.lang.RuntimeException: Method Not Allowed
原因在于:
这里写图片描述
jmxtrans+influxdb+granafa监控hbase_第3张图片
上图是influxdb的java api的一些信息。
下图为jmxtrans,最新版本更新了代码,使得不支持influxdb1.0之前的版本。

安装jmxtrans:

# rpm -ivh jmxtrans-259.rpm

配置jmxtrans监控文件

jmxtrans监控文件默认路径为/var/lib/jmxtrans
,可以使用json形式书写,如下是一个监控hbase部分信息的示例:

{
  "servers" : [ { 
    "port" : "jmx-port",
    "host" : "jmx-host",
    "queries" : [ { 
    "obj" : "Hadoop:service=HBase,name=JvmMetrics",
    "attr" : [ "GcCount" ],
    "resultAlias":"GcCount",
    "outputWriters" : [ { 
        "@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
        "url" : "http://192.168.1.123:8086/",
        "username" : "账户",
        "password" : "密码",
        "database" : "hbaseJmx"
      } ] 
    },  
    {   
    "obj" : "Hadoop:service=HBase,name=RegionServer,sub=Regions",
    "attr" : [ "numRegions" ],
    "resultAlias":"numRegions",
    "outputWriters" : [ { 
        "@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
        "url" : "http://192.168.1.123:8086/",
        "username" : "账户",
        "password" : "密码",
        "database" : "hbaseJmx"
      } ] 
    } ] 
  } ] 
}

如上,监控了两个选项,分别是GcCount和numRegions。
jmx-host和jmx-port为需被监控的主机名和port。
obj的值就是图二中右侧的蓝笔obj信息。
attr的值就是图二中左侧的红笔属性信息。
resultAlias的值是别名,自定义。
outputWriters” : [ {
“@class” : “com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory”代表使用influxdb作为数据输入数据库。
username和password为influxdb的账户和密码,默认分别为“root”,“root”。
至此启动jmxtrans;

# /usr/share/jmxtrans/bin/jmxtrans start

等待片刻,在influxdb中应当会产生部分数据,即可在granafa图形化展示。
界面示例:
jmxtrans+influxdb+granafa监控hbase_第4张图片
参考文档:
https://segmentfault.com/a/1190000006630564
https://github.com/jmxtrans/jmxtrans/wiki/InfluxDBWriter
http://blog.csdn.net/qq_27078095/article/details/52837583

你可能感兴趣的:(influxdb,hbase,jvm)