OpenTSDB监控系统的研究和介绍

标签: 其他 hbase 一淘 监控 运维 | 发表时间:2012-07-06 12:30 | 作者:韩堂
出处:http://www.searchtb.com

一、背景介绍

此次航天局为了让天宫一号与神舟九号载人交会顺利对接成功,采用了新一代数值天气预报系统为神九保驾护航。新一代数值天气预报系统是中国国内技术最先进、分辨率最高、预报时效最长的数值天气预报系统。新系统在火箭燃料加注、飞船发射和返回、载人交会对接等关键节点发挥重要作用。 同样,作为后台系统或网站的运维,我们同样需要类似的监控或预报系统快速发现各种不稳定现象和解决性能问题以达到SLA(服务等级协议)的标准。

你有没有厌倦那个拥有10年以上寿命的监控系统?它常常会出现这样的问题:1)中心化数据存储进而导致单点故障。2)有限的存储空间。3)数据会因为时间问题而变得不准确。4)不易于定制图形。5)不能扩展采集数据点到100亿级别。6)不能扩展metrics到K级别。7)不支持秒级别的数据。

这里介绍一淘使用的一个开源监控系统OpenTSDB,它可以解决上面的问题,它用hbase存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。

对于运维工程师而言,OpenTSDB可以获取基础设施和服务的实时状态信息,展示集群的各种软硬件错误,性能变化以及性能瓶颈。对于管理者而言,OpenTSDB可以衡量系统的SLA,理解复杂系统间的相互作用,展示资源消耗情况。集群的整体作业情况,可以用以辅助预算和集群资源协调。对于开发者而言,OpenTSDB可以展示集群的主要性能瓶颈,经常出现的错误,从而可以着力重点解决重要问题。

二、架构Overview

openTSDB(见图1) 【1】使用hbase作为存储中心,它无须采样,可以完整的收集和存储上亿的数据点,支持秒级别的数据监控,得益于hbase的分布式列式存储,hbase可以灵活的支持metrics的增加,可以支持上万机器和上亿数据点的采集。在openTSDB中,TSD是hbase对外通信的daemon程序,没有master/slave之分,也没有共享状态,因此利用这点和hbase集群的特点就可以消除单点。用户可以通过telnet或者http协议直接访问TSD接口,也可以通过rpc访问TSD。每一个需要获取metrics的Servers都需要设置一个Collector用来收集时间序列数据。这个Collector就是你收集数据的脚本。

图1、openTSDB的数据流图

如果想快速地展示mysql中在一段时间内执行delete子句的数量,慢查询的数量,创建的临时文件数量以及99%的延迟数量等等。OpenTSDB则可以非常容易存储和处理百万级别以上的数据点,并能实时动态的生成对应的图,如图2 【1】

图2、OpenTSDB用例图

三、在hbase中存储时间序列

OpenTSDB使用async hbase 【2】,这是个完全异步、非阻塞、线程安全、HBase api,使用更少的线程、锁以及内存可以提供更高的吞吐量,特别对于大量的写操作。图3为读写流程 【1】

图3、读写路径

在hbase中,表结构的设计对性能具有很大的影响,其中tsdb-uid表和tsdb表见表一和表二 【1】

表1、tsdb-uid

表2、tsdb

四、一淘的实例

在我们的搜索引擎中,随着业务的发展和扩张,使得流量快速增长以及业务逻辑变得越来越复杂。进而使得引擎随时都会出现各种瓶颈,因此提前知道引擎的变化状态显得尤为重要,如全量和增量的增长趋势图,见图4。

图4、OpenTSDB用例图

在OpenTSDB,一个数据点可以表示为:1)一个指标名称。2)UNIX时间戳。3)一个值(64位整数或双精度浮点值)。4)标识这个数据点的一组标记tags(键-值对)。

下面四个数据点来源于图4,都是采集的metrics为index.full_count,代表引擎索引doc数;标记tags为来自哪个domain(代表机房),area和app代表应用,cluster代表索引表,partition代表列。Metrics和tags加起来就是一个时间序列。图3为一系列下面的数据点绘画而成(数据经过了处理,不代表真实数据)。

index.full_count 1341069600 156866750 domain=domain_E area=1 app=jqb cluster=epid partition=partition_16384_32767

index.full_count 1341069600 155819640 domain=domain_E area=1 app=jqb cluster=epid partition=partition_32768_49151

index.full_size 1341069000 18561 domain=domain_D area=1 app=jqb cluster=b2c partition=partition_0_16383

index.full_size 1341069000 18554 domain=domain_D area=1 app=jqb cluster=b2c partition=partition_16384_32767

index.full_count 1341069200 11421051 domain=domain_G area=1 app=jqb cluster=b2c partition=partition_16384_32767

那如何收集这些数据呢,Etao在tcollector 【3】开源收集器的基础上,做第二次开发,见图5。tcollector可以完成:1)可以任意添加你的收集脚本程序,并收集所有数据。2)完成发送数据到TSD的所有连接管理。3)初始化一些状态,执行一些公共的部分,比如定时管理执行1min文件夹下面的脚本。4)删除重复的数据。5)支持很多种数据交换协议,提供良好的扩展性。

图5、etao-tcollector

将etao-tcollector部署在所有机器上(可采用集中运维脚本进行远程部署,并可通过该系统远程控制收集器的启停)。etao-tcollector会将带时间和metrics的时间序列数据发送到tsd,之后的处理见第三节的图3,最后我们在Opentsdb提供的web UI上通过指定查询条件进行查询获取相应的图形用来对应用进行监控。

该etao-tcollector在一淘引擎中用来收集索引相关信息,引擎服务状态如延迟,日志等。

六、小结

openTSDB采用hbase作为时序数据的存储中心,具有高扩展性,metrics添加相当灵活,且对数据可以无损的存储。可以很灵活的支持数据分析,图形显示以及一系列定制化操作,非常方便运维人员做运维监控。

参考文献:

[1] http://opentsdb.net/overview.html

[2] https://github.com/stumbleupon/asynchbase

[3] https://github.com/stumbleupon/tcollector

相关 [opentsdb 监控 系统] 推荐:

OpenTSDB监控系统的研究和介绍

- - 搜索技术博客-淘宝
此次航天局为了让天宫一号与神舟九号载人交会顺利对接成功,采用了新一代数值天气预报系统为神九保驾护航. 新一代数值天气预报系统是中国国内技术最先进、分辨率最高、预报时效最长的数值天气预报系统. 新系统在火箭燃料加注、飞船发射和返回、载人交会对接等关键节点发挥重要作用. 同样,作为后台系统或网站的运维,我们同样需要类似的监控或预报系统快速发现各种不稳定现象和解决性能问题以达到SLA(服务等级协议)的标准.

OpenTSDB 详解

- - 运维生存时间
OpenTSDB用HBase存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库. 它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里. OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化、图形化等.

OpenTSDB设计解读

- - CSDN博客云计算推荐文章
OpenTSDB是基于HBase存储时间序列数据的一个开源数据库,确切地说,它只是一个HBase的应用而已,其对于时间序列数据的处理可以供其他系统参考和借鉴. 本文会针对它在数据库的设计方面展开一些探索和讨论. 本文原文链接: http://blog.csdn.net/bluishglc/article/details/31052749,转载请注明出处.

OpenTSDB的设计之道(转)

- - 数据库 - ITeye博客
原文地址:http://san-yun.iteye.com/blog/1993519. OpenTSDB是一个架构在Hbase系统之上的实时监控信息收集和展示平台. 它在海量数据的压力下,仍然保证了存储的效率,那么它背后有什么值得借鉴的地方呢. 1)使用AsyncHbase而非HBase自带的HTable.

Linux系统监控

- - CSDN博客系统运维推荐文章
查看所有的进程和端口使用情况:. 查看nginx并发(连接数)进程数:. 查看当网络连接状态中,已建立连接的数量:. 查看系统tcp连接中各个状态的连接数. 输出每个ip的连接数,以及总的各个状态的连接数. df -hl 查看磁盘使用情况 . df -hl 查看磁盘剩余空间. df -h 查看每个根路径的分区大小.

开源监控系统 Shinken

- Le - 开源中国社区最新软件
Shinken是一款类似于Nagios的开源监控工具,由scratch重新设计和重写. 它的主要目的是迎合当前系统监控的需要同时具备Nagios一样的能力.

常用的linux系统监控命令

- Mountain - agapple
记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了. 找到最耗CPU的java线程. 命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid. 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列.

ZoneMinder 1.25 发布,视频监控系统

- 迎客松 - LinuxEden开源社区-Linux伊甸园
ZoneMinder的作者是因為家中的車庫被竊,因而產生設計監控保全的念頭. ZoneMinder使用了Linux Server,PHP,MySQL加上幾支攝影機,就可以使用web介面監控重要場所. 當異常事件發生時,你就可以收到e-mail或簡訊通知. 阅读全文 | 邮件推荐 | 评论回复.

搭建完美的监控系统

- - DCCMX
对于任何一个互联网公司来说,监控系统都是不可或缺的. 监控系统的完善程度,直接影响到系统的稳定程度,性能等各个方面. 关于监控系统的搭建,网上已经有了很多方案,在规划公司的监控体系的时候,我也参考了很多解决方案. 比较常见的有:nagios,cacti,icinga,zabbix,ganglia,还有收费的监控服务有如newrelic等.

前端性能监控系统ShowSlow

- - CSDN博客Web前端推荐文章
作者:zhanhailiang 日期:2014-11-14. ShowSlow是开源的前端性能监控系统,提供了以下功能:. 前端性能指标数据收集功能:ShowSlow原生提供了数据收集工具. DOM Monster!,但也支持通过YSlow,PageSpeed等第三方工具将性能数据上报给服务端完成收集(其服务器端提供了针对多达8种不同工具上报的数据收集器dommonster,dynatrace,events,har,metric,pagespeed,webpagetest,yslow);.