HBase 集群监控

为什么需要监控?

为了保证系统的稳定性,可靠性,可运维性。

  1. 掌控集群的核心性能指标,了解集群的性能表现。
  2. 集群出现问题时及时报警,便于运维同学及时修复问题。
  3. 集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动。
  4. 当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题

如何构建 HBase 集群监控系统?

公司有自己的监控系统,我们所要做的就是将 HBase 中我们关心的指标项发送到监控系统去,问题就转换为我们开发,采集并返回哪些 HBase 集群监控指标项。

HBase 集群监控指标

采集的监控数据主要包括以下几个方面:某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;某台 regionserver(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用状况,以及 ERROR、WARN、Fatal 事件出现的次数;regionserver(或 master)进程中的统计信息。

可以通过以下地址获取 HBase 提供的 JMX 信息的 web 页面

http://your_master:60010/jmx  //所有的bean

JMX web 页面的数据格式是 json格式,信息很多!

OS 监控数据

HBase 中对于 OS 的监控数据,主要是 OperatingSystem 的对象来进行的,如下就是我提取出来的 JSON 信息,

{
    "name" : "java.lang:type=OperatingSystem",
    "modelerType" : "com.sun.management.UnixOperatingSystem",
    "MaxFileDescriptorCount" : 1000000,
    "OpenFileDescriptorCount" : 413,
    "CommittedVirtualMemorySize" : 1892225024,
    "FreePhysicalMemorySize" : 284946432,
    "FreeSwapSpaceSize" : 535703552,
    "ProcessCpuLoad" : 0.0016732901066722444,
    "ProcessCpuTime" : 59306210000000,
    "SystemCpuLoad" : 0.018197029910060655,
    "TotalPhysicalMemorySize" : 16660848640,
    "TotalSwapSpaceSize" : 536862720,
    "AvailableProcessors" : 8,
    "Arch" : "amd64",
    "SystemLoadAverage" : 0.0,
    "Name" : "Linux",
    "Version" : "2.6.32-431.11.7.el6.ucloud.x86_64",
    "ObjectName" : "java.lang:type=OperatingSystem"
  }

其中比较重要的指标有 OpenFileDescriptorCount , FreePhysicalMemorySize ,ProcessCpuLoad , SystemCpuLoad , AvailableProcessors , SystemLoadAverage

JVM 监控数据

Hbase 中对于 JVM 的监控数据,主要是 JvmMetrics 的对象来进行的,如下就是我提取出来的 JSON 信息,

{
    "name" : "Hadoop:service=HBase,name=JvmMetrics",
    "modelerType" : "JvmMetrics",
    "tag.Context" : "jvm",
    "tag.ProcessName" : "Master",
    "tag.SessionId" : "",
    "tag.Hostname" : "uhadoop-qrljqo-master2",
    "MemNonHeapUsedM" : 53.846107,
    "MemNonHeapCommittedM" : 85.84375,
    "MemNonHeapMaxM" : 130.0,
    "MemHeapUsedM" : 79.05823,
    "MemHeapCommittedM" : 240.125,
    "MemHeapMaxM" : 989.875,
    "MemMaxM" : 989.875,
    "GcCountParNew" : 15190,
    "GcTimeMillisParNew" : 72300,
    "GcCountConcurrentMarkSweep" : 2,
    "GcTimeMillisConcurrentMarkSweep" : 319,
    "GcCount" : 15192,
    "GcTimeMillis" : 72619,
    "ThreadsNew" : 0,
    "ThreadsRunnable" : 21,
    "ThreadsBlocked" : 0,
    "ThreadsWaiting" : 144,
    "ThreadsTimedWaiting" : 18,
    "ThreadsTerminated" : 0,
    "LogFatal" : 0,
    "LogError" : 0,
    "LogWarn" : 0,
    "LogInfo" : 0
  }

JvmMetrics 主要统计的信息包括:内存的使用状态信息;GC的统计信息;线程的统计信息;以及事件的统计信息。

内存的统计信息主要是:JVM 当前已经使用的 NonHeapMemory 的大小、以及配置的 NonHeapMemory 的大小;JVM 当前已经使用的 HeapMemory 的大小、以及配置的 HeapMemory 的大小; JVM 运行时的可以使用的最大的内存的大小。

GC 的统计较为简单,仅统计了进程在固定间隔内 GC 的次数和花费的总时间。

线程的统计,主要是统计进程内当前线程的处于 NEW 、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 这六种状态下的线程数量。

对于事件的统计,主要统计固定时间间隔内的 Fatal、Error、Warn 以及 Info 的数量。(这块好像不怎么重要)

Region Servers 健康

你也可以通过如下地址:

http://your_master:60010/jmx?qry=Hadoop:service=HBase,name=Master,sub=Server

获得到 Region Servers 健康值:

{
    "name" : "Hadoop:service=HBase,name=Master,sub=Server",
    "modelerType" : "Master,sub=Server",
    "tag.liveRegionServers" : "xxx",
    "tag.deadRegionServers" : "",
    "tag.zookeeperQuorum" : "xxx",
    "tag.serverName" : "xxx2,60000,1495683310213",
    "tag.clusterId" : "e5e044a3-ef9f-48f7-ba63-637376f5fa90",
    "tag.isActiveMaster" : "true",
    "tag.Context" : "master",
    "tag.Hostname" : "xxx",
    "masterActiveTime" : 1495683312239,
    "masterStartTime" : 1495683310213,
    "averageLoad" : 143.66666666666666,
    "numRegionServers" : 3,
    "numDeadRegionServers" : 0,
    "clusterRequests" : 1297834323
  }

MemoryPool

从全部的 JSON 值中你会看到很多种 MemoryPool 值,比如 Par Eden Space 、CMS Perm Gen、Par Survivor Space、CMS Old Gen、Code Cache ,按需获取吧。

总结

任何一个服务的监控系统都是一个不断迭代,不断优化的过程,不可能一开始就做到最好。监控总是比问题发生来的更早一些,而每一次出问题,又进一步加强相应方面的监控,我们需要让监控系统从出问题时才报警到可能出现问题时就预警逐渐过渡,最终让监控系统成为我们保证系统稳定性的一个有力工具。

最后

监控指标有很多,但请按需获取 ! 转载文章请注明原出处,谢谢支持! http://www.54tianzhisheng.cn/2017/10/21/HBase-metrics/

原文发布于微信公众号 - zhisheng(zhisheng_blog)

原文发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

看我如何使用TheFatRat接管你的Android手机

在这篇文章中,我们将教大家如何使用TheFatRat这款工具。这款工具可以帮大家构建后门程序,以及执行后渗透利用攻击等等。在主流Payload的帮助下,这款工具...

7622
来自专栏技术点滴

告别S! S! H! 秒杀终端工具——FastLogin快捷登录安装步骤功能测试卸载功能介绍

题记:自从接触到“跳板机”的概念后,一直就被烦不胜烦的机器名,ip地址,用户名,密码折腾的死去活来,心说能有个小精灵随时帮我输入那些重复的登录信息就好了。我见过...

1061
来自专栏杂烩

SSM项目搭建之MyBatis 原

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了goog...

702
来自专栏漫漫全栈路

Windows Server下IIS安装PHP+MySql环境

前几天看了几个动漫和电影,稍微有点感触,就想着写点影评,很多东西就开始从脑海里往外冒。之前说过要做个微信订阅号的,也就有了Gamean这个公众微信,当初是打算...

9944
来自专栏Java3y

移动商城项目总结

移动商城项目总结 移动商城项目是我第二个做得比较大的项目,该项目系统来源于传智Java168期,十天的视频课程(想要视频的同学关注我的公众号就可以直接获取了) ...

5058
来自专栏沈唁志

WordPress最新版完全禁用JSON REST API输出站点信息

WordPress 从 4.4 版本开始新增的 JSON REST API 功能,通过这个 REST API 可以很轻松的获取网站的数据,可应用于其他网站、手机...

1313
来自专栏任浩强的运维生涯

sentinel监控redis高可用集群(一)

一、首先配置redis的主从同步集群。 1、主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口。如果需要验证的,也要加多一行,认证密码。 s...

3904
来自专栏纯洁的微笑

Eureka 虽然闭源了,但注册中心还有更多选择:Consul 使用详解

在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面

5093
来自专栏大数据架构师专家

namp 渗透测试-安装篇

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。

1033
来自专栏Samego开发资源

利用Java实现串口全双工通讯For RS232

1902

扫码关注云+社区