一种基于流数据处理的大数据平台监控系统架构方法

一种基于流数据处理的大数据平台监控系统架构方法

一、背景

随着信息技术和互联网的发展,大数据吸引了越来越多的关注。大数据平台是一个集数据整合、数据处理、数据存储和数据分析可视化等功能一体的数据平台,比如对于运营人员,从可视化界面中发现问题(比如注册人数骤降)则会去进一步去追寻根源,同样的,对于大数据平台运维人员,则更希望能够便捷的了解到大数据平台整体情况(比如存储资源,计算资源,网络资源,服务健康状态等)。

对于大数据运维人员,在日常工作中主要关注如下几点:

大数据平台整体运行状况

平台中各服务的组件的健康状态,各服务组件资源使用状况

平台中各主机的健康状态,各主机资源使用状况

针对服务和主机的异常状态,能否及时发现

针对平台的操作(尤其是风险性操作)可进行安全审计

根据运维数据形成各种数据报表,并可将运维数据提供给业务使用

上述六项是否可以一站式处理

针对上述的问题,结合部门的实际项目,本文给出一种基于流数据处理的大数据平台监控系统架构方法,该系统运用流式数据处理技术,将大数据平台各个服务的指标数据、日志数据、主机数据、告警数据进行流式处理并持久化存储,可以实时的对服务和主机的各项数据进行监控和告警,以及支持对历史数据的快速查询,同时系统具有良好的扩展性,支持第三方系统的接入,第三方系统也可以架构于本系统之上,进而实现更多的面向大数据平台的功能丰富的系统。

二、技术方案

本系统的技术方案简单来说可以由以下三点概括, 整体流程草图如下图([/无奈脸]:本图会接下来在本文中出现多次):

将大数据平台底层数据(包括服务指标数据、日志数据、主机数据等)获取后加载到消息队列Kafka中对应的Topic中,其中数据的获取方式包括通过命令获取、通过日志数据提取、通过调用服务接口获取以及第三方程序或系统上报等方式。

对于指标类数据通过流式处理框架Storm对数据进行处理(包括原始数据解析、告警计算)后,将用于实时展示的数据(包括告警数据)存入到MySQL中,将用于历史展示的数据按实时、分钟、小时、天等不同维度进行汇聚后返回到Kafka中后通过Flume存入到ElasticSearch(以下简称ES)中;对于日志类数据直接通过Flume从Kafka存入到ES中;对于第三方系统,若需要数据则可以直接从Kafka中消费使用。

在页面展示中,日志数据和历史类型数据查询展示从ES中查询,实时类型的指标和告警数据展示从MySQL中查询。

三、技术细节

本系统的架构分为四层:数据收集层、接入计算层、存储检索层和数据展示层,下边针对不同层的功能从三个角度进行详细介绍。

1. 数据收集

在数据收集层中,具体包括大数据平台各服务日志数据的抓取上报、服务及主机指标数据的抓取上报、服务及主机可用性数据抓取、配置信息收集和第三方相关数据接入。其中:

大数据平台各服务的日志数据由各服务(如HDFS,HBase等)按照设计的标准格式进行收集,然后汇总上报到Kafka中的日志Topic中

服务及主机的指标数据通过命令获取、日志数据提取、调用服务接口三种方式获取后上报到Kafka中对应的原始数据Topic中

服务及主机可用性数据(可用性包括良好、离线、故障、维护等状态)通过脚本抓取后直接入MySQL的主机表和服务组件表

配置信息通过人工收集后直接入MySQL的配置表中,并在系统页面上提供对配置信息的增删改查

第三方相关数据由第三方系统提供,通过HTTP加载方式上报到Kafka中对应的Topic中

2. 接入计算和存储检索

在接入计算层和存储检索层中,主要针对Kafka中的日志和指标数据进行计算、汇聚和持久化,主要关键点如下:

对于Kafka中日志Topic的数据直接由Flume消费出数据后持久化到ES中对应的日志Index

对于Kafka中的原始指标Topic的数据,由Storm消费出数据后进行数据解析与格式标准化之后返回到实时指标的Topic

对于Kafka中的实时指标Topic中的指标数据,由Storm的告警计算任务消费后与MySQL中的配置信息结合计算出告警信息并持久化到MySQL的指标表中,同时给责任人发送告警邮件或短信

对于Kafka中的实时指标Topic中的主机数据,由Storm的主机指标计算任务消费后经过计算更新到MySQL的的主机表中

对于Kafka中的实时指标Topic中的服务数据,由Storm的服务指标计算任务消费后经过计算存储到MySQL的指标表中;同时对于Kafka中的实时指标Topic中的数据按照分钟级、小时级、天级依次进行汇聚后返回到Kafka中对应的分钟级Topic、小时级Topic、天级Topic中,最后将各个Topic的中的数据由Flume消费出后存储到ES中对应的Index中,供上层数据展示检索查询使用

3. 数据展示

在数据展示层中包括日志类型的数据展示、历史类型的数据展示和实时类型的数据(包括主机数据,服务数据以及告警数据等)展示,对于各类数据具体做如下展示:

对于日志类型的数据展示,直接根据日志类型和时间区间从ES中检索查询,并且支持根据日志中的字段类型和字段值进行筛选查询

对于历史类型的数据展示,可根据时间区间来查询不同粒度的历史数据,比如当查询时间大于一个月则返回天级的历史数据,大于一周则返回小时级的历史数据,大于一天则返回分钟级的历史数据

对于实时类型的数据展示,则从主机维度、服务维度和业务维度进行展示并支持筛选查询等,比如某主机上部署了哪些服务和服务状态、指标和告警信息的展示,某服务的各组件部署在了哪些主机上和主机状态、指标和告警信息的展示,某业务用到了哪些服务和哪些主机以及其指标和告警信息

四、优势

按照本文介绍的架构方法实现的大数据平台监控系统具有如下优势:

系统具有高可靠性高实时性,且不会对底层服务造成影响。本系统底层数据的收集和上层页面展示是独立的两个部分,底层数据不断收集、处理、存储以供上层页面展示使用,上层页面展示直接从存储的MySQL和ES中获取数据,当大量用户访问时不会对底层服务造成影响

系统支持对大数据平台历史数据的查询。本监控系统在传统的监控系统架构下中间加了一层数据存储层,所以使得本系统可以支持对大数据平台历史数据的查询,同时支持根据时间区间来动态的展示分钟级、小时级、天级等不同粒度的历史数据

系统支持实时告警。本监控系统在底层数据收集上来后,在对原始数据解析后增加了告警计算后将告警信息持久化并实时的向预留的责任人联系方式发送短信或者邮件

系统除支持大数据平台各个服务的监控,还支持各个服务所在主机的指标(CPU,内存,硬盘等)监控和服务日志查询及分析

系统具有良好的独立性和开放性。本系统并不依赖于特定的大数据平台,可以灵活接入不同的大数据平台并且支持第三方系统直接从消息队列中消费数据做进一步的二次系统开发

五、实际系统部分功能展示

在实际应用中我们已经实现了上述介绍的监控系统,在正在监控的大数据平台中,共针对14个服务形成了200多项监控指标,而且随着平台的使用力度逐渐增大,将会有更多的监控项被形成,同时所有的监控指标都可以直接供第三方系统使用。下面就系统中部分功能进行展示:

1.Hive服务的实时主机、资源、告警信息

上图包含的信息为正在监控的目标大数据平台中,在2台主机上部署了Hive服务,Hive服务当前有1个重大告警,存储资源已使用了将近90%,表明集群需要尽快扩容。

2.平台在过去一周的数据存储量变化曲线

上图包含的信息为正在监控的目标大数据平台最近一周数据存储量变化曲线,从图中可以看出来数据的增长趋势以及在哪个时间点做了删除数据操作。

3.平台中某服务的实时告警信息

4.平台中部分主机的实时物理指标

5.平台中某服务的操作日志记录

------------

全篇完

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171215G0D8J500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券