阿里云TSDB在大数据集群监控中的方案与实战

目前,大多数互联网企业基本上都有自己的大数据集群。为了更好地使我们的大数据集群更加高效和安全,一个优秀的监控方案是必不可少的;所以今天的文章是关于阿里云的TSDB希望在上海某大型互联网企业大数据集群监控方案中为感兴趣的学生提供一些帮助。

背景和需求

阿里云时间序列时空数据库 (列数据库,简称 TSDB) 是一种高性能、低成本、稳定可靠的在线时间数据库服务;广泛应用于物联网(IoT)设备监控系统 ,企业能源管理系统(EMS),安全监控系统、电力检测系统等行业场景的生产。TSDB 提供数百万级时序数据秒写入、高压缩比低成本存储、预降采样、插值、多维聚合计算、查询结果可视化功能;解决存储成本高、写入、查询分析效率低的问题。

Elastic MapReduce(EMR)是阿里云提供的大数据处理系统解决方案。EMR基于开源生态,包括 Hadoop、Spark、Kafka、Flink、Storm一站式企业大数据平台为企业提供集群、运营、数据管理等服务。

上海的一家大型互联网公司是阿里云EMR的Top顾客在阿里云上购买EMR近千个例子hadoop目前,除了阿里云本身,这些机器ECS除了水平监控,没有成熟的大数据监控、运维和报警系统,这对大数据业务有很大的风险。现在客户的需求是购买的EMR集群进行监控和报警。单台有20多个监控指标,收集精度可根据客户需求进行调整。此外,它还需要对原始业务没有侵入,业务层不需要做太多的配置和重启操作。

痛点和挑战

大型互联网企业客户最初计划采用Prometheus基于监控和报警解决方案Prometheus监控方案也应用于企业内的其他系统。

这里提到了Prometheus,多说几句话。以行业为基础。Kubernetes微服务盛行,生态兼容的开源监控系统Prometheus也逐渐被大家热捧。

Prometheus它的前身是开源监控系统SoundCloud2016年,监016年的监控系统Kurberntes之后,加入Cloud Native Computing Foundation。目前,许多公司和组织已经开始使用它们Prometheus,该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与该项目。

下图就是prometheus方案架构:

在实际部署过程中发现了该方案Prometheus性能问题主要存在于存储和查询中Prometheus本身采用的local storage大数据量下方案的扩展性写入查询性能存在瓶颈。

此外,该方案的适应性不强,需要重启大量参数,这对在线业务是不可接受的,需要重新设计解决方案。

阿里云TSDB解决方案

总的来说,监控和报警包括三个环节:

1.采集指标

2.存储指标

3.查询告警

因此,基本方案可以简化为:收集工具 数据库 查询报警。其中,数据库可以通过阿里云TSDB通过成熟的开源工具,可以解决存储和查询中的性能问题。Grafana。由于互联网企业客户的要求对原有业务没有侵入,业务层不需要做太多的配置重启操作,解决方案的研究重点是收集工具的研究。

对于采集工具,结合互联网企业客户部署的Prometheus,且阿里云TSDB与开源时序数据库兼容OpenTSDB的写入和查询协议,因此从减少成本和工作量的角度来看,可以考虑的方式是有两种:

1. 使用Prometheus官方开源OpenTSDB Adapter 对接原生Prometheus ,实现数据写入TSDB。基本结构如下:

该方案与互联网企业客户开发学生沟通后,发现无法满足无侵入、无重启业务的需要,选择放弃;

2. 采用其他开源工具将数据收集写入TSDB。开源社区较为活跃,已经提供了不少开源的采集工具,因此我门评估了以下几个开源的采集工具:

Collectd,https://collectd.orgtelegraf,https://github.com/influxdata/telegrafstatsd,https://github.com/etsy/statsdtcollector,http://opentsdb.net/docs/build/html/user_guide/utilities/tcollector.html

从语言开发、部署和是否支持定制开发的角度来看,我们初步选择tcollector作为收集工具。tcollector客户端程序用于收集本机数据,并将数据发送到OpenTSDB。tcollector为您做以下几件事:

运行所有收集者并收集数据;完成所有发送数据到TSDB连接管理任务;不需要将这些代码嵌入到您写的每个收集器中;是否删除重复数据;处理所有有线协议,未来改进;

因此,基于tcollector TSDB Grafana监控报警架构如下,其中tcollector以http协议从目标结点提取监控指标http的OpenTSDB协议将指标推向阿里云TSDB。

未修改此方案tcollector源码的基础上,能够满足客户对hadoop监控PoC之后客户增加了对EMR实例中其他大数据组件的监控需求,如Hive,Spark,Zookeeper,HBase,Presto,Flink,azkaban,kafka,storm等。

经过我们的调查,tcollector对这些组件的支持如下:

原生支持:hbase;需要定制开发,不重启实例:Hive,Spark,Zookeeper;需要定制开发,需要重启实例:Flink,azkaban,kafka,storm;

基于一定工作量的制化开发tcollector该方案基本上可以满足用户的需求。最后,我们在互联网公司的客户EMR大数据集群的监控报警方案架构如下:

tcollector很容易部署,可以简单高效地满足客户的需求。此外,在配置部署时,无需区分大数据组件的需要手动配置和启动不同角色的相应插件的问题,而无需区分大数据组件的角色。

至此,TSDB互联网企业客户大数据集群监控访问的完美解决方案TSDB的案例,让TSDB进一步走向改善生态。此外,值得一提的是,为了解决目前广泛使用的问题Prometheus在大量时序数据的存储、写入和查询中,阿里云TSDB已经开始兼容了Prometheus生态,已经在多个客户场景中进行了实战。稍后,我们将推出Prometheus系列文章,对Prometheus感兴趣或已经是了Prometheus但是遇到性能问题的学生可以继续关注我们。

阿里云时空数据库TSDB 1元购买!立即体验:https://promotion.aliyun.com/ntms/act/tsdbtry.html?spm=5176.149792.775960.1.dd9e34e2zgsuEM&wh_ttid=pc

作者:焦先

原文链接

更多技术干货请关注云栖社区知乎机构号:阿里云栖社区 - 知乎

本文为云栖社区原创内容,未经许可不得转载。

扫码免费用

源码支持二开

申请免费使用

在线咨询