实用的IDC低成本监控
2013-01-22中国电信无锡分公司
中国电信无锡分公司 康 明
1.软件研发背景和目标
1.1 研发背景
随着本省多个VIP级的IDC数据中心出现,年收益10万甚至百万级的IDC大客户也随之增多。但是,很多客户由于维护和安全上的需要,提出更高的要求,要求提供主机监控和性能报表服务是其中常见的一项。而目前国内IDC最缺乏的是完善的监控系统,服务器的运行情况得不到有效的监控和报告,既增加了IDC的管理工作量,也影响IDC网管中心的客户服务质量。即使存在可以购买的监控软件,也存在价格高昂、后继维护高成本、不适应用户个性化需求等问题。
因此,为提高IDC的管理水平和服务质量,以适应国内互联网发展的形势,配合政府、企业上网工程的顺利进行,现借鉴国内外IDC的发展经验,开展IDC服务器监控管理系统项目的研究。开发了一套切实可行,可投入实用的低成本IDC服务器监控管理系统,实时监控托管主机的运行状态和性能资源的使用状态,并且按月出具图文报表,及时报告主机运行情况。该项目目前已经投入实用。
1.2 设计目标
(1)首先是低成本。在低投入的基础上,能满足用户提出的个性化需求。
(2)其次是部署简易。在现有的IDC网络的基础上,无需增加额外的网络硬件交换设备,即实现对用户服务器的性能和资源进行监控。
(3)系统可扩展。用户数、用户的监控主机数、监控功能模块均可扩展。扩展时不影响主机运行
(4)能满足用户的个性化需求。在系统可扩展的情况下,诸如报表、实时网络图表查看、短信邮件告警、多终端查询(移动终端)等附属功能均可实现。
2.需求分析
2.1 功能模块
整个项目共分为四大模块:主机数据采集模块,中心处理模块,信息展示模块,用户报表模块。
2.1.1 主机数据采集模块
(1)透明的Shell脚本采集
(2)内存信息
(3)CPU信息
(4)Swap信息
(5)硬盘容量信息
(6)其他主机资源信息
(7)采集频率可设定
2.1.2 中心处理模块
(1)数据采集
(2)自动按用户整理数据
(3)自动按服务器整理数据
(4)自动按时间整理数据
(5)自动按数据类别整理数据
(6)数据处理频率可控
2.1.3 信息展示模块
(1)以网页实时图表展示形式为主。
(2)按用户登录
(3)按数据类别查询
(4)按服务器查询
(5)按时间段查询
(6)按时间段图表式比较
(7)按服务器图表式比较
(8)文字形式的具体数据查询和比较
2.1.4 用户报表模块
(1)PPT报表模版
图2.1 实用的IDC低成本监控系统结构图
2.2 主机数据采集模块说明
2.2.1 主机数据采集
使用者:所有受监控主机。
输入:无。
处理:以Shell脚本透明方式获取监控主机数据并保存为固定格式的cookie
输出:数据存入cookie
2.2.2 主机数据上传
使用者:所有受监控主机。
目的:上传数据到数据处理中心集中处理
输入:cookie名
处理:以Shell脚本透明方式上传cookie。
输出:无
随着产量和质量水平的提升,中国塑料管道加工企业“走出去”的愿望强烈,也出现了一些出口主导型的企业,使近年产品出口呈增长势头,出口量和出口额不断增加,并且出口单价和占总产量的比重均呈上升趋势,产品主要销往东南亚、中东、非洲、美洲以及欧洲等国家和地区。而国内市场的扩大和行业的发展也吸引国外一些同行以各种方式加入了国内塑料管道行业的竞争中,加大了国内行业的创新力度,促进了行业技术进步。国内塑料管道行业在积极参与国际交流、学习国外先进技术与管理理念的同时,也向国外展示了中国塑料行业的发展情况。
2.3 中心处理模块说明
2.3.1 功能配置
使用者:部署中心处理模块的服务器。
目的:配置该模块能正常运行所需参数。
输入:各类参数值。
处理:配置各类参数
输出:无。
2.3.2 数据读取
使用者:部署中心处理模块的服务器。目的:获取各受控服务器上传数据。输入:cookie名。
处理:从cookie中获取相关数据,并备份cookie。
输出:固定格式的数据值。
2.3.3 数据整理入库
使用者:部署中心处理模块的服务器。
目的:将杂乱的数据信息整理后按固定格式入库。
输入:固定格式的数据值
处理:数据入库。
输出:布尔值表示成功或失败。
2.3.4 程序流程主控模块
使用者:部署中心处理模块的服务器。
目的:程序流程主控。
输入:无
处理:按照参数配置循环处理上述2和3。
输出:无
2.4 信息展示模块说明
2.4.1 模块管理
使用者:电信系统管理员。
目的:配置网站参数,用户帐号和权限。
输入:各类参数值
处理:设置参数值
输出:网页显示设置效果。
2.4.2 图表数据按条件查询
使用者:具有权限的网站登录用户。
目的:按条件查询某类数据的图表。
输入:主机名、时间段、数据显示类型
处理:按输入条件选取数据值以网页形式显示。
输出:图表输出
2.4.3 文字数据查询
使用者:具有权限的网站登录用户。
目的:查询精确数据值
输入:主机名,时间段、数据类型、其他参数
处理:按条件显示精确数据值。
输出:精确数据以文字形式输出
3.功能设计
3.1 架构设计
3.1.1 体系架构
图3.1 实用的IDC低成本监控系统体系结构
3.1.2 运营模型
图3.2 实用的IDC低成本监控系统运营模型
3.2 技术标准
3.2.1 中心处理服务器端技术
C#编程语言是由微软公司的Anders Hejlsberg和Scott Willamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。这种移植对于广大的程序员来说是比较容易的,因为C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。使用IDE迅速建立一个应用程序的过程称为快速反映开发。
.NET是Microsoft的XML Web服务平台。不论操作系统或编程语言有何差别,XML Web服务能使应用程序在Internet上传输和共享数据。
3.2.2 B/S结构服务器端开发技术
ASP是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。指Active Server Pages(动态服务器页面),运行于IIS之中的程序。
ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000/2003 Server/VISTA/7上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是languageindependent(语言独立化)的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript,C++、F++。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net。
3.2.3 后台管理系统技术
ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI 技术,由开发人员Jack Slocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。
3.2.4 数据库技术
Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等 领域有着非常广泛的应用。因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将Oracle作为其应用数据的处理系统。
Oracle数据库是基于“客户端/服务器”模式结构。客户端应用程序执行与用户进行交互的活动。其接收用户信息,并向“服务器端”发送请求。服务器系统负责管理数据信息和各种操作数据的活动。
图3.3 监控系统网站CPU负荷曲线示例(一天所有类型曲线)
图3.4 监控系统报表模版
3.3 软件功能
3.3.1 Shell脚本部分(数据采集)
模块功能描述:
利用主机操作系统内置的Shell命令编写的全透明脚本,用以获取主机资源的基本信息,并生成对应的cookie文件。通过操作系统自带的ftp客户端,将文件传送到中心处理服务器上。
性能:
数据采集频率通过配置crontab或计划任务来确定,如1分钟等。
输入和输出:
标本配置好个基本命令的输入参数,运行后生成一 个个包含数据的cookie文件。
限制条件:
用户主机必须和中心处理服务器网络连通。部分用户由于是封闭内网,可考虑打通一个访问外网ftp端口的只出不进的 隧道,或采用第三台服务器代理的方式。
3.3.2 中心处理模块部分
模块功能描述:
这是文件和数据库处理模块,在检测到指定目录下有cookie文件已经上传时,读取文件内容并进行数据分 析和计算,按指定格式将数据插入数据库。
性能:
模块运行时,服务器资源CPU利用率基本没有变化,对服务器资源要求不高。处理能力每分钟数千文件量,对于一般的监控规模已经有余。通过4个月的运营测试,程序运行良好,没有崩溃记录。
设计方法(算法):
可配置数据处理频率,空闲时保持睡眠,在监控数量不多的情况下,保持5分钟一次即可,ftp临时故障断线也没有关系,只要保留cookie文件,待后上传处理即可。
用户要求提供某一系统资源MaxAverage和MinAverage曲线。约定设计算法如下:
maxAverage:每次数据采集取5次数据,记录其中max数据作为数据点,以此形成的曲线作为m axAverage曲线。
minAverage:每次数据采集取5次数据,记录其中的min数据作为数据点,以此形成的曲线作为minAverage曲线。
3.3.3 监控主机信息展示部分
这是一个B/S结构的具有完整管理功能的网站设计方法(算法)。
系统的图表均采用ZedGraph控件来处理。
ZedGraph是一个开源的.NET图表类库,全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表。
ZedGraph的类库具有很高的灵活性。几乎图表的每个层面都可以被用户修改。同时,为了保证类库的易用性,所有的图表属性都提供了缺省值。类库 中包含的代码可以根据被划分的数据来选择适应的比例范围和步长、尺寸。ZedGraph继承了Framework中的UserControl接口,所以允许用户在VS的IDE环境中进行拖放操作。增加了对其它语言的访问接口支持,如C++,VB。
图3.3所示为监控系统网站CPU负荷曲线示例
3.3.4 报表部分(如图3.4所示)
3.4 性能指标
(1)单中心数据处理模块(服务器)支持400台监控主机。
(2)可通过分组扩展服务器的方式增加监控主机数量。