0%

jmxtrans + influxdb + granafa 监控套件

大数据常用的监控组件的组合


前言

jmxtrans+influxdb+Grafana。jmxtrans用于收集服务的jmx信息(通过配置json文件),然后入库到influxDB。通过配置Grafana,把influxDB里面的数据通过web展示出来。

安装

influxDB

InfluxDb原先有web界面,但是这个web管理界面在1.1以后的版本中被删除。

1
2
3
4
5
6
7
8
# 下载地址 https://portal.influxdata.com/downloads/#influxdb
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.9.x86_64.rpm

# 安装
rpm -ivh influxdb-1.7.9.x86_64.rpm

# 启动
systemctl start influxdb

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 启动influxDb shell
influx

# 查询数据库
show databases;

# 跳转数据库
use hbaseJmx;

# 创建数据库
create database hbaseJmx;

# 查看表
show measurements;

# 查询表
select * from test limit 1;
jmxtrans

官网:http://www.jmxtrans.org/
下载地址:http://central.maven.org/maven2/org/jmxtrans/jmxtrans/

1
2
3
4
5
6
7
8
# 下载 270 版本
wget http://central.maven.org/maven2/org/jmxtrans/jmxtrans/270/jmxtrans-270.rpm

# 安装
rpm -ivh jmxtrans-270.rpm

# 启动
systemctl start jmxtrans

配置文件: /etc/jmxtrans/wrapper.conf

grafana

下载文档: https://grafana.com/grafana/download?platform=linux

1
2
3
4
5
6
7
8
# 下载
wget https://dl.grafana.com/oss/release/grafana-6.5.1-1.x86_64.rpm

# 安装
rpm -ivh grafana-6.5.1-1.x86_64.rpm

# 启动
systemctl start grafana-server

配置文件

  • 配置文件:/etc/sysconfig/grafana-server
  • 环境变量文件:/etc/grafana/grafana.ini
  • 日志文件:/var/log/grafana/grafana.log

网页访问,端口号3000,账号密码都是admin

收集 Jmx

这里以 HBase 为例,收集HBase里面的监控项,通过 Jmxtrans 写入到 influxDB ,然后通过 grafana 展示

配置hbase,将hbase-env.sh中以下配置项的注释打开,打开后为

1
2
3
4
5
6
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"

我这使用的是CDH的HBase,因此一开始在hbase-env.sh 的 HBase 客户端环境高级配置代码段(安全阀)添加了以上配置内容(去掉export, 否则会报错)

重启后发现未生效,服务端口并未启动,但是查看 /etc/hbase/conf/hbase-env.sh 有对应的配置。

最后通过全网搜索在小小默的博客中找到了原因,该配置无法识别$变量

后面我选择在HBase RegionServer 的 Java 配置选项的最后加了该配置,相应的是Master 的配置就在HBase Master 的 Java 配置选项添加

重启 HBase 集群之后可以在服务器查看对应端口是否启动成功

Jmxtrans 组件会读取 /var/lib/jmxtrans 目录下所有数据源配置文件(json格式文件),实时从数据源中获取数据,解析数据后存储到目标源中

在/var/lib/jmxtrans/目录下创建 hbaseJmx.json 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

"servers":[{
"port":"10102",
"host":"RS地址",
"queries":[{
"obj":"Hadoop:service=HBase,name=JvmMetrics",
"attr":["GcCount"],
"resultAlias":"GcCount",
"outputWriters":[{
"@class":"com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
"url":"http://influxDB地址:8086/",
"username":"admin",
"password":"admin",
"database":"hbaseJmx"
}]
},
{
"obj":"Hadoop:service=HBase,name=RegionServer,sub=Regions",
"attr":["Namespace_cnet2_table_graph_v_region_723302e21faa1d7335ceda36b96bba02_metric_storeFileSize"],
"resultAlias":"Regions",
"outputWriters":[{
"@class":"com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
"url":"http://influxDB地址:8086/",
"username":"admin",
"password":"admin",
"database":"hbaseJmx"
}]
}]
}]
}

上面的配置中第二部分的 Hadoop:service=HBase,name=RegionServer,sub=Regions 我监听了一个Region的storeFileSize,这是我的Region,不适用你的HBase,所以去掉即可,我这里只是展示多指标的配置样式

数据项说明

如果查询所有的属性,则在query子元素中不定义attr属性,influxdb 会将所有的attr属性作为表字段存储

关于HBase监控指标项可以参考这Hbase监控指标项

查看influxDB中的数据,记得要提前创建好 hbaseJmx 库

配置grafana这里跳过了,大家自行阅读其他博客,截图太累了。。。。大家可以参阅下方两个博客了解下

扩展

jmxtrans + influxdb + granafa 的应用挺广的,比如Zk,kafka、cannel,这里我贴几个我搜索到的资料


参考链接