网络硬盘-疑难杂症告诉你解决方案 网络硬盘-疑难杂症告诉你解决方案

sohu,阿扎尔,village-网络硬盘-疑难杂症告诉你解决方案

百度运维大数据渠道的时序数据存储体系(Time Series Database,TSDB)是智能运维团队于 2014 年自研的一套散布式监控数据存储体系。开展至今,经历过几次大的架构更迭,现在 TSDB 作为百度监控体系的底层存储服务,承载了公司许多中心产品线的监控数据存储和查询需求,日均写入数据点数以万亿计,承载 50K QPS的查询恳求。百度大规划时序数据存储系列文章将介绍 TSDB 在监控场景的运用和体系规划实践,本文将介绍 TSDB 在监控场景下的运用以及体系规划面对的技能应战。


一 监控时序数据

百度的监控时序数据来源于监控体系在全网数十万台服务器上布置的Agent,Agent 收集各类监控方针的监控项,并以不同的频率向 TSDB 上报这些监控项的测量值。经过一张 CPU 闲暇率趋势图可以直观地看到监控时序数据。



图1 CPU 闲暇率趋势图

1监控方针(Object)

监控方针可以分为三类:

  • 机器级:物理机、虚拟机、操作体系等
  • 实例级:容器、进程、日志等
  • 服务级(逻辑方针):服务、服务组、集群等


图2 监控方针

2监控项(Metric)

监控方针的一些需求重视的方针,如机器的 CPU 闲暇率、内存运用率、网卡带宽以及磁盘 I/O等,称为监控项。除了这些通用的机器监控项以外,依据不同的需求还可以自定义监控项,比方数据服务的缓冲对列长度、查询恳求的均匀呼应时刻等。

3标签(Tag)

标签是一对 Key-Value,标识了监控方针在某个维度(Key)的特征(Value),一个监控方针也可以从多个维度来标识,比方布置在多地域、多运营商的服务可以有地域和运营商两个维度,依据不同的维度取值可以生成不同标签,如 (“机房=杭州”, “运营商=电信”) 和 (“机房=北京”, “运营商=联通”)。

4时刻序列(Time Series)

把监控方针的监控项测量值,依照时刻的次序排列起来就构成了时刻序列:

时刻序列 = 监控方针 + 标签列表 + 监控项 + 数据点

其间数据点由时刻戳和取值构成,每个时刻序列对应到趋势图上的一条曲线。

二 监控时序数据的特色

1数据的运用场景

经过 Web 页面、HTTP API 或命令行东西,用户可以方便地从 TSDB 种获取到自己重视的数据:

  • 在日常运维工作中,运维工程师经过 Web 页面人工检查趋势图、同环比报表和热力求等来了解体系的最新或前史状况
  • 一些自动化的服务经过高频、批量地查询时序数据来进行数据剖析,进一步地发掘数据的价值,如反常检测、会聚核算、根因定位等

2数据的读写特色

在时序数据的大多数运用场景中,咱们愈加重视最近一段时刻的数据,而这些数据的发生却是 7 *24 小时不间断的,这就导致时刻序列的读恳求与写恳求特征悬殊且量级悬殊:

  • 随机写:不同的时刻序列依照不同频率各自写入数据点
  • 次序读:指定时刻规划读取一段接连的数据点
  • 写多读少:写入恳求量占比达九成以上

3数据的多维度

前面说到,可以运用标签来从多个维度标识一个监控方针,在获取数据时,也可以经过标签,将监控方针按维度进行挑选聚合。如,关于一个多地域、多运营商布置的服务,获取其在某段时刻内、不同地域相同运营商的总流量:


图3 多维度聚合查询

三 面对的应战

1高负载和高可用

在百度,稀有千万的监控方针,时刻序列的总量近 10 亿。监控项的收集周期一般为 10s,在高时效性要求的场景下要求 5s 的收集周期,这意味着每一秒钟都稀有千万个数据点要写入 TSDB,每天发生的数据点规划到达万亿量级。与此一起,TSDB 每秒钟还要处理数万次查询恳求,因为查询有必定的突发性,峰值的查询流量可到达常态流量的数百倍,且依据事务的需求,绝大多数的恳求都应该能在 500ms 回来成果给用户。

在处理 7 * 24 小时继续高并发写入的一起,还要应对高并发的查询恳求,负载不可谓不重,高吞吐和低推迟是对 TSDB 的基本要求。此外,打铁还需本身硬,作为监控体系本身的根底服务,其可用性有必要有所保证,依据事务需求,咱们拟定的可用性方针至少是 99.99%

2杂乱的数据保存战略

前文说到监控时序数据的运用场景有许多,包含会聚值报警、检查方针的前史趋势图、实时的数据报表(天/周/季/年的同/环比)、趋势反常检测以及前史数据离线剖析等,这些场景别离有着共同的查询特色:

场景时刻规划查询数据量查询频率时效性要求会聚值报警最近数分钟或数小时小高高反常检测多个时刻区间小高高实时报表最近数小时或数天大凹凸前史趋势图自定义时刻规划小低低离线剖析数天、数周或数月大低低

可以看到,每种场景的查询数据量、数据的散布以及对数据时效性的需求不尽相同,TSDB 需求在这些场景下都可以高效地获取数据。

3不断添加的事务规划

百度的产品线数量、事务规划在不断地添加,相应地,监控体系的体量也跟着添加,TSDB 的规划也必然添加,必然会面对容量、本钱和可用性的压力。低本钱地交换体系容量的添加和可用性的提高,是在体系规划时需求考虑的要点之一。

4多样化的数据保存需求

不同的事务对监控数据的保存时长有不同的要求,不同的场景对数据的粒度也有不同的要求,例如,想要知道某服务曩昔一天的总流量比较去年同期的改变,需求数据至少保存一年,但数据的粒度可以是天级;而关于最近一个小时的流量,期望可以支撑更细粒度的监控数据,以便可以发现时间短的流量骤变。

总结

本文首要介绍了监控场景时序数据的特色,以及咱们在规划时序数据存储时面对的应战,关于百度在应对这些应战时的规划实践,敬请期待下期文章。

作者:admin 分类:最近大事件 浏览:312 评论:0