OpenTSDB部署与使用
2019独角兽企业重金招聘Python工程师标准>>>
OpenTSDB 是基于 HBase 存储时间序列数据的一个开源数据库,对于存储监控系统采集的数据来说非常合适,不仅在写入查询上有很高的效率,而且节省存储空间。
安装 HBase
因为 OpenTSDB 的后端存储使用的是 HBase,所以我们需要先安装 HBase。
参考文档: Quick Start - Standalone HBase
这里简单搭建了一个单机的 HBase 环境:
- 安装 JDK 环境,centos 上可以直接通过 yum 安装。
- 下载 HBase,http://apache.fayea.com/hbase/stable,这里我们选择下载 stable 的 1.1.3 版本,文件名为
hbase-1.1.3-bin.tar.gz
,解压到任意目录。 - 修改
conf/hbase-env.sh
,设置JAVA_HOME=/usr
,这个是/bin/java
所在的目录,通过which java
查看。 - 修改
conf/hbase-site.xml
, 设置 hbase 的数据存储目录以及 zookeeper 的数据存储目录,默认会放到/tmp
目录下,这个目录机器重启后会清空,所以需要更改目录。 - 执行
bin/start-hbase.sh
启动 HBase,之后可以通过jps
命令来查看 HMaster 进程是否启动成功。bin/stop-hbase.sh
用于关闭 HBase。
conf/hbase-site.xml
的配置示例如下
<configuration><property><name>hbase.rootdir</name><value>file:///home/testuser/hbase</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/testuser/zookeeper</value></property>
</configuration>
通过命令行操作 HBase
这里可以稍微熟悉一下 HBase 的操作,非必须。
连接到 HBase
./bin/hbase shell
创建一张表
create 'test', 'cf'
查看表信息
list 'test'
向表中插入数据
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
查看表中所有数据
scan 'test'
查看指定行的数据
get 'test', 'row1'
禁用指定表(删除表或修改表设置前需要先禁用该表)
disable 'test'
恢复指定表
enable 'test'
删除表
drop 'test'
安装OpenTSDB
参考文章
http://debugo.com/opentsdb/
http://opentsdb.net/docs/build/html/installation.html#runtime-requirements
直接从 github 上下载 OpenTSDB 的 release 版本的 RPM 包。安装
yum localinstall opentsdb-2.2.0.noarch.rpm
。配置完成后,我们通过下面命令在 HBase 中建立 opentsdb 所需的表。默认情况下 opentsdb 建立的 HBase 表启用了 lzo 压缩。需要开启 Hadoop 中的 lzo 压缩支持, 这里我们直接在下面脚本中把 COMPRESSION 的支持关闭。修改
/usr/share/opentsdb/tools/create_table.sh
,设置COMPRESSION=NONE
,并且在文件开始处设置 HBase 所在目录,HBASE_HOME=/home/xxx/hbase-1.1.3
。之后执行该脚本,在 HBase 中创建相应的表。修改 OpenTSDB 的配置文件,
/etc/opentsdb/opentsdb.conf
,例如绑定的端口号等。这里需要注意的是 tsd.core.auto_create_metrics 从 false 改为 true。这样上传数据时会自动创建 metric,否则会提示 Unknown metric 的错误。也可以设置为 false,但是使用tsdb mkmetric proc.loadavg.1m
来手动添加 metric。启动 OpenTSDB,
service opentsdb start
或者nohup tsdb tsd &
。通过浏览器访问 http://x.x.x.x:4242 查看是否安装成功。
HTTP API
插入数据
/api/put
根据 url 参数的不同,可以选择是否获取详细的信息。
/api/put?summary // 返回失败和成功的个数
{"failed": 0,"success": 1
}
/api/put?details // 返回详细信息
{"errors": [],"failed": 0,"success": 1
}
通过POST方式插入数据,JSON格式,例如
{"metric":"self.test", "timestamp":1456123787, "value":20, "tags":{"host":"web1"}
}
查询数据
/api/query
可以选择 Get 或者 Post 两种方式,推荐使用 Post 方式,JSON 格式。
{"start": 1456123705,"end": 1456124985,"queries": [{"aggregator": "sum","metric": "self.test","tags": {"host": "web1"}},{"aggregator": "sum","metric": "self.test","tags": {"host": "web2"}}]
}
start 和 end 为指定的查询时间段。
queries 为一个数组,可以指定多个查询。
metric 和 tags 是用于过滤的查询条件。
返回字符串也为json格式
[{"metric": "self.test","tags": {},"aggregateTags": ["host"],"dps": {"1456123785": 10,"1456123786": 10}},{"metric": "self.test","tags": {"host": "web1"},"aggregateTags": [],"dps": {"1456123784": 10,"1456123786": 15}}
]
聚合
aggregator 是用于对查询结果进行聚合,将同一 unix 时间戳内的数据进行聚合计算后返回结果,例如如果 tags 不填,1456123705 有两条数据,一条 host=web1
,另外一条 host=web2
,值都为10,那么返回的该时间点的值为 sum 后的 20。
条件过滤
可以针对 tag 进行一些条件的过滤,返回 tag 中 host 的值以 web 开头的数据。
"queries": [{"aggregator": "sum","metric": "self.test","filters": [{"type": "wildcard","tagk": "host","filter": "web*"}]}
]
downsample
简单来说就是对指定时间段内的数据进行聚合后返回,例如需要返回每分钟的平均值数据
"queries": [{"aggregator": "sum","metric": "self.test","downsample": "1m-avg","tags": {"host": "web1"}}
]
作者:fatedier
转载于:https://my.oschina.net/weiweiblog/blog/1587064
OpenTSDB部署与使用相关推荐
- OpenTSDB部署
1 安装 本次安装是从 Github下载源码进行编译安装 2 运行环境 Linux 系统(本次使用CentOS6.5) JDK 1.6 及以上(本次使用JDK1.7) HBase 0.92 及以上(本 ...
- 基于docker部署 opentsdb + grafana数据监控系统
文章目录 0 前言 1 docker opentsdb部署 2 docker grafana部署 3 python client写入方案 4 数据持久化方案 5 云服务器部署踩坑事项 参考材料 0 前 ...
- Netdata---Linux系统性能实时监控平台部署记录
通常来说,作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况.下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具 ...
- Pinterest从OpenTSDB切换到他们自己的时间序列数据库
从2014年开始,Pinterest工程团队就一直使用OpenTSDB存储和查询指标.由于指标数据量的增长导致了各种性能问题,所以他们使用C++开发了自己的时间序列数据库Goku,并且兼容OpenTS ...
- OpenTSDB介绍
1.OpenTSDB介绍 1.1.OpenTSDB是什么?主要用途是什么? 官方文档这样描述:OpenTSDB is a distributed, scalable Time Series Datab ...
- All Things OpenTSDB
1. OpenTSDB介绍 OpenTSDB用HBase存储所有的时序(无须采样)来构建一个分布式.可伸缩的时间序列数据库.它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易 ...
- OpenTSDB 造成 Hbase 整点压力过大问题的排查和解决
业务背景 OpenTSDB 是一款非常适合存储海量时间序列数据的开源软件,使用 HBase 作为存储让它变的非常容易扩展.我们在建设美团性能监控平台的过程中,每天需要处理数以亿计的数据,经过几番探索和 ...
- 解密 云HBase时序引擎OpenTSDB 优化技术
逝者如斯夫,不舍昼夜. -- 孔子 时间如流水,一去不复返.自古不乏对时间流逝的感慨,而现 ...
- TDengine与OpenTSDB对比测试
TDengine与OpenTSDB对比测试 摘要:为帮助用户了解TDengine的指标,此次测试,从数据库的读.写.查询.压缩比等方面对TDengine和OpenTSDB进行了对比测试.从测试结果上看 ...
最新文章
- JZOJ 4161. 于神之怒
- 火焰效果材质实现_利用噪音图制作一个纸张燃烧的效果
- WPF 读取Docx文件并显示(附下载链接)
- C# JsonHelper类
- 理解CSS3 Flexbox
- QTP自动化测试-点滴-步骤
- Alpha阶段事后分析报告
- python时间如何处理_python 时间处理
- 基于大数据的人工智能象棋
- mysql安装显示挂起_安装Sql Server 2000时提示“安装Sql挂起”的解决方案
- cad管线交叉怎么画_高效设计!多种方式进行管线连接、伸缩
- 程序员应该阅读的一些书籍
- 通过微信聊天记录生成词云
- 统一网络存储NAS+SAN=FAS
- pcf8591c语言编程,学51单片机-基于PCF8591的AD采样和DA输出
- vsCode保存后,浏览器不会刷新
- STM32F407配置pca9685驱动
- php 上标和下标,css如何显示文字的上标和下标
- CF 1562 C. Rings (思维+模拟)
- 理解字节填充和零比特填充
热门文章
- 教小学四年级的计算机,小学四年级微机教学设计
- 雨棚板弹性法计算简图_造价工程师:钢结构工程量计算注意事项
- centeros 7源码安装mysql_Linux下源码编译安装MySql,centeros7
- mysql 逻辑型_17. 逻辑运算符
- 传感器为什么在低量程偏差大_传感器复习
- Python的集合set
- 【NLP】 NLP中应用最广泛的特征抽取模型-LSTM
- 【AI白身境】Linux干活三板斧,shell、vim和git
- VR来了,3D人脸重建跟上《三维人脸重建-3DMM》
- 全球及中国微型风扇行业营销前景及发展趋势建议报告2022-2027年