姜鹏,赵正利
(1.中国海洋大学网络与信息中心,山东 青岛 266100;2.中国海洋大学教育系,山东 青岛 266100)
基于分布式计算的异常网站筛查系统的设计与实现
姜鹏1,赵正利2
(1.中国海洋大学网络与信息中心,山东 青岛 266100;2.中国海洋大学教育系,山东 青岛 266100)
摘要:设计了一种在大型园区环境下对互联网异常网站进行筛查的系统,系统在.NET框架下开发运行,基于分布式计算的模式部署,采用HDFS和SQL Server存储数据。分布在多个子区域的探针根据多设备日志的排序数据进行异常网站的筛查,核心服务部分进行故障汇总分析、任务分发推送和知识库归档等操作。该系统具有一定的故障分析能力,可以根据已有知识库形成故障分析指导,通过调用预定义脚本启用备用设备或线路。系统运行结果表明,设计科学有效,能够给大型企事业单位的网络运维和管理提供参考依据。
关键词:分布式计算;信息系统;B/S模式;.NET
随着信息化的深入发展,大多数的企事业单位尤其是高等院校,在自己园区内拥有着相当数量的台式机、工控机和服务器,进而自行组建局域网环境为自己的生产和办公服务。为了满足其设备上网的需求,这些单位往往同时租用多个网络运营商线路,并把它们部署在自己的园区网络边界,采用NAT、代理等服务方式对内网用户和设备提供服务。这种方式既节约总体成本、提高内部工作效率,又能有效保护自己的内网安全。
但是这种网络模式在日常运维中也出现了一些问题,其中较为突出是某些内部访问量较高的互联网网站有时出现访问异常的故障,而此类网站列表和异常的程度不断地变化,有时仅有部分网络区域访问异常,各个子园区区域访问体验不一致。如果单位常用网站出现访问异常的状况,日常工作会被影响,进而影响企事业单位效益。其常见的成因有:运营商线路内部微调甚至故障中断;异常网站自身问题;园区NAT、代理服务卡顿故障;园区内网络拥塞或病毒扩散以及用户设备自身问题等。在发生类似问题后,单位员工通过各种通讯方式向运维工作人员或报修系统反馈。故障发生后定位及排除的常用方法有以下几种:采取告警性能分析法、应用配置数据分析法、采用替换法和查看计算机网络设备日志[1]。这类传统处理方式的主要弊端是网络运维被动接受故障信息,处理流程浪费用户的大量时间;大量异常网站无人反映以及日志和故障处理的记录不完整,无法形成知识库。同时传统处理方式为了避免核心设备的单点故障,尽量做到在整个计算机网络的容错系统内,每个部分都有与之相匹配的冗余设计[2]。但其触发机制一般与自身设备状态绑定,无法根据复杂网络情况自我调整,因此需要建立自动机制在整个网络层面调整设备的配置。
为了保证全网用户的上网体验,可以利用从分布式信息系统中的不同监测点收集到的监测数据对系统故障检测与诊断进行研究[3]。把此监测数据与网络用户的故障报修数据汇总形成故障维修工单,具有一定用户主观性的报修数据能够补充自动检测体系的遗漏。分析已处理故障形成知识库,包含故障的典型特征、关联设备、影响区域和处理方式等。知识管理将分散的内部应用进行有效整合,提高资源的共享效率[4]。大量现代社会的数据存储于XML、JSON和未被充分利用的半结构化数据(传感器、系统、应用和事件等日志)[5]中,本系统要保存和分析的多类设备日志文件具有半结构化数据特征,需要构筑一个大容量、价格低廉且支持在线分析的存储库。分布式文件系统可高效可靠地运行在多个节点上,提供多种对外数据接口[6],利用现有主机组成分布式文件系统对大数据存储和操作提供有效支持。本研究在充分利用现有网络投资的基础上,构建了一个自动化的故障发现处理系统。
根据对已有问题的分析和信息化发展的趋势,新的异常网站筛查系统计划实现以下的功能和特征,最终建立一套具有故障自诊断功能的异常网站发现处置系统,保证与其他网络设备和服务实现有效数据交换,在管理、安全和技术层面建立完整的异常网站故障筛查体系。
(1)用于保存网络设备日志的存储选型需要达到投资较少且性能优越的目标,充分利用现有服务器硬件。
(2)系统自动在线检测多种系统日志,自动发现、分析并汇总故障。
(3)前台功能包括普通网络用户报修和回访页面,用户可以上报异常网站地址、现象以及联系方式等。
(4)具有已经处理问题的展示页面,普通网络用户可以匿名访问和查询,合理利用知识库。
(5)后台功能完全由Web界面提供,功能详尽、流程清晰。后台操作人员分为系统管理员、监督员、故障分派员和故障处理员等几个层次。
(6)开发手机可用的后台界面,给上门服务的网络维护人员使用。
(7)具有一定的人工智能,可以学习已经处理完毕的故障流程并给出处理建议。
(8)与现有的边界设备有互动接口,在某些常见故障发生的时候,可以自动进行处理并记录。
(9)把普通用户上报和系统自动发现故障形成统一的工单,自动推送或由故障分派员分发给相应的故障处理员。
(10)形成故障分析报表功能,通过对多发故障的分析,确定某故障频发的园区子区域,并进一步分析其产生原因;方便后期出口网络设备优化;指导设备购置的方向;与网络接入商进行沟通协调等。
在充分利用.NET安全特性的基础上,按照设计目标进行系统的设计开发。利用分布式存储来保存分析海量日志数据,同时在关系数据库上存储系统运行数据。采用分层设计理念开发,包括数据层、底层功能层、应用层和前端展示层,每层包含自己的功能模块和相对独立的接口。系统功能构架如图1所示。
图1 系统总体设计Fig.1 System overall design
2.1技术构架
本系统采用集成了编程、编译和运行环境等部分的整体方案,需要其具有安全性、稳定性、易用性及可扩展性等特点。ASP.NET不仅是ASP的下一个版本,而且是一种建立在通用语言上的程序构架,能被一台Web服务器用于建立强大的Web应用程序[7]。系统部署在WindowsServer2012上,采用.NET框架开发,应用B/S架构。 .NET技术顺序是先编译后执行,并且以ASP脚本解释执行机制为基础,可以获得比较好的运行速度[8]。采用C#作为系统开发语言,理论上可以使用任何与公共语言运行库兼容的语言(包括VisualBasic、VisualC# 和JScript.NET)来创作应用程序,但最合适的编程语言还是MicrosoftStudio为ASP.NETFramework( 框架) 专门推出的C#[9]。
采用高容错、快速以及可扩展的分布式存储,来保存和分析大量文本类型的服务日志。Hadoop成为了典型的大数据批量处理架构,由HDFS负责静态数据的存储,并通过MapReduce将计算逻辑分配到各数据节点进行数据计算和价值发现[10]。使用Hadoop分布式存储原始的网络设备日志数据,部署运行自动脚本,间隔固定时间导入网络服务设备的完整日志。目前大数据分析处理工具中常用的有Hadoop、HPCC、Storm、ApacheDrill、RapidMiner、PentahoBI等[11]。计划采用Drill作为中间层,.NET框架下的语言通过ODBC以类似关系数据库的方式操作分布式存储上半结构化格式的日志[12]。通过Zookeeper的集群功能把查询操作分流在多台Linux服务器上[13]。部署SQLServer作为后台的底层数据库,存储用户信息、权限身份和分析数据等。
2.2功能模块
在同一功能层级内采用分界清晰的模块设计来实现系统功能,对大量设备数据自动筛选,程序获取其是否可达、访问延迟、下载速率以及每小时访问权重等参数作为后期处理优先依据。把故障网站按评分级别自动推送或人工分配到具体故障处理人员,按照工单流程处理完毕后进行详情反馈确认,从而进行故障归类并形成知识库。编写普通上网用户反馈入口,用户可以通过内网进行故障网站报修,也同上形成工单及后续动作。
在知识库形成一定规模后,高级查询功能可以对用户提供已经发生的典型故障的处理流程。普通用户甚至可以通过查询已解决的故障过程,自行处理简单问题。网络维护人员通过参考已成功处理故障的完整报告促进故障解决。开发与第三方设备的联动接口,在出现典型故障时,按照事先定义的动作操作NAT、DNS和出口路由器等设备。编写用于网络维护的APP,方便外出维护人员进行故障维修。详细报表功能通过多种图表展示,对某段时间故障按照类型、区域和出口排序,可以形成详尽工作量考核报表并对网络设备故障排序等等。
2.3安全与权限
安全策略和制度的落实贯彻在系统的整个生命周期内,而开发阶段更是系统安全的基础,该设计部署多种安全策略确保核心功能和数据的安全。严格控制用户权限,对每个功能函数和页面进行权限定义,采用组策略的方式管理。ASP.NET内置了强大的用户账号和角色管理功能,提供了ASP.NET配置工具和7个组件控件,简化用户调用相关功能[14]。利用C#语言的安全特性,细化输入的过滤和页面的展现过程。对用户身份和密码等数据,进行加密存储。利用数据加密技术把密钥和加密数据分别存储,把密钥与要保护的数据物理隔离起来,提高数据存储的安全性[15]。配置证书服务,利用SSL加密传输网络用户上网数据,在必须使用Cookies的页面启用Secure功能,确保Cookies流量不被攻击者与网络监听截获[16]。
部署和调优分布式文件系统、Drill和SQLServer后,在确定每个层次功能的基础上,细化每个模块指标参数,采用C#语言进行系统软件方面的开发测试。程序全面采用B/S模式构架,下面详细介绍环境部署和代码开发的几个关键环节。
(1)在局域网内的多台Linux服务器上配置Hadoop环境,每台服务器到交换机之间都使用双链路链接,安装优化HDFS,配置为3物理节点冗余,使其通过固定端口对特定IP提供服务,调试自动脚本把网络设备的日志文件每间隔半小时抽取到HDFS上,按照文件格式分别放置。
(2)建立Drill的基于Zookeeper的集群运行机制,配置HDFS作为其半结构数据查询源。最后在几台互为HTTP服务负载均衡的Windows服务器上安装DrillODBCDriver,并配置.NET运行环境。
(3)通过Drill中间层从HDFS抽取最近一小时的数据进行分析。在域名服务器日志筛选过去一小时内前1 000个访问量最多的域名的查询记录。
…selecttop1000hostname,count(hostname)fromdataesgroupbyhostnameorderbycount(hostname)desc…
//hostname为原始数据中的“域名”字段名称,dataes表格临时保存抽取的过去一小时原始数据。
...
while(reader1.Read())
//依次遍历1000条记录
{
stringhostname_temp=reader1[0].ToString();
floatweight1 =float.Parse(reader1[1].ToString()) /count_all;
//count_all为最近一小时所有的DNS日志总查询数。
…
//获取每条查询的域名和访问量权重,全部保存到数据库待查。
}
//可以通过类似方式获取网络总出口计费、NAT代理服务的日志,在子区域部署探针设备,自动汇总到核心服务。
(4)另外一个模块处于自动值守模式,只要数据中有上个步骤最终产生的待查数据,就立即运行分析,然后把结论写入相应记录并打上已处理标签。同时系统管理员也可以预设一些固定的典型网址,加入此模块的分析队列。
…
stringIP1 =GetHostEntry(hostName1).AddressList.GetValue(0).ToString();
//把域名转换为IP。
…
interr_times=0;//定义错误次数
floattime1=0;
floatavg1;//定义平均ping包返回时间
for(inti= 1;i<= 5;i++)//采用连续的5次ping测试,并记录结果
{
Pingping1 =newPing();
PingReplypingReply=ping1.Send(IP1);
if(pingReply.Status==IPStatus.Success)
time1 =time1 +float.Parse(pingReply.RoundtripTime.ToString());
else
err_times++;//获取ping失败次数并记录
}
avg1 =time1 / (5 -err_times); // 计算平均ping返回时间并记录
…
部署运行后形成初步的故障分析列表,如图2所示。后台程序自动形成初步的故障分析数据,并存储于SQLServer中;通过预定义常用的典型各运营商网址,可以探测到多条出口线路的传输质量;展示界面支持多约束条件自由组合的模糊查询;可以根据失败数、ping均值等进行排序,方便故障的排除。
图2 初步分析示例Fig.2 Illustration of a preliminary analysis
(5)对已经处理过的故障进行评级并记录详细的故障现象,按照异常地址列表、涉及设备、线路列表和影响子区域等分类形成指标体系。系统把同时段内所有的故障进行筛选,与现有知识库的故障多种特征进行匹配,各自乘以权重指数后计算相似值,按照故障相似值的高低向用户或维护人员进行建议推送。展示界面如图3所示。系统自动把类似故障进行归类并综合分析并且分析故障的紧急程度并进行评分、预设一些可行的在线自动应急方案(如出口线路切换、备用设备顶替、病毒子区域暂停等),配置好各自的脚本以远程控制相应设备,如果新发故障相似值超过95%,程序调用相应自动脚本并通知管理人员进行后续处理。
图3 综合分析处理示例Fig.3 Illustration of a comprehensive analysis and event handling
本系统在长期合理使用的基础上会产生不断增加的价值,可以有效利用现有软硬件投资,把多个设备进行数据高效互联,其分析报表功能可以为企事业单位在网络硬件、人员聘用和带宽租用上节省大量资金。但由于实际的网络设备通常由多个厂家设备组成,所以联动部分在试运行后需要通过不断的调优操作来适应系统版本和设备硬件的更替。另外,本系统的分布式存储保留了主要的出口日志,构架了半结构化数据的类SQL查询中间层,在后期通过增加相应功能模块,可以很方便地把本系统扩展为网络访问日志的存储查询分析平台。
参考文献:
[1]王嘉庆. 计算机网络常见故障及其维护管理[J]. 信息与电脑:理论版, 2016(2):167-168.
[2]颜兴辉. 容错技术在计算机网络系统中的应用[J]. 电脑知识与技术, 2015, 11(24):31-32.
[3]尹娟, 葛愿, 王炎,等. 大型分布式信息系统故障检测研究[J]. 安徽工程大学学报, 2015(5):45-52.
[4]问梁军. 企业信息化建设中的知识管理探讨[J]. 工程建设与设计, 2012(11):178-180.
[5]RAJP,RAMANA,NAGARAJD,etal.High-PerformanceIntegratedSystems,Databases,andWarehousesforBigandFastDataAnalytics[M]//High-PerformanceBig-DataAnalytics.Berlin:SpringerInternationalPublishing, 2015.
[6]MAZUMDERS.BigDataToolsandPlatforms[M]//BigDataConcepts,Theories,andApplications.Berlin:SpringerInternationalPublishing, 2016.
[7]王璠, 王廷璇. 基于ASP.NET的物流仓储管理子系统的设计[J]. 物流技术, 2014, 33(1):349-353.
[8]李强.ASP、ASP.NET和JSP是动态网页设计技术比较[J]. 电脑知识与技术, 2014,10(34):8296-8297.
[9]余翠兰. 基于ASP.NET的学生住宿管理系统的设计与实现[J]. 软件, 2014(4):37-41.
[10]程学旗, 靳小龙, 王元卓,等. 大数据系统和分析技术综述[J]. 软件学报, 2014,25(9):1889-1908.
[11]方巍, 郑玉, 徐江. 大数据:概念、技术及应用研究综述[J]. 南京信息工程大学学报:自然科学版, 2014,6(5):405-419.[12]APACHEDRILL.ODBC/JDBCInterfaces[EB/OL]. [2016-01-20].http://drill.apache.org/docs/odbc-jdbc-interfaces/.
[13]Hadoop.ZooKeeper3.4Documentation[EB/OL]. [2016-01-08].http://zookeeper.apache.org/doc/trunk/zookeeperOver.html.[14]方开红, 刘小园.ASP.NET网站开发技术的安全性研究与应用[J]. 网络安全技术与应用, 2014(5):32-33.
[15]陈红松, 韩至, 邓淑宁. 智慧城市中大数据安全分析与研究[J]. 信息网络安全, 2015(7):1-6.
[16]CHENP,NIKIFORAKISN,DESMETL,etal.SecurityAnalysisoftheChineseWeb:Howwellisitprotected?[C]//Proceedingsofthe2014WorkshoponCyberSecurityAnalytics,IntelligenceandAutomation.[S.l.]:ACM, 2014:3-9.
DOI:10.3976/j.issn.1002-4026.2016.04.020
收稿日期:2016-04-12
作者简介:姜鹏(1979-),男,工程师,研究方向为软件工程、信息安全。
中图分类号:TP311.1
文献标识码:A
文章编号:1002-4026(2016)04-0106-06
Design and implementation of distributed computingbasedscreeningsystemofabnormalwebsites
JIANG Peng1, ZHAO Zheng-li2
(1.Network and Information Center, Ocean University of China,Qingdao 266100,China;2.DepartmentofEducation,OceanUniversityofChina,Qingdao266100,China)
Abstract∶We devise an automatic screening system for abnormal websites on the Internet in a large-scale zone. It is implemented with .NET Framework, distributed deployment, HDFS and SQL Server. Multiple sub-areas deployed probes can automatically screen out abnormal sites based on the sorted log data from multiple devices. Its core services include meta-analysis of fault, task distribution, and knowledge base archive. It has certain fault analysis capability, fault analysis and guidance based on existing knowledge base, alternate devices or lines startup by calling predefined scripts. Its operation results show that it is scientific and effective, and can provide a reference for network operation and maintenance of large-scale enterprises.
Key words∶distributed computing; information system; B/S mode; .NET