时间:2022-07-05 10:23:18
【摘要】针对私有云监控的技术难题,给出威邦通过分布式架构、混合数据库的数据存储模式、系统状态图分片缓存组装三个关键技术解决难题的一种方案。
【关键词】私有云监控 分布式架构 混合数据库 分片缓存组装 威邦
1 引言
云监控的主要技术发展自分布式网络监控系统。然而由于云自身的特点,传统的分布式网络监控技术不能完全满足私有云监控的要求,主要面临问题如下:
(1)被监控节点规模庞大
私有云特别是桌面云系统,不仅要监控物理节点,还要监控虚拟节点和接入终端。被监控节点规模相比传统分布式系统扩大10倍以上。
传统分布式监控系统主要采用单点轮询机制,即一个采集器逐个访问所有被监控节点采集节点数据。这种单点轮询机制有监控节点数的上限。
(2)网络环境复杂
私有云根据应用场景可划分为多个相互限制访问的网段或子网,各自有独立的安全策略。
监控使用的SNMP(Simple Network Management Protocol,简单网络管理协议)都是基于IP访问的。传统分布式监控系统难以访问整个云网络的所有节点。
(3)大数据量产生数据存储瓶颈
被监控节点数量增加导致单位时间内采集到的节点数据线性增加。传统监控系统通常采用环状数据库(Round Robin Database)存储系统历史数据,环状数据库的读写是基于文件读写的。而监控数据存储的特点是每笔数据量不大但操作频繁,且与节点数成正比。监控节点的增加会导致数据存储成为整体性能的瓶颈。
(4)如何快速地绘制系统整体运行状况
由于传统分布式监控系统在用户请求系统整体状态时实时计算的策略难以满足节点规模庞大、多采集端的云监控系统,因此传统的方法会造成很长的用户等待时间,用户体验差。
下面将具体阐述威邦云监控在解决上述问题时采用的技术。
2 分布式的系统架构
威邦云监控将整个监控系统拆分为管理端(Manager)、采集端(Collector)、数据存储端(H-DB)和管理数据库(M-DB)等多个子系统,按照系统规模和网络情况部署到不同的服务器上,实现云监控的分布式架构,如图1所示:
管理端(Manager):云监控系统有唯一一个管理端,负责管理系统节点信息、节点采集数据种类、采集数据报警阈值、生成各节点历史数据图表、生成系统整体运行状态、用户权限管理等功能。管理端通过Web的方式向用户提供可视化的管理界面和图表展示界面,通过Web Service向云控制台提供控制和数据访问接口。
管理数据库(M-DB):云监控系统有唯一一个管理数据库,管理数据库保存除节点历史数据之外的系统数据。
采集端(Collector):云监控系统根据监控节点数据和网络情况部署一个或多个采集端,负责根据控制端的设置采集各监控节点系统状态数据,发送给数据存储端(H-DB)保存。
数据存储端(H-DB):由关系型数据库(如MySQL)、数据操作模块(HDB-Agent)、环状数据库三个部件构成,负责被监控节点数据的存取。
将单个采集端分为多个,有以下两大优点:
(1)适应更复杂的网络状态。每个互不能访问的网段、子网都可以单独部署一个或多个采集端。只要保证部署的采集端能被管理端访问,就能完成数据采集任务。
(2)可以满足节点数量的要求。采集端采用轮询的机制按一定的频率采集各个节点信息。这样的机制稳定有效,但能监控的节点数有限制。分布式的多采集端可以突破单个采集端的限制。
将数据库分为管理数据库和数据存储端,这是根据管理数据和节点历史数据特点进行的合理划分。
管理数据要保证系统的唯一性,数据结构较复杂,但数据量不大,因此用管理数据库保存。
节点的性能数据结构相对简单,但数据量很大,保存的时间长(两年以上),且存储数据量与节点数目成正比。将数据存储端拆分为多个,一是为了减小每个数据存储端的压力;二是为了更好地适应网络情况,以免造成某条物理连接上数据拥挤。同时,多个数据存储端在一定程度上也提高了系统稳定性和数据安全性。
采集端的部署位置和数量是由具体使用场景决定的:对于相互隔离的每个网段或子网,需各部署至少一个采集端。部署的位置通常在该网段或子网的控制节点,如集群控制器。如果一个集群控制器需要部署多个采集器,可用端口区进行区分。
通常监控系统的数据采集频率为5分钟,即每5分钟完成一次监控节点的轮询。每次采集所需的时间与网络情况、采集数据种类数、被监控节点处理采集请求数量、请求超时时间、存储速度等因素有关。假设每笔数据都因为采集不成功达到最大超时时间,可以得到一个最长采集周期,假设为n秒,则最大的监控节点采集数量为m=5/n。某个网段或子网最大被监控节点数除以m,就很容易得到该网段或子网需部署的采集端数量。
3 混合数据库的数据存储模式
监控软件通常采用环状数据库存储节点历史数据。环状数据库使用固定大小的空间来存储数据,可以自动归并数据,并根据时间跨度自动决定数据读取精度。
目前主流的环状数据库工具(如RRDTool)都是基于文件读写的。每个节点的各种系统数据都存在不同的环状数据库中,单次存取数据量不大,但文件读写会耗费较大的系统资源。当多个采集端同时往一个数据存储端写数据时,文件读写可能成为系统性能瓶颈。此外,主流的环状数据库工具对网络支持得不好,如果直接使用,还需要开发数据网络收发模块。
威邦云采用关系数据库、环状数据库和数据操作模块结合的方案来解决上述问题,如图2所示:
各个采集端借助主流关系型数据库的网络和快速存取功能,将采集的原始数据(Raw data)暂存到关系型数据库(MySQL)中。
数据操作模块(HDB-Agent)按一定的频率读取关系型数据库的原始数据,计算、转换为可以直接存储到环状数据库的数据结构,以环状数据库为单位,一次存入多笔数据,然后删除关系型数据库中暂存的数据,完成存储功能。
读取节点历史数据时,管理端将指令发送给数据操作模块,数据操作模块根据取数据起讫时间从环状数据库(或关系型数据库)中读取数据,并返回给管理端。
这样的机制在利用环状数据库优点的同时也提高了数据的存取速度,可满足节点规模较大时的存取需求。
4 分片缓存组装的全局状态绘制方案
分布式的采集端与庞大的监控节点数据给监控系统整体状态绘制带来新的挑战:首先要保证用户体验,用户从发出查看指令到完成绘制不能等待太长时间(威邦云设定为小于2秒);同时,绘制一次系统整体状态由于数据量庞大,要消耗较多的计算资源和网络带宽,在满足需求的基础上应尽量降低系统资源消耗。
威邦云监控采用分片缓存组装的方案来解决以上问题,如图3所示:
由于用户对系统整体状态查看请求是不定时的,管理端无需实时保存一份系统状态图,只有在收到用户请求时发起绘制,可以大大降低计算、网络资源消耗。
为了提高系统计算效率,将通过当前系统原始数据计算系统整理状态的工作从管理端移到各个采集端。各个采集端每次采集数据后,在发送给数据存储端的同时缓存一份数据,并计算出该采集端采集节点的一个系统状态分片。采集端分布式特性,相当于将管理端串行的计算工作变为并行。各个采集端将计算结果结构化为可以直接绘制图形的结构化数据,收到管理端请求后直接将状态数据片发送给管理端,可大大缩短计算时间,也减小了网络数据传输量;管理端接到各采集端的分片数据后,只需要将各分片数据连接到一起后完成绘图,就得到系统整体状态图。
5 结论
本文介绍了威邦云监控采用分布式的架构解决监控节点规模庞大和网络环境复杂的问题;采用混合数据库加数据操作模块(HDB-Agent)的方法解决大数据量的处理、存储的问题;采用分片缓存组装的机制解决快速绘制系统整体运行状态的问题。
参考文献:
[1] 蔡柳青. 基于MongoDB的云监控设计与应用[D]. 北京: 北京交通大学, 2011.
[2] 江魁,黄云森. 基于RRDtool的网络性能监测系统实现[J]. 中山大学学报:自然科学版, 2002(Z1): 16-19.
[3] 瞿关明. 2013安防市场发展瞻望——2013年:迎接智能云监控时代[J]. 中国安防, 2013(1): 62-65.
[4] 沈青,董波,肖德宝. 基于服务器集群的云监控系统设计与实现[J]. 计算机工程与科学, 2012(10): 73-77.
[5] 冯伟. 企业云管理系统资源监控模块的设计与实现[D]. 广州: 中山大学, 2012.