摘要:Grafana+Prometheus是目前十分风行的监控计划,图形化展现十分弱小。
本文分享自华为云社区《Prometheus+Grafana搭建HBase监控仪表盘》,原文作者:Lettle whale。
简介
● HBase是一个分布式的、面向列的开源数据库,开源版本默认提供了展现集群信息的UI,能够显示集群的实时信息,包含jmx,然而保护HBase只靠实时信息还不够,咱们还须要将实时信息汇总起来变成监控图表,这样能力剖析集群的运行状态,监控集群并及时公布告警。
● Prometheus 是一个开源的服务监控告警解决方案,同时它本身是一个工夫序列数据库,通过收集集群的jmx信息并以时序格局存储起来。
● Grafana是一个开源的数据可视化工具,能够用做监控来展现时序数据并进行统计,并且带有告警的性能,它的官网网站和社区提供了许多支流数据库的Dashboard模板,这些模板都是制作好的一些罕用的监控指标,首次应用能够先间接援用。
● 下图展现了这个监控零碎的构造
一、搭建筹备
● 须要筹备如下软件
● HBase集群筹备
这次的监控搭建,因为只作为展现用处,所以HBase应用伪分布式搭建形式在同一个虚拟机上部署了1个Master和2个Region Server,为保障在同一个虚拟机中端口不抵触,两个RS过程的对外端口都设置成不一样。
二、过程装置
1. prometheus的装置
下载prometheus,https://prometheus.io/download/,取得prometheus-2.25.2.linux-amd64.tar.gz
在虚拟机上解压后,进入prometheus目录,配置应用默认。
启动:
- 间接启动:./prometheus --config.file=prometheus.yml
- 后盾启动:nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &
启动后,能够拜访http://localhost:9090/graph, 进入prometheus的UI页面,能够看到它的一些信息。
过程敞开办法:
第一种,找到过程号, 执行 kill -TERM <PID>
第二种,curl -X POST http://localhost:9090/-/quit , 具体地址依据理论
2. mysql的筹备
Grafana须要用一个数据库,本文应用MySQL作为数据库,这里的装置就不介绍了,能够在网上搜寻相干的装置领导,或者应用已有的数据库。
须要为Grafana创立一个库
CREATE DATABASE grafana DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3. Grafana的装置
下载Grafana,https://grafana.com/grafana/d...,取得grafana-7.1.5.linux-amd64.tar.gz
在虚拟机上解压后,进入grafana/conf目录,新建文件custom.ini,该配置文件配置了依赖的database和grafana文件,日志等门路。 上面作为参考,理论门路依据本人的环境来配置
[paths]data = /opt/kernel/grafana-7.1.5/datatemp_data_lifetime = 24hlogs = /opt/kernel/grafana-7.1.5/logsplugins = /opt/kernel/grafana-7.1.5/pluginsprovisioning = conf/provisioning[database]type = mysqlhost = localhost:3306name = grafanauser = rootpassword = 123456url = mysql://root:123456@localhost:3306/grafana
启动:
- 进入grafana/bin目录
- 间接启动:./grafana-server
- 后盾启动: nohup ./grafana-server >/dev/null 2>&1 &
首次启动时,会主动去数据库创立grafana相干的表。启动实现后拜访http://localhost:3000,端口是3000,默认的账号密码是:admin/admin
4. JMX exporter的装置
(1)下载jmx_prometheus_javaagent-0.15.0.jar,https://mvnrepository.com/art...
将jmx_prometheus_javaagent-0.15.0.jar放入HBase的过程启动的lib目录下
(2)设置HBase的过程启动参数,这里是为了加上JMX exporter的agent,须要所有实例的conf/hbase-env.sh中设置,因为是伪分布式部署,所有过程都在一台服务器上,所以其中的一些端口号都设置为了不一样,如果是分布式部署,端口号能够设置固定。
export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
其中HMaster的conf/hbase-env.sh中设置
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20101 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27000:$HBASE_HOME/conf/hbase_jmx_config.yaml"
在RegionServer1的conf/hbase-env.sh中设置
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20102 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27001:$HBASE_HOME/conf/hbase_jmx_config.yaml"
在RegionServer2的conf/hbase-env.sh中设置
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=20103 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.15.0.jar=27002:$HBASE_HOME/conf/hbase_jmx_config.yaml"
设置完后,Master的jmx agent端口是27000,RS1是27001,RS2的端口是27002
(3)配置hbase_jmx_config.yaml
在hbase/conf目录下创立hbase_jmx_config.yaml,写入配置内容,提取指定的jmx指标
---lowercaseOutputName: truelowercaseOutputLabelNames: truerules:- pattern: Hadoop<service=HBase, name=RegionServer, sub=Regions><>Namespace_([^W_]+)_table_([^W_]+)_region_([^W_]+)_metric_(w+) name: HBase_metric_$4 labels: namespace: "$1" table: "$2" region: "$3"- pattern: Hadoop<service=(w+), name=(w+), sub=(w+)><>([w._]+) name: hadoop_$1_$4 labels: "name": "$2" "sub": "$3"- pattern: .+
(4)启动HBase过程,启动后能够依据jmx agent的IP和端口拜访metrics的url来判断是否失效,例如curl http://localhost:27000/metrics,
三、配置prometheus和grafana
1. prometheus上配置Job
在prometheus/prometheus.yml中减少一个job,来指定HBase的集群的JMX exporter, 在scrape_configs下减少如下配置
- job_name: 'dist-hbase'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:27000','localhost:27001','localhost:27002']
能够重启prometheus失效,也能够应用prometheus 的reload性能来激活
办法1:send SIGHUP signal
kill -HUP <pid>
办法2:send a HTTP POST to the Prometheus web server
用这种形式须要开启web.enable-lifecycle配置参数/prometheus --config.file=prometheus.yml --web.enable-lifecycle发送reload命令来加载curl -X POST http://localhost:9090/-/reload
失效后,通过查看prometheus UI上的target能够确认是否有收集胜利,State为UP即为胜利
2. grafana上配置datasource
进入grafana的UI,点击Configuration->DataSource->Add data source,增加Prometheus
配置Prometheus的地址,保留
3. Grafana上配置Dashboard
下载模板,https://grafana.com/grafana/d...,失去"hbase-1-x_rev1.json"文件
点击Dashboards-Manage->Import,导入下载的"hbase-1-x_rev1.json"文件内容
在后一个选项中,输出新建仪表盘的名字,以及抉择数据起源Prometheus,导入后监控仪表盘就生成了
仪表盘展现
本文参考资料:
https://godatadriven.com/blog...
https://www.cnblogs.com/caowe...
https://www.cnblogs.com/caowe...
https://www.cnblogs.com/caowe...
点击关注,第一工夫理解华为云陈腐技术~