在运维更名为技能运营的两年内,我们对这个团队的事情目标产生了新的理解,事情内容也逐渐从传统的掩护往DevOps方向转化。技能运营,大略地讲便是利用技能手段,降落资源花费,提高根本资源的运行效率,提高全体软件生命周期运行的效率。
这意味着对团队内的每个工程师都提出了更高的哀求:一方面我们要支持目前的系统运行;同时也要针对目前的业务流程去开拓自己的工具,让全体根本资源和能力工具化,把履历和自己对流程的理解变成Web化的工具,供应给程序员利用。
为什么必须自主研发监控系统

目前在TalkingData的Developer除了卖力代码的编写,还要卖力生产系统自己程序的性能指标供应监控接口,以及生产环境程序bug的处理。Developer能够一定程度的获取生产权限,方便常规的掩护和大略故障的处理。这样一来,技能运营的寻衅就来了:权限的管理、性能指标的监控、日志的管理以及资源的隔离,都须要有成熟的工具去支撑。目前市情上有很多开源的软件可以实现这样的功能,但是在不同程度上存在各种各样的问题。
以监控为例,开源的监控很多,Zabbix、Nagios、Cacti,都是不错的监控软件,但是首先它们并不能知足大数据场景下的数据存储;其次,如果监控项和主机数量过多,数据查询时会涌现速率慢等一系列问题。以是技能运营首先选择在监控上做了全新的设计和开拓,新监控命名为OWL(猫头鹰),意思便是在技能职员睡觉的时候供应值班做事。
自研监控系统的三大技能要点
传统的监控很多还是在勾留在设备、网络、系统干系的监控上,重视数据的采集,但是在数据算法和Role上比较传统。对监控系统简化抽象下,传统监控可以大致分为三个过程:数据采集、数据存储、相应处理。OWL监控在传统监控根本上,增加了Algorithm模块,支持繁芜的算法规则报警,如下图所示:
1. 监控数据采集
Data Collection 便是数据采集,这里指的数据不只是根本硬件的指标,也可以是业务指标。下面先容两个实例。
第一个例子是主机硬盘状态的采集:
下面的数据采集中第一列是硬盘设备标号,第二列是硬盘的状态,在监控的这个层面,统统都是metric,不同的层级可以抽象到不同的metric,结合 metric + timestamp + tagk1 + tagv1… + tagkN + tagvN,这样针对相同的metric去加tag,用来标示数据,方便后期的查询。
第二个例子是Nginx 的访问状态的数据采集:
第一列是http要求的状态,第二列是计数器
2. 监控数据存储
监控数据的存储也是一个很故意思的话题,监控数据在数据构造上是很有特色的。仔细不雅观察创造监控数据基本上都是和韶光维度干系的,以metric +timestamp的组合形式的数据占了所有监控数据量的大部分,比较而言,多维度的监控数据比较少;如果涌现了多维度的监控数据,也可以通过其他的办法绕开处理。RDBMS由于要考虑数据的关联,以是它在整体数据存储设计上充分考虑了数据的完全性和关系型,同时在 schema设计上还要遵守数据库的几大范式。传统的监控大多数还是利用了RDBMS,但是这造成了性能上和扩展性上的局限性。针对监控数据这样大略的数据构造,却采取了一套繁芜的存储格式。随着近些年各种各样的垂直的。
技能领域对数据的存储不同哀求的演化,如Graph database,Time Series Databases等数据库得到了不断发展;监控数据在存储上有了更多的选择,InfluxDB,OpenTSDB,KairosDB都是不错的选择,末了我们选择了OpenTSDB,这紧张是由于TalkingData的大数据基因,Hadoop和HBase在我们的业务系统中大规模利用。从现有的数据体量上,OpenTSDB能够知足现在的业务哀求。大略的总结了一下OpenTSDB的优点:
利用HBase存储,不存在单点故障。
利用HBase存储,存储空间险些无限。支持永久存储,可以做容量方案。
易于定制图形
能扩展采集数据点到100亿级。
能扩展metrics数量到K级别(比如CPU的利用情形,可以算作一个metric,即metric便是1个监控项)
支持秒级别的数据。
此外,OpenTSDB支持API查询,可以轻松地和其他系统进行数据对接,也方便其他系统抽取监控干系的数据。 并且,查询办法灵巧:查询数据可以利用query接口,它既可以利用get的query string办法,也可以利用post办法以JSON格式指定查询条件。
3. 监控的报警算法
Algorithm这块是传统监控系统所欠缺的,基本上都是单个指标的大于,小于这样的算法,但是碰着集群或者繁芜的指标,就须要自己去增加一些算法,比如多个指标的加和,均匀值,top10,历史相似度等。这些算法的引入,可以增加报警的准确度,有效的减少报警数量,让报警变得人性化。 关于报警的算法会在本系列的后续文章进行详细先容。
自研监控系统一览
大略的先容一下OWL的整体架构,下面孔前的架构是第四个大版本。在研发的过程中,我们也考试测验了很多的开源技能,如RRDtools、Graphlite,也踩了很多的技能坑,末了我们整体 选择了OpenTSDB,在这个技能栈下面演进了两个版本:
方案特点一:措辞栈统一为Go
2015年的版本,由于技能职员的稀缺,我们采取了一部分Python一部分Golang的系统,在开源推广中带来了很多问题,紧张是支配难度增加。2016年即将发布的版本中,metric collection模块、Controller模块、Inspector模块全部采取Golang开拓,大略摘录一下Golang的优点:
支配大略。Go 编译天生的是一个静态可实行文件,除了 glibc 外没有其他外部依赖。这让支配变得非常方便:目标机器上只须要一个根本系统和必要的管理、监控工具,完备不须要操心运用所需的各种包、库的依赖关系,大大减轻了掩护的包袱。这是与Python 的巨大差异。
并发性好。goroutine 和 channel 使得编写高并发的做事端软件变得相称随意马虎,很多情形下完备不须要考虑锁机制以及由此带来的各种问题。单个 Go 运用也能有效的利用多个 CPU 核,并行实行的性能好。
良好的措辞设计。
实行性能好。虽然不如 C 和 Java,但常日比原生 Python 运用还是高一个数量级的,适宜编写一些瓶颈业务。内存占用也非常节省。
我们也同样意识到这样的问题,以是在OWL V4.0 的版本中,全部统一了措辞栈,降落了大家的利用难度,和后期技能栈的掩护难度。
方案特点二:定制化自己的图表
上面的架构图中,大家不难创造,全体OWL 的设计核心是Custom Report。将全体系统从以工具为核心,转向以数据和用户为核心,OWL的好处是首先利用者会自己定义感兴趣的数据指标;其次在指标上添加rule,用户可以更专注数据;随后可以做一些大略的数据处理,一些数据加和等这样的大略运算;并且定制不同样式的图表,饼图、柱状图、线图。
在全体监控上形成一个立体的构造,不同层面的工程师可以在同一个层面上事情。
有了好的工具支持,才能让工程师DevOps起来。OWL 新版本中也将会支持Docker的支持,这块目前采取的紧张是google 开源的cAdvisor作为数据采集的,通过二次开拓将cAdvisor变成plugin集成进入OWL。
方案特点三:报警模块的划分
关于报警办法,目前没有放置在OWL中。在TalkingData,所有的报警采取Message center的办法,Message center有独立的Web,支持根本的信息查询,信息的发送对外采取 restful API暴露给其他的系统,信息的传送办法上,按照的优先级程度,采取不同的下行办法,高=短信+企业微信+email;中=企业微信+email;低=email,目前正在考虑加入商业化的呼转做事。 详细详情拜会本系列的后续文章:《报警系统的设计与实现》。
总结
OWL 只是TalkingData在DevOps考试测验的个中一个平台。如果从长期的角度去考虑,企业构建自己的运维平台,该当按照云平台的思路去培植,将工程师定义为全体平台的利用者,要简化工程师在根本资源上花费的韶光,降落资源利用的韶光本钱,这样才会在DevOps的路上越走越好。
End
作者:潘松柏
来源:InfoQ
【灯塔大数据】微信公众号先容:中国电信北京研究院通过大数据技能创新,自主研发了业内领先的“灯塔”大数据行业运用创新平台,灯塔面向市场研究、广告营销、商业地理、金融征信、人力资源等诸多行业领域,供应零售研究、消费者研究、店铺选址、精准营销、泛义征信,背景调查等做事,助力企业在大数据时期扬帆远航。
微信"大众年夜众号【灯塔大数据】关键字回答信息:
回答【CDAS】 即可下载全部CDAS峰会PPT
回答【23个情由】 即可下载《大数据让你愉快的23个情由》电子书
回答【天下论坛】可以下载行业运用PPT全文
回答【500强】 下载天下500强名单及中国公司完全榜单
回答【思维导图】可以下载12种工具的获取办法
回答【践行者】 不雅观看电信用软件定义来“去电信化”视频
回答【企业家】下载图书购买链接
回答【云打算家当趋势剖析】 下载剖析报告PPT
回答【高峰论坛】 根据编号下载高峰论坛PPT资料
回答【主论坛】 查看《中国电信灯塔大数据高峰论坛》视频回放
回答【技能论坛】 收看技能分论坛视频回放
回答【程序代码】 下载程序代码
回答【 灯塔 】 查看更多关键字回答下载