基于阿里云HBase搭建OpenTSDB

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: OpenTSDB是一个基于HBase的分布式、可伸缩的开源时序数据库。OpenTSDB由TSD(Time Series Daemon)和一系列命令行工具组成。TSD用于接收用户请求并将时序数据存储在HBase中。

OpenTSDB是一个基于HBase的分布式、可伸缩的开源时序数据库。OpenTSDB由TSD(Time Series Daemon)和一系列命令行工具组成。TSD用于接收用户请求并将时序数据存储在HBase中。TSD之间是相互独立的,没有master,也没有共享状态,因此可以根据系统的负载情况任意进行扩展。下图是一个基于OpenTSDB的监控系统架构图(来自官方文档):
tsdb | center | 499x319

本文介绍如何在阿里云HBase之上搭建OpenTSDB。

准备HBase和ECS实例

要在阿里云上部署OpenTSDB,我们需要:

  • 一个HBase实例,用来存储数据。HBase的规格可参考HBase文档
  • 一个ECS实例,用来安装、运行OpenTSDB。可参考文档

需要注意的是:
(1)ECS需要和HBase在相同的region内。如果是专有网络,需要ECS和HBase在同一个vpc下。
(2)建议选择linux操作系统(例如CentOS)。本文描述的安装步骤均在CentOS上执行成功,请注意其他操作系统可能部分命令会有不同。
(3)需要把ECS的IP加入到HBase的白名单中。

安装OpenTSDB

安装

要运行OpenTSDB,需要安装如下组件:

  • 安装HBase客户端
  • 安装GnuPlot
  • 安装OpenTSDB

1 安装HBase客户端

HBase客户端的作用主要是执行建表脚本在HBase中创建出OpenTSDB需要的表。HBase客户端的安装、配置过程可以参考这个文档

2 安装GnuPlot

GnuPlot是一个命令行的交互式绘图工具,OpenTSDB使用GnuPlot绘图。GnuPlot可以简单通过yum安装:

yum install -y gnuplot

3 安装OpenTSDB

可以在github上选择需要的版本,下载安装包安装或是下载源码tar包进行编译。以rpm包为例:

wget https://github.com/OpenTSDB/opentsdb/releases/download/v2.3.0/opentsdb-2.3.0.rpm
yum localinstall opentsdb-2.3.0.rpm

运行tsdb version看到如下输出

net.opentsdb.tools 2.2.0 built at revision 07d0464 (MINT)
Built on 2016/02/15 22:56:59 +0000 by hobbes@clhbase:/home/hobbes/opentsdb_OFFICIAL/build

表明已经安装完成了。

配置

1 在HBase中创建OpenTSDB需要的表

OpenTSDB提供了一个脚本来执行建表的动作。命令如下:

env COMPRESSION=SNAPPY HBASE_HOME=/path/to/hbase /usr/share/opentsdb/tools/create_table.sh

执行之后,会在HBase中创建出tsdb、tsdb-uid、tsdb-tree和tsdb-meta四个表。
在执行建表的脚本时需要设置这两个环境变量:

  • COMPRESSION表示OpenTSDB的表所使用的压缩方式。脚本中的默认值是lzo,但是阿里云HBase不支持这种压缩方式,我们把这个参数设置为SNAPPY。SNAPPY是阿里云HBase推荐的压缩方式,参见云HBase文档
  • HBASE_HOME配置为HBase客户端的安装目录。

2 修改OpenTSDB的配置文件

配置文件的路径在/etc/opentsdb/opentsdb.conf。我们需要把其中的tsd.storage.hbase.zk_quorum这个参数修改为HBase的ZK连接地址(可在HBase控制台查看)。
配置完成后,运行如下命令启动OpenTSDB:

tsdb tsd

执行

curl http://localhost:4242/api/config

看到如下输出

{"tsd.core.auto_create_metrics":"false","tsd.core.auto_create_tagks":"true","tsd.core.auto_create_tagvs":"true","tsd.core.meta.enable_realtime_ts":"false","tsd.core.meta.enable_realtime_uid":"false","tsd.core.meta.enable_tsuid_incrementing":"false","tsd.core.meta.enable_tsuid_tracking":"false","tsd.core.plugin_path":"/usr/share/opentsdb/plugins","tsd.core.preload_uid_cache":"false","tsd.core.preload_uid_cache.max_entries":"300000","tsd.core.socket.timeout":"0","tsd.core.storage_exception_handler.enable":"false","tsd.core.tree.enable_processing":"false","tsd.core.uid.random_metrics":"false","tsd.http.cachedir":"/tmp/opentsdb","tsd.http.query.allow_delete":"false","tsd.http.request.cors_domains":"","tsd.http.request.cors_headers":"Authorization, Content-Type, Accept, Origin, User-Agent, DNT, Cache-Control, X-Mx-ReqToken, Keep-Alive, X-Requested-With, If-Modified-Since","tsd.http.request.enable_chunked":"false","tsd.http.request.max_chunk":"4096","tsd.http.show_stack_trace":"true","tsd.http.staticroot":"/usr/share/opentsdb/static/","tsd.mode":"rw","tsd.network.async_io":"true","tsd.network.bind":"0.0.0.0","tsd.network.keep_alive":"true","tsd.network.port":"4242","tsd.network.reuse_address":"true","tsd.network.tcp_no_delay":"true","tsd.network.worker_threads":"","tsd.no_diediedie":"false","tsd.query.allow_simultaneous_duplicates":"true","tsd.query.filter.expansion_limit":"4096","tsd.query.skip_unresolved_tagvs":"false","tsd.query.timeout":"0","tsd.rtpublisher.enable":"false","tsd.rtpublisher.plugin":"","tsd.search.enable":"false","tsd.search.plugin":"","tsd.stats.canonical":"false","tsd.storage.compaction.flush_interval":"10","tsd.storage.compaction.flush_speed":"2","tsd.storage.compaction.max_concurrent_flushes":"10000","tsd.storage.compaction.min_flush_threshold":"100","tsd.storage.enable_appends":"false","tsd.storage.enable_compaction":"true","tsd.storage.fix_duplicates":"false","tsd.storage.flush_interval":"1000","tsd.storage.hbase.data_table":"tsdb","tsd.storage.hbase.meta_table":"tsdb-meta","tsd.storage.hbase.prefetch_meta":"false","tsd.storage.hbase.tree_table":"tsdb-tree","tsd.storage.hbase.uid_table":"tsdb-uid","tsd.storage.hbase.zk_basedir":"/hbase","tsd.storage.hbase.zk_quorum":"hb-wz9sn9wc5li4zbg04-001.hbase.rds.aliyuncs.com:2181,hb-wz9sn9wc5li4zbg04-002.hbase.rds.aliyuncs.com:2181,hb-wz9sn9wc5li4zbg04-003.hbase.rds.aliyuncs.com:2181","tsd.storage.repair_appends":"false"}

这表明,tsdb已经启动起来了。

使用OpenTSDB

OpenTSDB中,一条时序数据包含如下内容:

  • metric名称
  • UNIX时间戳
  • metric的值
  • tags:是一系列的k-v值,用来描述metric数据的属性。在查询数据时可以按照某一个属性做过滤和聚合。

我们以官方文档上所举的例子来描述OpenTSDB的写入和读取:采集cpu用户态使用率。我们将metric命名为sys.cpu.user,用两个tag来描述其属性:host和cpu表示数据描述的是哪个服务器的哪个cpu。

创建metric

使用如下命令

tsdb mkmetric sys.cpu.user

写入数据

作为测试,我们可以使用telnet接口写入两条数据:

# telnet localhost 4242
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
put sys.cpu.user 1356998400 42.5 host=webserver01 cpu=0
put sys.cpu.user 1356999400 42.7 host=webserver01 cpu=0

读取数据

可以使用命令行读取刚才写入的两条数据:

# tsdb query 1356998400 1356999400 sum sys.cpu.user
sys.cpu.user 1356998400000 42.500000 {host=webserver01, cpu=0}
sys.cpu.user 1356999400000 42.700001 {host=webserver01, cpu=0}

也可以使用http接口查询:

# curl 'http://localhost:4242/api/query?start=1356998400&m=sum:sys.cpu.user'
[{"metric":"sys.cpu.user","tags":{"host":"webserver01","cpu":"0"},"aggregateTags":[],"dps":{"1356998400":42.5,"1356999400":42.70000076293945}}]

在web页面查询数据

OpenTSDB提供了一个web页面供查询数据。通过以下步骤可以开放这个页面。

1 ECS绑定公网IP

如果ECS已经有一个公网IP则可以忽略这一步。否则,需要绑定一个弹性公网IP用来从公网访问ECS。具体操作步骤参见EIP文档

2 修改安全组规则

ECS默认的安全组规则没有开放OpenTSDB的端口。我们需要开放这个端口。
登陆ECS控制台,点击OpenTSDB所在的ECS"管理"进入详情页面。
ecs| center | 830x149

选择左侧的"本实例安全组",然后点击"配置规则"。
secure_group | center | 830x170

之后点击"添加安全组规则",在弹出的页面配置安全组的规则。协议类型选择"自定义TCP",端口范围输入OpenTSDB的端口。
rule | center | 830x915

这两步完成之后,在浏览器输入 ECS的公网IP:OpenTSDB端口,即可使用web页面查询数据。见下图:
web| center | 830x345

其他

本文仅简单介绍了OpenTSDB在阿里云上的部署和使用。关于OpenTSDB使用的更多细节可以参考官方文档,也可以在HBase技术社区的OpenTSDB话题下进行讨论。关于阿里云HBase的更多细节可以参考产品文档

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Ubuntu Linux 虚拟化
使用阿里云镜像站NTP服务搭建NTP服务器(基于CentOS 7系统)
使用阿里云镜像站NTP服务搭建NTP服务器(基于CentOS 7系统)
1361 0
使用阿里云镜像站NTP服务搭建NTP服务器(基于CentOS 7系统)
|
机器学习/深度学习 存储 弹性计算
基于阿里云搭建全量push系统
push又称消息推送、消息触达。叫法有很多但目的只有一个,就是通过各种渠道或方式将指定内容告知到指定用户。所以我们也可以称之为通知。
218 0
基于阿里云搭建全量push系统
|
域名解析 XML 弹性计算
基于阿里云ecs的个人博客搭建实战
本文所涉及的代码出自以下博客文章,十分感谢下面各位大佬的分享 基于开源的wordpress Argon 主题制作人博客:solstice23 – Blog
313 0
基于阿里云ecs的个人博客搭建实战
|
存储 安全 对象存储
用阿里云对象存储OSS搭建个人网盘或企业网盘的方法
阿里云对象存储OSS是低成本高可靠的存储服务,使用阿里云OSS对象存储搭建个人网盘或企业网盘的方法
|
分布式数据库 Hbase
《阿里云HBase产品体系架构及特性解析》电子版地址
阿里云HBase产品体系架构及特性解析
90 0
《阿里云HBase产品体系架构及特性解析》电子版地址
|
弹性计算 Linux
使用阿里云ECS搭建属于自己的wordpress个人博客体验
本文介绍了作者这段时间使用阿里云ECS的体验和搭建wordpress过程中遇到的一些问题和自己当时的想法,以及经过一个多星期的使用有哪些收获。
使用阿里云ECS搭建属于自己的wordpress个人博客体验
|
域名解析 关系型数据库 MySQL
阿里云轻量应用服务器怎么搭建网站?搭建WordPress博客全教程
阿里云轻量应用服务器WordPress应用镜像一键搭建WordPress博客,阿里云轻量应用服务器自带WordPress应用镜像,一键搭建WordPress博客网站,WordPress镜像环境基于Alibaba Cloud Linux3操作系统,PHP 8.1、MySQL 5.7和Nginx 1.22版本,阿里云百科来详细说下阿里云轻量应用服务器安装WordPress应用镜像全过程:
357 0
阿里云轻量应用服务器怎么搭建网站?搭建WordPress博客全教程
|
弹性计算 Shell
阿里云使用 emqx 搭建 MQTT 服务器
阿里云使用 emqx 搭建 MQTT 服务器
阿里云使用 emqx 搭建 MQTT 服务器
|
监控 Serverless 云计算
5 步!用阿里云 Serverless 搭建高质量的图片压缩工具
Serverless 是一种基于云计算的开发方法,它让开发人员可以专注于编写代码来解决业务问题,而不是处理服务器问题。它是独一无二的,因为它支持 Auto Scaling,执行应用程序所需的计算能力是按需分配的。并且使用一种称为事件驱动函数的模型来确定这些需求的范围。这就是 Serverless 架构,也称为功能即服务 (FaaS)。
5 步!用阿里云 Serverless 搭建高质量的图片压缩工具
阿里云的个人使用体验与关于阿里云个人博客搭建的补充
简单快速,通俗易懂易上手,体验满分10分给9.9分吧!!!
184 0

热门文章

最新文章