网络优化大数据平台监控技术研究

2018-04-19 06:15陈涛陈彦名王康张冬晨
电信工程技术与标准化 2018年4期
关键词:开源集群组件

陈涛,陈彦名,王康,张冬晨

(中国移动通信集团设计院有限公司,北京 100080)

1 网优大数据平台的系统功能与监控需求

随着大数据存储技术和处理技术的发展,日常的网优工作已经可以通过建立覆盖全网的集中化的网优平台来支撑。如图1所示,网优大数据平台使用FTP/SFTP协议每隔15 min从省端OMC服务器采集解析PM、NRM、MR数据文件,并将基础Counter数据存入HBase数据库中。上层网优应用,如专项保障分析和干扰分析、网络结构分析等通过对基础网络指标进行分析,给出优化建议,并将网络关键指标在前台进行展示。

为保证网优大数据平台的全网汇总数据可靠性达到日常的无线网优生产要求,各省原始网优数据采集率需要在95%以上,系统在一个月内指定连续7天的生产汇总周期内不能有数据缺失问题。此外,尽管系统使用的开源分布式数据存储和并行计算组件都有内部的冗余容错机制,但是仍然需要有监控手段及时发现大数据开源组件的停机故障,并快速排查处置。通过总结平台运维经验,汇总了网优大数据平台多层次的监控需求如表1所示。

图1 网优大数据平台的系统监控需求

因为需要维护的设备众多(省端OMC服务器有几千台),且实际生产中要求短时间内发现排除平台故障,很难通过人工手段完成,需要搭建网优平台监控系统完成上述生产目标。目前业界对大数据分析平台的监控技术研究不多[1,2],本文介绍了一个扩展性较强、可配置的网优大数据平台监控系统,设计思路和监控手段可供相关研究人员参考。

表1 网优大数据平台监控需求

2 现有大数据平台监控技术综述

2.1 主要开源监控软件的介绍

利用开源监控软件,可以快速搭建监控系统,能满足大数据分析平台运维初期的监控需求,如下介绍了常用的开源监控软件。

2.1.1 Ganglia软件

Ganglia[3]是一个分布式监控系统,没有单点故障,主要由Gmond、Gmetad、Gweb 3部分组成。Gmond用于搜集监控指标,如主机的CPU、内存等数据。搜集的数据将以多播的形式在集群内部进行广播,每台机器Gmond组件都会监听并存储集群相关主机的状态。Gmetad负责轮询Gmond节点,并将监测数据存入RRDtool数据库中。Gweb负责监测数据的显示。Ganglia通过插件方法可实现对Hadoop、HBase、Redis、Kafka、Spark等开源组件的监控。

2.1.2 Nagios/Centreon软件

Nagios是一个监视系统运行状态(如主机CPU、内存等)和网络信息的开源系统。如果监控指标触发报警,能通过E-Mail、短信等多种方式通知管理人员。

Centreon开源监控软件擅长监控数据的展示。底层通常采用Nagios作为监控软件,Nagios通过Ndoutil模块将监控到的数据定时写入数据库中,而Centreon实时从数据库读取该数据并通过Web界面展现监控数据。

2.1.3 KafkaOffsetMonitor软件

KafkaOffsetMonitor可以对Kafka消息组件进行监控,能检测到Kafka集群是否有消息积压,可视化的监测系统消息消费情况。程序以一个jar分组的形式运行,部署较为方便。

2.1.4 Taokeeper软件

Taokeeper是Alibaba出品的一个对Zookeeper集群开源监控软件。能对集群所在主机的负载、单机连接数等指标进行监控。允许进行二次开发,自主增加监控项目。

2.1.5 Chukwa软件

Chukwa软件主要用于监控Hadoop集群的运行情况。本身也提供了很多内置的功能,可以对Hadoop集群的日志进行收集和分析。

2.1.6 Cloudera Manager软件

如果使用Cloudera公司的CDH套件进行大数据组件的安装。就可以使用Cloudera Manager的管理界面对HDFS, HBase等组件进行监控。Cloudera Manager提供了丰富的系统监视诊断和报告功能。Cloudera Manager免费版本在集群管理规模上有所限制,且不提供API支持二次开发。

2.2 自主开发大数据平台监控软件与采用开源监控软件的优缺点

通常平台运维人员会在平台系统运行初期利用Ganglia完成监控数据的采集工作,利用Nagios完成阈值检查和报警的功能,利用Centreon完成Nagios系统的管理和数据展示功能。对特定组件的监控,如Kafka、Redis等采用方便部署的KafkaOffsetMonitor、Codis等开源监控软件。这种方法可以快速拥有对系统的监控能力。但是随着大数据分析平台功能的扩展,整合多个监控系统并进行二次开发的工作难度会越来越大。且开源软件的监控粒度较粗,只能监控较为通用的系统指标,如CPU/内存/硬盘的使用率等,不能满足定制化的监控需求。

自主开发监控软件可以采用统一的监控框架、接口数据标准和监控界面风格,容易结合网优应用开发特定的监控功能,易于扩展、部署与维护。因此,类似小米、阿里等互联网公司都会自主设计开发业务平台监控系统。自主开发监控系统也是网优大数据平台长期运营的必要手段。

3 网优大数据平台监控系统设计与关键技术方案

3.1 监控系统基础架构

结合网优大数据平台的运维需求,我们的监控系统从功能上分为3层。如图2显示了网优大数据平台监控系统的软件结构。

(1)监控数据采集层:通过周期性的主动测量或调用JMX性能查询接口等方式获取被监测对象的状态信息,通过统一的Http接口上报数据到监控服务器。

(2)监控数据处理层:主要完成原始监控数据的解析入库;每小时,每天对原始的监控数据进行汇总,存入汇总监控数据表,删除冗余数据以节省资源;对监控数据进行异常状态检测,如果发现停机、负荷过重等异常情况,则触发报警功能。

(3)展示层:可以接受监控对象配置和用户权限配置操作;可以向管理员展示平台负荷情况,实时显示系统数据吞吐量等。

监控系统先读取配置文件,按照配置加载需要执行的监控功能模块。能根据需要自动检测集群主机的CPU/内存/硬盘的负荷,自动检查Zookeeper集群、HBase集群、Redis等平台组件工作是否正常。也能自动检测OMC FTP服务器的联通性和用户名、密码的更改导致的故障,能检查原始数据文件是否有效,能及时告警。

系统采用了客户端(负责被监测主机基础数据的采集)和服务器端(负责数据入库、报警功能、配置与展示)分离的设计,可以通过配置文件定制监控项目并调整检测时间周期等参数。系统也根据网优平台常见故障优化了监控项目,如Hadoop根目录过满报警、采集服务器无目标文件报警等,能更有效的保障网优大数据平台的运行。

3.2 数据采集、上报与存储的技术特点

我们的系统采用SSM框架实现系统监控功能,可以同时部署在Windows平台和Unix平台上。系统关键技术介绍如下。

图2 网优大数据平台监控系统总体结构图

3.2.1 利用Sigar组件采集宿主机负荷数据

Sigar组件是一个跨平台的主机状态信息测量工具,集成在监控系统的客户端并部署在宿主机上,周期性的采集所在机器的CPU/内存/硬盘的负载情况,然后将测量数据封装为JSON格式后,利用统一的Http Restful接口投递到后台服务器上。

3.2.2 Zookeeper和JMX接口的应用

在利用Ganglia插件对Hadoop/HBase等组件进行监控时,所获取的监控信息往往比较粗糙,不能满足细粒度的监控需求。我们的监控系统直接访问大数据组件的JMX接口获取组件的详细运行信息,如宿主虚拟机的内存状态、内存池状态、Java堆信息等。此外,我们也通过查询Zookeeper的存储信息,获取所管理集群各节点的存活信息、读写次数等。这两种方法采集的集群工作数据较为及时、详细,逐渐成为大数据平台监控系统的主流技术。

3.2.3 监控对象无关的监控数据存储设计

由于监控对象众多,每个监控对象的监控指标各不相同,如果每个监控对象采用不同的数据表存储,势必会增加监控软件开发和维护的负担。数据库表会快速膨胀。在我们的监控系统中,为每个监控对象分配一个唯一的Objectid,将该对象的上报数据封装成Json字符串直接存储在监控数据表的Content字段中。后继的数据处理和报警模块根据Objectid指示解析对应的监控数据对象,从而利用少量的基础监控数据表和一个报警表格就可以支撑所有监控和报警任务,且方便新增报警对象。表2、3是主要的数据库表设计。

3.2.4 省端OMC FTP采集服务器的监控

为保证各省的数据采集率在95%以上,中国移动开发的采集系统需要不断对各省的OMC FTP服务器进行状态监控,避免由于配置错误或原始文件缺失导致数据采集问题。我们的监控系统周期性模拟采集程序做OMC FTP服务器的登录测试,原始文件的抓取测试。能检测出网络中断、登录用户名、密码错误、FTP协议传输模式错误,原始数据文件目录错误或文件缺失等常见问题。通过统计各省各地区数据采集率和采集小区的信息,可以准确的追踪到有问题的采集服务器,并快速通知省端排查。

表2 监控数据表

表3 报警信息数据表

3.3 数据质量保证的技术方案

3.3.1 HBase Mapreduce/Spark在采集率统计上应用

网优大数据平台需要每天统计各省性能、MR等数据的采集率,且各省采集率在95%以上才能利用网络统计指标指导全网的优化工作。由于原始数据在4亿条左右,利用单机多线程统计方法不能及时完成采集率的统计,我们采用了HBase Mapreduce[4]的计算框架,可以在2h左右完成统计任务。也可以使用Spark在1h完成统计任务,但是高峰时会耗用大量Hadoop集群读写I/O,影响正常的网优数据入库。相比Spark、Mapreduce计算耗用的资源更少,当然计算时间更长。

3.3.2 中间表监测与自动报表的生成

在正常的生产中,除了原始数据外,汇总数据是否正常也是需要监控的项目,我们的软件会自动对每天汇总的数据项目,条数进行检查,能发现缺失的省市指标。系统会自动生成数据质量的报表,包括集群运行情况、各省市采集情况,可以使网优业务人员及时了解数据质量和分析导致数据缺失的原因,通常可能是省公司未报送或数据解析、入库等问题造成。

4 应用实践

4.1 前端展示效果

本文监控系统在生产环境部署后,在过去1年里,系统可以检测到HBase、主机、网络的最新状态,并可以查看系统历史运行情况,对异常及时告警,有效地提高了运维人员的工作效率。部分操作界面如图3-5所示。

4.2 常见报警的处置

4.2.1 大数据计算组件宕机

HBase/HDFS,Redis等大数据组件都有可能由于突发业务量高峰,导致I/O超过门限而宕机。通过监控系统可以及时发现宕机,并操作重启。通过监控历史数据,可以得知宕机的时间,评估积压网优数据对网优业务的影响。在经常宕机的时间,应该采用错开计算作业等措施减轻峰值计算负荷。

4.2.2 存储空间用尽

存储空间耗尽会导致系统宕机,并触发警告,需要管理员利用du,fd等命令及时查找导致系统存储资源耗尽的原因,通常是计算作业输出了大量的log日志或计算结果文件未及时清除所致,应该建立自动脚本予以删除。

4.2.3 采集数据缺失

图3 Hbase监控系统页面

图4 集群主机CPU负荷情况

图5 Hbase读写访问次数统计

各省的数据采集率不能达到95%的要求,多是OMC FTP服务器配置用户名、密码、文件目录的信息发生变更或省端没有及时上传工参和性能,MR数据分组所导致,监控系统能模拟人工检查配置信息,并给出详细的测试失败原因。

5 结束语

自主开发网优大数据平台监控系统是长期运营维护网优平台的重要保障,本文介绍的网优大数据平台监控软件由于采用统一的采集接口、简单的数据库表设计、JMX虚拟机状态查询解析技术,与直接采用开源监控软件相比,监控粒度更为细致,系统易于扩展,部署,在平台正常生产运营中发挥了重要作用。

[1] 吴明礼, 杨小燕, 李也白. 多数据库系统环境数据库监控与管理技术研究[J]. 工业技术创新, 2015,02:239-244.

[2] 王雷, 钱招明, 郭进伟, 等. OceanBase数据库监控系统[J]. 计算机应用, 2016,S1:237-239.

[3] 梅西. Ganglia系统监控[M]. 北京:机械工业出版社,2013,09.

[4] Lars George, HBase权威指南[M]. 北京:人民邮电出版社,2013,10.

猜你喜欢
开源集群组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
海上小型无人机集群的反制装备需求与应对之策研究
五毛钱能买多少头牛
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0