HBase 集群监控系统构建
HBase 集群监控系统构建
标签(空格分隔): Hbase
一, 集群为什么需要监控系统
总的来说是为了保证系统的稳定性,可靠性,可运维性。具体来说我认为有以下几点:
掌控集群的核心性能指标,了解集群的性能表现。
集群出现问题时及时报警,便于Hbase运维同学及时修复问题。
集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动。
当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题。无监控,不运维。
二, 如何构建HBase集群监控系统
一般来说,大公司内部都有企业统一的监控报警系统,开源的有zabbix以及小米的Open-Falcon。对于HBase集群来讲,我们所要做的就是将我们关心的指标项发送到公司的监控系统,并配置相关的报警信息即可。所以问题现在转化为我们应该开发,采集并上报哪些HBase集群监控项
三,HBase 集群监控项采集
3.1 主机基本监控项
CPU,内存,磁盘,网络 主机4大 基本监控项,这4项机器监控保证我们运行我们HBase集群的机器是正常的。
3.2 JVM监控项
HBase集群涉及的系统HDFS,HBase,ZooKeeper都是用Java编写的,系统都是运行在JVM中,所以我们必须采集JVM相关的监控项,尤其是JVM的GC信息。GC信息在整个大数据生态圈中都是极为重要的监控指标。
3.3 HBase集群各系统存活监控项
HBase集群各个系统的进程是否存活是必须也是最基本的监控项。具体有hmaster;regionserver;namenode;datanode;journalnode;zkfc;zookeeper的存活监控。具体判断存活的方式我们可以去判断各系统相应的进程是否存在,也可以去判断各系统的web页面或者jmx页面是否正常。
3.4 HBase集群各系统JMX监控项
JMX全称是Java Management Extensions,用于用于Java程序扩展监控和管理项。而许多Hadoop系统都提供了丰富的JMX监控项,所以我们可以直接从HBase系统本身提供的JMX信息获取我们需要的监控项。HBase提供的JMX信息的web页面,地址就是 http://your_hmaster:60010/jmx,JMX web页面的数据格式是json格式。由于信息比较多,也提供了一个qry=name的方式获取具体某一项所需的数据,例如:http://namenode:50070/jmx?qry=hadoop:service=NameNode,name=NameNodeInfo只收集nameinfo相关的数据。 所以我们可以用多线程或多进程同时采集多个指标项,同时也要注意在每个线程处理的时候数据应该是异步的,否则同步可能导致某一个指标项采集阻塞, 使得之后的所有指标项在一个采集周期内无法正常返回数据。
下面是一个python利用进程池异步请求多个url的例子:
#!/usr/bin/env python
# encoding: utf-8
import urllib2
import multiprocessing as mp
results = []
def add_list(result):
results.append(result)
class PoolHelper(object):
def __call__(self, index, url):
return self.open_url(index, url)
def open_url(self, index, url):
try:
response = urllib2.urlopen(url, timeout = 10)
result = response.read()
except:
result = ''
return (index, result)
def pool_url(self, urls):
pool = mp.Pool()
for index, url in enumerate(urls):
pool.apply_async(self, args=(index, url,), callback=add_list)
pool.close()
pool.join()
return results
JMX的信息我们除了可以从web页面抓取外,也可以用Java 程序直接attach到目标进程直接获取JMX信息。
例如:
3.5 HBase集群web页面监控项
我们也可以从HBase的16010和16020的web页面直接抓取集群的一些汇总信息。具体实现方式可以使用正则匹配,python也可以直接使用BeautifulSoup获取页面上我们需要的信息,BeautifulSoup简单,易用,强大。
3.6 HBase集群特有监控项
3.6.1 HBCK监控
关于HBCK的具体含义可以参考:
3.6.2 HBase Replication监控
主要是用来确定开启Replication的HBase集群都正常同步,这一块为了便于被python调用,我们使用了JRuby开发,JRuby语法和Ruby一样,只不过可以直接调用Java API。
hbase shell>
status 'replcation'
也可以用hbase-client自带方法。
3.6.3 HBase 探针程序
探针程序就是为了确定整个集群状态健康,一般是建表,写数据,读数据,删数据,删表。探针监控在storm,hdfs,yarn等等组件都应该有完整的回路监控。
3.7 HBase集群 表粒度和Region粒度指标监控
因为HBase本身的JMX监控指标没有表粒度和Region粒度,所以我们需要二次开发。
一。利用HBase的observer类型的协处理器来统计基于表粒度的put,get,scan等请求信息,然后发送到HBase的Metric,最后再从jmx页面抓取监控项。
二。抓取所有Hbase regionserver metrics 然后进行汇总并写入到时序数据库。
3.8 HBase客户端监控
以上的监控项都是服务端的,我们也需要用户使用的HBase客户端也有监控,客户端监控也是HBase服务质量的一个体现。
HBase 集群监控系统构建的更多相关文章
- 集群监控系统Ganglia应用案例
集群监控系统Ganglia应用案例 --我们把集群系统投入生产环境后,这时就需要一套可视化的工具来监视集群系统,这将有助于我们迅速地了解机群的整体配置情况,准确地把握机群各个监控节点的信息,全面地察看 ...
- Hbase集群监控
Hbase集群监控 Hbase Jmx监控 监控每个regionServer的总请求数,readRequestsCount,writeRequestCount,region分裂,region合并,St ...
- vivo 容器集群监控系统架构与实践
vivo 互联网服务器团队-YuanPeng 一.概述 从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实 ...
- 【Ganglia】集群监控系统搭建
参考博客 www.cnblogs.com/atomicbomb/p/6726119.html 操作系统 centos7 机器两台 一. 配置软件环境 操作步骤: 使用yum安装方式安装所需基础依赖包 ...
- Zookeeper Monitor集群监控开发
随着线上越来越多的系统依赖Zookeeper集群.以至于Zookeeper集群的执行状况越来越重要.可是眼下还没有什么好用的Zookeeper集群监控系统(淘宝开源了一个Zookeeper监控系统,可 ...
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- 「从零单排HBase 10」HBase集群多租户实践
在HBase1.1.0发布之前,HBase同一集群上的用户.表都是平等的,大家平等共用集群资源.容易碰到两个问题: 一是某些业务较其他业务重要,需要在资源有限的情况下优先保证核心重要业务的正常运行 二 ...
- 基于docker快速搭建hbase集群
一.概述 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像Bigt ...
- 使用 Ansible 快速部署 HBase 集群
背景 出于数据安全的考虑,自研了一个低成本的时序数据存储系统,用于存储历史行情数据. 系统借鉴了 InfluxDB 的列存与压缩策略,并基于 HBase 实现了海量存储能力. 由于运维同事缺乏 Had ...
随机推荐
- win10的64位操作系统安装Oracle、Sql数据库遇到的问题及解决
因为工作需要,在重新安装操作系统(Win10)不久的电脑上安装Oracle的客户端(win32_11g)和PLSQL,这个本来就比较复杂,下面记录一下遇到的问题及解决方法. 我有储备多个Oracle的 ...
- 修建泳池&最大子矩阵
[题目描述] 夏天到了,学校打算在教学楼后面的空地上挖一个泳池供大家使用. 经过实地勘察,这块土地可以划分成N 行M 列的方格,有的方格是树,有的方格是空地.现在要找一块最大的矩形空地修建泳池,请问泳 ...
- Android快捷键大全
参考来源:https://mp.weixin.qq.com/s/T809p17Wt8XHkbLwcQf9ow 1,Ctrl + J 快捷代码列表 2,Ctrl+Alt+O 这个快捷键可以自动导包或删 ...
- 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- Python程序结构(sys、os)
一.Python组成结构 Python程序一般由包package.模块moudle.函数function组成.具体关系如下图:
- webpack4.x + vue2.x 构建前端工程化(1)
本篇文篇纯属个人笔记,实现工程化打包(用打包后的文件可以正常渲染页面),后续继续更新配置开发环境与生产环境,如果有不合理的地方还望各位指点! 不用脚手架,直接用vue和webpack搭建前端工程化项目 ...
- Property 'showModal' does no t exist on type 'JQuery<HTMLElement>'
在 TS 代码中使用 jQuery 等库时配合插件使用,但是插件的开发人员并没有为其扩展 jQuery 的类型定义,这是使用插件的方法必然会报 TS 的类型错误,这时候要快速选择忽略该报错的最直接的方 ...
- 09.AutoMapper 之自定义类型转换器(Custom Type Converters)
https://www.jianshu.com/p/47054d92db2a 自定义类型转换器(Custom Type Converters) 有时需要完全控制一种类型到另一种类型的转换.这一般发生在 ...
- mac osx sed 命令
$ sed -i "s/devicedemo/device/g" `grep devicedemo -rl ./` sed: 1: ".//.coveragerc&quo ...
- BFC的概念、BFC触发方式、BFC作用介绍
一.BFC的概念 GFC——block fomatting context(中文译为块级格式化上下文) 二. 如何触发BFC 1. 设置 float 除 none 以外的值(left.right) 2 ...