监控平台系统
HBase 有三个重要的组件:客户端库,一个 master server(可以配置多个备用 master,后文将对此进行详细描述)以及多个 Region Server。Master 负责分配 Region 到各个不同的 Region Server 上,Region Server 负责存储实际的数据。同时,HBase 通过使用 ZooKeeper,一种可靠,高可用,一致性的分布式协同服务来帮助其完成相应的任务。HBase 集群管理员可以通过在系统运行过程中添加和删除 Region Server 节点来调节改变工作负载。HBase 以 HFile 作为存储数据的基本格式,其底层的文件系统默认采用 HDFS。
上图显示了不同的组件如 HDFS,Zookeeper 是怎样与 HBase 一起协调工作的。Master Server 负责处理跨 Region Server 的 regions 数据的导入平衡,卸载繁忙的 Region Server 负担,将 region 转移到更空余的 Region Server 上。
HBase Master 不负责实际的数据存储,它协调导入平衡,维护集群的状态,维护 schema 的更改和 metadata 元数据操作,如创建表和列族(column families),但从不提供任何数据服务。
Region servers 负责加载和维护 region,包括处理对其管理的 region 的所有读写请求,以及 region 大小增长到超过配置阀值的时候对其进行切分。
客户端通过与 Zookeeper 通信获取到其需要进行读写操作的 region 所在的 Region Server 之后,将直接与 Region Server 通信,并由 Region Server 处理所有相关的请求。
一、HBase监控平台系统的组件介绍了解InfluxDb之前,需要先了解一下时间序列数据库。
时间序列数据库
数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。但是,有什么数据不包含Timestamp呢?几乎所有的数据其实都可以打上一个Timestamp字段。时间序列数据的更重要的一个属性是如何去查询它,包括数据的过滤,计算等等。
InfluxDb参考了相关博文:
作者:miaomiaoLoveCode
来源:CSDN
博文链接:influxdb基本操作
1.InfluxDb
InfluxDB是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及执行分析。内置HTTP API,所以不用再写服务端代码来启动和运行。数据可以被标记,允许非常灵活的查询。类似SQL的查询语言安装和管理简单,数据输入和输出速度快。它旨在实时响应查询。这意味着point数据写入即被索引并立即可供响应时间应小于100ms的查询使用。
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
InfluxDb特性与特点
三大特性:
- 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
- 度量(Metrics):对实时大量数据进行计算;
- 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
特点:
- schemaless(无结构),可以是任意数量的列;
- min, max, sum, count, mean, median 一系列函数,方便统计;
- Native HTTP API, 内置http支持,使用http读写;
- Powerful Query Language 类似sql;
- Built-in Explorer 自带管理工具。
influxDB名词
- database:数据库;
- measurement:数据库中的表;
- points:表里面的一行数据。
influxDB的一些概念
Point由时间戳(time)、数据(field)和标签(tags)组成。
- time:每条数据记录的时间,也是数据库自动生成的主索引;
- fields:各种记录的值;
- tags:各种有索引的属性。
- series:所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)
eg:
如下数据:
series为:
influxDB基本操作
数据库与表的操作
可以直接在web管理页面做操作,当然也可以命令行。
#创建数据库
create database "db_name"
#显示所有的数据库
show databases
#删除数据库
drop database "db_name"
#使用数据库
use db_name
#显示该数据库中所有的表
show measurements
#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#删除表
drop measurement "measurement_name"
增
向数据库中插入数据。
- 通过命令行
> use metrics
Using database metrics
> insert test,host=127.0.0.1,monitor_name=test count=1
- 通过http接口
curl -i -XPOST 'http://127.0.0.1:8086/write?db=metrics' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'
InfluxDB存储数据采用的是Line Protocol格式。
Line Protocol格式:写入数据库的Point的固定格式。
在上面的两种插入数据的方法中都有这样的一部分:
test,host=127.0.0.1,monitor_name=test count=1
其中:
- test:表名;
- host=127.0.0.1,monitor_name=test:tag;
- count=1:field
查
查询数据库中的数据。
- 通过命令行
> use metrics
Using database metrics
> select * from test order by time desc
- 通过http接口
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=metrics" --data-urlencode "q=select * from test order by time desc"
InfluxDB支持类sql语句的。
数据保存策略(Retention Policies)
InfluxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
- 查看当前数据库Retention Policies
show retention policies on "db_name"
- 创建新的Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1 default
- rp_name:策略名
- db_name:具体的数据库名
- 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)
- replication 1:副本个数,一般为1就可以了
- default:设置为默认策略
- 修改Retention Policies
alter retention policy "rp_name" on "db_name" duration 30d default
- 删除Retention Policies
drop retention policy "rp_name"
连续查询(continuous Queries)
当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb提供了联系查询,可以做数据统计采样。
- 查看数据库的continuous Queries
show continuous queries
- 创建新的Continous Queries
create continuous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
cq_name:连续查询名字
db_name:数据库名字
sum(count):计算总和
table_name:当前表名
new_table_name:存新的数据的表名
30m:时间间隔为30分钟
- 删除continuous Queries
drop continuous query cp_name on db_name
用户管理
可以直接在web管理页面做操作,也可以命令行。
#显示用户
show users
#创建用户
create user "username" with password 'password'
#创建管理员权限用户
create user "username" with password 'password' with all privileges
#删除用户
drop user "username"
2.Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。
Granfana是一个open source的图形化数据展示工具,可以自定义datasource,自定义报表、显示数据等。
3.Jmxtrans
JMX可以对外暴露jvm内部的一些指标,但是要获取那些jvm的内部信息,就还需要自己写java程序调用jmx接口去获取数据,并按照某种格式发送到其他地方(如监控程序Graphite,Zabbix等)。这时jmxtrans就派上用场了,jmxtrans的作用是自动去jvm中获取所需要的jmx数据,并按照某种格式(json文件配置格式)输出到其他应用程序。
二、HBase监控平台的搭建Hbase监控搭建
HBase监控主要安装三个组件jmxtrans、InfluxDb、grafana。
该文章就是利用Jmxtrans获取hbase在jmx中的指标,将指标插入到InfluxDb时序数据库,再通过Grafana从InfluxDb中查询展示数据。
文章链接:Hbase监控搭建
数据可视化之Grafana-Table Panel
该文章介绍Grafana的Table Panel,将数据用表格展示,当数据在不同数值区间内,会使用不同颜色填充表格,能迅速的判断当前数据的状态。
文章链接:数据可视化之Grafana-Table Panel
influxdb+grafana搭建业务监控平台前篇-相关环境搭建
介绍了Influxdb+Grafana监控平台的相关环境搭建。
文章链接:influxdb+grafana搭建业务监控平台前篇-相关环境搭建
分布式数据库 Hbase 的高可用管理和监控
三、搭建平台相关博文- influxdb基础—介绍和配置
- telegraf将数据写入influxdb
- grafana读取influxdb
- jmeter将统计结果写入influxdb
- influxdb基础—常用函数
- 将jmx指标写入influxdb
- influxdb基础—名词解释
- influxdb基础—http参考
- influxdb基础—基本操作
- influxdb基础—数据保留策略
- influxdb基础—influx参数和命令
- influxdb基础—influx参数和命令
- jmeter实时结果
- InfluxDB使用教程:Centos下安装influxDB
- InfluxDB使用教程:Linux常用操作和命令
- InfluxDB使用教程:InfluxDB中数据结构概念
- InfluxDB使用教程:数据库管理工具InfluxDBStudio
- InfluxDB使用教程:Java版InfluxDB工具类
CSDN:数据架构师