2019独角兽企业重金招聘Python工程师标准>>>

OpenTSDB 是基于 HBase 存储时间序列数据的一个开源数据库,对于存储监控系统采集的数据来说非常合适,不仅在写入查询上有很高的效率,而且节省存储空间。

安装 HBase

因为 OpenTSDB 的后端存储使用的是 HBase,所以我们需要先安装 HBase。

参考文档: Quick Start - Standalone HBase

这里简单搭建了一个单机的 HBase 环境:

  1. 安装 JDK 环境,centos 上可以直接通过 yum 安装。
  2. 下载 HBase,http://apache.fayea.com/hbase/stable,这里我们选择下载 stable 的 1.1.3 版本,文件名为 hbase-1.1.3-bin.tar.gz,解压到任意目录。
  3. 修改 conf/hbase-env.sh ,设置  JAVA_HOME=/usr,这个是 /bin/java 所在的目录,通过 which java 查看。
  4. 修改 conf/hbase-site.xml, 设置 hbase 的数据存储目录以及 zookeeper 的数据存储目录,默认会放到 /tmp 目录下,这个目录机器重启后会清空,所以需要更改目录。
  5. 执行 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

  1. 直接从 github 上下载 OpenTSDB 的 release 版本的 RPM 包。安装 yum localinstall opentsdb-2.2.0.noarch.rpm

  2. 配置完成后,我们通过下面命令在 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 中创建相应的表。

  3. 修改 OpenTSDB 的配置文件,/etc/opentsdb/opentsdb.conf,例如绑定的端口号等。这里需要注意的是 tsd.core.auto_create_metrics 从 false 改为 true。这样上传数据时会自动创建 metric,否则会提示 Unknown metric 的错误。也可以设置为 false,但是使用 tsdb mkmetric proc.loadavg.1m 来手动添加 metric。

  4. 启动 OpenTSDB,service opentsdb start 或者 nohup tsdb tsd &

  5. 通过浏览器访问 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部署与使用相关推荐

  1. OpenTSDB部署

    1 安装 本次安装是从 Github下载源码进行编译安装 2 运行环境 Linux 系统(本次使用CentOS6.5) JDK 1.6 及以上(本次使用JDK1.7) HBase 0.92 及以上(本 ...

  2. 基于docker部署 opentsdb + grafana数据监控系统

    文章目录 0 前言 1 docker opentsdb部署 2 docker grafana部署 3 python client写入方案 4 数据持久化方案 5 云服务器部署踩坑事项 参考材料 0 前 ...

  3. Netdata---Linux系统性能实时监控平台部署记录

    通常来说,作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况.下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具 ...

  4. Pinterest从OpenTSDB切换到他们自己的时间序列数据库

    从2014年开始,Pinterest工程团队就一直使用OpenTSDB存储和查询指标.由于指标数据量的增长导致了各种性能问题,所以他们使用C++开发了自己的时间序列数据库Goku,并且兼容OpenTS ...

  5. OpenTSDB介绍

    1.OpenTSDB介绍 1.1.OpenTSDB是什么?主要用途是什么? 官方文档这样描述:OpenTSDB is a distributed, scalable Time Series Datab ...

  6. All Things OpenTSDB

    1. OpenTSDB介绍 OpenTSDB用HBase存储所有的时序(无须采样)来构建一个分布式.可伸缩的时间序列数据库.它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易 ...

  7. OpenTSDB 造成 Hbase 整点压力过大问题的排查和解决

    业务背景 OpenTSDB 是一款非常适合存储海量时间序列数据的开源软件,使用 HBase 作为存储让它变的非常容易扩展.我们在建设美团性能监控平台的过程中,每天需要处理数以亿计的数据,经过几番探索和 ...

  8. 解密 云HBase时序引擎OpenTSDB 优化技术

    逝者如斯夫,不舍昼夜.                                                        -- 孔子 时间如流水,一去不复返.自古不乏对时间流逝的感慨,而现 ...

  9. TDengine与OpenTSDB对比测试

    TDengine与OpenTSDB对比测试 摘要:为帮助用户了解TDengine的指标,此次测试,从数据库的读.写.查询.压缩比等方面对TDengine和OpenTSDB进行了对比测试.从测试结果上看 ...

最新文章

  1. JZOJ 4161. 于神之怒
  2. 火焰效果材质实现_利用噪音图制作一个纸张燃烧的效果
  3. WPF 读取Docx文件并显示(附下载链接)
  4. C# JsonHelper类
  5. 理解CSS3 Flexbox
  6. QTP自动化测试-点滴-步骤
  7. Alpha阶段事后分析报告
  8. python时间如何处理_python 时间处理
  9. 基于大数据的人工智能象棋
  10. mysql安装显示挂起_安装Sql Server 2000时提示“安装Sql挂起”的解决方案
  11. cad管线交叉怎么画_高效设计!多种方式进行管线连接、伸缩
  12. 程序员应该阅读的一些书籍
  13. 通过微信聊天记录生成词云
  14. 统一网络存储NAS+SAN=FAS
  15. pcf8591c语言编程,学51单片机-基于PCF8591的AD采样和DA输出
  16. vsCode保存后,浏览器不会刷新
  17. STM32F407配置pca9685驱动
  18. php 上标和下标,css如何显示文字的上标和下标
  19. CF 1562 C. Rings (思维+模拟)
  20. 理解字节填充和零比特填充

热门文章

  1. 教小学四年级的计算机,小学四年级微机教学设计
  2. 雨棚板弹性法计算简图_造价工程师:钢结构工程量计算注意事项
  3. centeros 7源码安装mysql_Linux下源码编译安装MySql,centeros7
  4. mysql 逻辑型_17. 逻辑运算符
  5. 传感器为什么在低量程偏差大_传感器复习
  6. Python的集合set
  7. 【NLP】 NLP中应用最广泛的特征抽取模型-LSTM
  8. 【AI白身境】Linux干活三板斧,shell、vim和git
  9. VR来了,3D人脸重建跟上《三维人脸重建-3DMM》
  10. 全球及中国微型风扇行业营销前景及发展趋势建议报告2022-2027年