摘要:Grafana+Prometheus是目前非常流行的监控方案,图形化展示非常强大。

简介

● 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/download,获得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/artifact/io.prometheus.jmx/jmx_prometheus_javaagent/0.15.0

将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/dashboards/12722/revisions,得到"hbase-1-x_rev1.json"文件

点击Dashboards-Manage->Import,导入下载的"hbase-1-x_rev1.json"文件内容

在后一个选项中,输入新建仪表盘的名字,以及选择数据来源Prometheus,导入后监控仪表盘就生成了

仪表盘展示

本文参考资料:
https://godatadriven.com/blog/monitoring-hbase-with-prometheus/
https://www.cnblogs.com/caoweixiong/p/12111035.html
https://www.cnblogs.com/caoweixiong/p/12111243.html
https://www.cnblogs.com/caoweixiong/p/12736710.html

本文分享自华为云社区《Prometheus+Grafana搭建HBase监控仪表盘》,原文作者:Lettle whale。

点击关注,第一时间了解华为云新鲜技术~

技术实践丨Prometheus+Grafana搭建HBase监控仪表盘的更多相关文章

  1. Prometheus+Grafana通过kafka_exporter监控kafka

    Prometheus+Grafana通过kafka_exporter监控kafka 一.暴露 kafka-metric 方式 二.jmx_exporter方式 2.1 下载jmx_prometheus ...

  2. Telegraf+InfluxDB+Grafana搭建服务器监控平台

    Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...

  3. prometheus + grafana部署RabbitMQ监控

    prometheus + grafana部署RabbitMQ监控 1.grafana导入dashboards https://grafana.com/dashboards/2121   2.expor ...

  4. Prometheus+Grafana搭建监控系统

    之前在业务中遇到服务器负载过高问题,由于没有监控,一直没发现,直到业务方反馈网站打开速度慢,才发现问题.这样显得开发很被动.所以是时候搭建一套监控系统了. 由于是业余时间自己捯饬,所以神马业务层面的监 ...

  5. 【Prometheus+Grafana系列】监控MySQL服务

    前言 前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务.当时实现了监控服务器指标数据,是通过 node_exporter.Prometheu ...

  6. SpringBoot+Prometheus+Grafana实现应用监控和报警

    一.背景 SpringBoot的应用监控方案比较多,SpringBoot+Prometheus+Grafana是目前比较常用的方案之一.它们三者之间的关系大概如下图: 关系图 二.开发SpringBo ...

  7. 手把手教你搭建Windows 搭建Prometheus + Grafana + Jmeter可视化监控平台

    下载安装包 Prometheus windows_exporter Grafana 下载地址:https://share.weiyun.com/D9sdiWoC 工作原理 Exporter 监控工具, ...

  8. Prometheus+grafana搭建

    一.简介 1.1 Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等 ...

  9. collectd+influxDB+Grafana搭建性能监控平台

    网上查看了很多关于环境搭建的文章,都比较久远了很多安装包源都不可用了,今天收集了很多资料组合尝试使用新版本来搭建,故在此记录. 采集数据(collectd)-> 存储数据(influxdb) - ...

  10. 使用prometheus+ grafana+nginx-module-vts 模块监控openresty

      nginx-module-vts 是一个很不错的nginx 模块,我们可以用来,方便的分析系统的请求状态 同时支持基于prometheus 的监控, 我参考openresty 的docker镜像已 ...

随机推荐

  1. Go开发IDE全览:GoLand vs VSCode全面解析

    关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构 ...

  2. 用go封装一下临时token

    用go封装一下临时token 本篇为用go设计开发一个自己的轻量级登录库/框架吧的临时token篇,会讲讲临时token的实现,给库/框架增加新的功能. Github:https://github.c ...

  3. git报错fatal: unable to access 'https://github.com/hxx.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

    今天拉git代码报错 弄好了,下面是解决方法: 在网上查了很多办法都没有解决,有的方法是https连接模式改成ssh模式,或者是修改代理,比如: git config --global http.pr ...

  4. Util应用框架核心(三) - 服务注册器

    本节介绍服务注册器的开发. 如果你不需要扩展Util应用框架,直接跳过. 当你把某些功能封装到自己的类库,并希望启动时自动执行初始化代码进行配置时,定义服务注册器. 服务注册器概述 服务注册器是Uti ...

  5. CSS必学:你需要知道的盒子模型的秘密

    作者:WangMin 格言:努力做好自己喜欢的每一件事 作为前端开发来说,要掌握的CSS基础一定很多,那么CSS中盒子模型肯定是必考必问必掌握的前端知识点,因为它是CSS基础中非常重要的内容,接下来我 ...

  6. dmd-50

    按r键将其转换为字符 再将其拷贝下来 将其md5解密 得到一串英文,根据wp需要再将其加密一下,不知道为啥,得到的md5即为flag

  7. 剖析网络测量:Counting and Measuring Network Traffic

    全文共18000字,讲解了网络测量和计数中的多方面知识:网络测量的意义.网络测量的手段分类.网络测量在实现上的挑战.以及解决这些挑战所用到的技术和协同方案等等. 参考书籍有:<Network A ...

  8. 洛谷4159 [SCOI2009] 迷路(矩阵快速幂,拆点)

    题意:该有向图有 n 个节点,节点从 1至 n 编号,windy 从节点 1 出发,他必须恰好在 t 时刻到达节点 n.现在给出该有向图,你能告诉 windy 总共有多少种不同的路径吗?答案对2009 ...

  9. 记一次逆向分析解密还原Class文件

    前言 前阵子我的一位朋友发来一份代码让我帮忙看看.具体就是所有的jsp文件内容和大小都一样,漏洞挖掘无从下手.经过分析发现所有的Class都使用了自定义的加密工具加密,经过逆向分析,顺利解密,因而有了 ...

  10. NestJs系列之使用Vite搭建项目

    介绍 在使用nest创建项目时,默认使用webpack进行打包,有时候启动项目需要1-2分钟.所以希望采用vite进行快速启动项目进行开发. 本文主要使用NestJs.Vite和swc进行配置.文章实 ...