乐趣区

关于hbase:技术实践丨PrometheusGrafana搭建HBase监控仪表盘

摘要: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/data
temp_data_lifetime = 24h
logs = /opt/kernel/grafana-7.1.5/logs
plugins = /opt/kernel/grafana-7.1.5/plugins
provisioning = conf/provisioning

[database]
type = mysql
host = localhost:3306
name = grafana
user = root
password = 123456
url = 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: true
lowercaseOutputLabelNames: true
rules:

- 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…

点击关注,第一工夫理解华为云陈腐技术~

退出移动版