网络与应用系统监控软件的设计与实现
吕洪富
(人民日报社技术部)
[摘要]随着信息技术的发展,新技术不断融入新闻行业,提升了新闻制作和传播能力。随着信息系统的不断增多,网络与应用系统的运行维护变得越来越重要。如何能够响应用户的反馈,及时发现问题,如何准确定位故障,甚至提前预判隐患,使运维工作更具前瞻性,是运维人员要解决的课题。针对这些问题,本文从实际出发,设计开发了网络与应用系统监控软件,使其在日常运维中对快速发现问题、解决问题发挥了重要作用。[关键词]监控 运维 记录端口扫描 pingportscan1引言作为一名网络运维工程师,不仅要面对各类网络安全问题,更要时刻关注网络的连通情况。在人力资源紧张和信息系统不断增多情况下,寻找一款简而易、专而精的运维软件来协助工作,就变成一件非常迫切的事情。通过对日常维护经验、方法的梳理,作者总结出排除故障的一些常规方法和步骤,并以此作为样本,进行程序设计,经不断实验,最终开发出一款简洁、方便的监控软件,实现了对网络和应用系统的信息收集、处理,为运维提供有效的数据依据,便于快速解决问题。2需求分析2.1总体需求分析目前,市面上有很多运维产品,将各业务系统添加到其监控平台中,可以监控几乎所有事件,也正因此,使得其系统运行庞大,使用复杂,需经专业培训,才能掌握使用方法,在新增业务或更新业务后也需要人力参与,才能使得变化融入到系统中。如何在复杂度和易用度之间寻找平衡,让运维操作更加简洁?如何在问题出现之初就捕获相关信息提供给运维人员,使得运维工作更具前瞻性?如何将终端用户的应用诉求通过日志形式记录反馈给运维人员,使问题的解决更具针对性,更加快捷?针对以上问题进行分析,梳理出开发简洁、方便的网络监控软件,需求如下:需要实时监测网络连通状况,记录发生网络断连的时间、原因;监测各应用系统TCP服务端口是否正常响应用户请求,记录发生异常的时间、原因等;在监测目标的过程中,不影响用户的使用,界面简洁、表现直观、操作快捷,具备7x24小时不间断运行等特性。总体主要实现以下功能:①带时间戳的ping功能,记录错误的ping包,记录延时大于指定时间的ping包,且需要定时记录一定的ping包,以证明软件运行良好;②带时间戳的端口扫描功能,记录端口连接异常的信息,且需要定时记录一定的端口扫描信息,以证明软件运行良好;③稳定性高,运行可靠,能够7x24小时连续不间断运行,记录信息便于查看;④方便添加、删除等日常管理操作,能够调整监控参数以适应不同监控时间、延时等需求;2.2 详细需求分析①带时间戳的ping功能(ping)在记录ping包前需加上日期和时间(精确到秒),不间断对被监测设备进行连通性测试;对于选择性记录ping包,需能够根据实际需求调整相关参数,并定时记录一定的存活ping包,以证明软件运行良好。流程图如下:图1 ping流程图
②带时间戳的端口扫描功能(portscan)在记录扫描结果前需加上日期和时间(精确到秒),能够不间断对被测主机端口进行连通性测试;对于选择性记录扫描数据,跟选择性记录ping包类似,均为提高记录的有效性。流程图如下:图2 portscan流程图
③稳定性高,记录信息便于查看对于监控记录类的软件来说,稳定性是必须的指标之一。.net平台已经发展到.net4.5,其稳定性和开发的快捷性为大家所熟知,选择.net作为开发平台有助于保证软件稳定运行。记录信息便于查看是对软件使用便捷性的要求,用户愿意使用该软件去发现和解决问题。在生成日志文件的时候,以IP地址为名称生成文件夹,在该文件夹下每天生成一个以日期为名称的日志文件,类型为TXT文本文件。主界面每个任务IP后均有查看按钮,通过此按钮,可以打开该IP对应文件夹,用户可以自主浏览记录文件,也可以双击该IP对应的行,列出该IP下所有的日志文件,用户选中相应日志文件即可调用windows自身的notepad打开日志文件。④方便日常管理,能够调整参数首先是输入管理,需简单快速的完成相关输入操作。在设计ping界面时,输入IP地址和备注信息,添加该信息到ping任务列表中;portscan界面输入类似。在添加到界面相应任务列表的同时,将把该任务自动添加到本地任务列表文件中,以备下次直接读取任务;其次是配置管理,该软件将用到的参数均设计成可配置管理的方式,通过调整参数可以提高或者降低记录的频度、运行的循环间隔等,配置程序运行后自动对已添加的任务监控。最后是运行管理,该软件启动运行后读取本地任务列表文件,自动加载已添加任务到界面中,并根据配置文件开始监控;在运行管理方面增加开始选中项、删除选中项等操作,在删除界面任务列表项时,将同步删除本地任务列表文件中对应项。3 设计开发3.1 平台选择本着稳定、简单、易用的原则,作者选择了windows+.net框架作为此次开发平台。.net平台为桌面开发提供了强大的类库、网络支持及安全的多线程技术,拥有各种界面控件,能有效减少代码编写的工作量,提高程序运行的稳定性和可靠性。3.2框架构建软件以分层的方式实现,主要分表现层、业务层和数据访问层。表现层即用户看到的界面,以tab控件作为母控件,可根据功能分类添加多个tab页面,提高功能分类和逻辑分类的清晰度;每个功能tab页面以SplitContainer控件分割,将页面分为任务列表区和日志显示区,任务列表区显示已添加及正在运行的任务,日志显示区列出选中任务已产生的日志;业务层以各功能为基础,构建不同的业务类,ping类负责ping设备通断状态检测及记录,由界面主线程创建ping实例,并调用ping线程开始循环工作,当主界面发出退出命令时,线程跳出循环,清理相关资源后退出;portscan类负责扫描端口存活状态及记录,由界面主线程创建一个portscan实例,并调用portscan线程开始循环工作,当主界面发出退出命令时,线程跳出循环,清理相关资源后退出。线程退出后,由.net系统自动回收资源。数据访问层主要完成写文件操作。当需要写文件时,把文件路径、待写入的内容参数传递给写文件函数,完成文件写入操作。3.3 代码编写以.net平台的C#语言来完成程序的编写。按照三层原则分别对主界面、后台及相关处理类进行代码编写。开启ping监控代码如下:图3 开启ping监控代码
开启portscan监控代码如下:图4开启portscan监控代码
3.4 界面展示(1)ping页面该页面主要完成对任务IP进行ping添加、记录、查看等功能,页面如下图。图5 ping页面展示图
添加任务后,可在相应任务的“操作”列上点击开始,即开始此任务的监控。若添加了多行任务,可用鼠标滑选(或ctrl+鼠标左键选中)需要开始的任务,右键“开始选中”即可对选中任务开始监控。(2)portscan页面该页面完成对端口扫描任务添加、记录、查看等功能,页面如下图。图6 portscan页面展示图
添加任务后,可在相应任务的“操作”列上点击开始,即开始此任务的监控。(3)config页面该页面完成对相关参数的配置。更新完成后点击保存即可。config页面如下图。图7 config页面展示图
3.5开发难点本软件采用多线程技术开发,精确控制每个IP任务的响应ping和portscan功能均采用多线程技术开发,并采用后台模式,工作线程与主线程通信,响应主线程的操作。采用多线程技术编写软件需精细控制每个参数的类型和数值改变的时机,否则稍有不慎,将导致程序运行错误。4 实际应用4.1交换机单点故障发现将某楼外网接入层交换机(华为S2710)加入监控后,发现该交换机时常出现无法ping通的情况,且偶尔会出现大段丢包现象,用户不时报告上网速度缓慢。维护人员在出现ping丢包较多时候对该交换机进行console口登录管理,发现该交换机cpu占用率持续攀升,最高可达百分之九十以上,后对该端口所连接设备进行检查,发现该用户私接无线路由器,无线路由器上连接有台式机和笔记本,对电脑主机进行检查,发现若干病毒。至此由于无线路由器和病毒导致的网络故障被排除。4.2IP地址冲突故障发现社内所有PC外网IP地址分配均由DHCP服务器统一分配。将某外网接入层交换机(思科2924)加入监控后,发现此交换机的管理地址ping包有超时现象。登录DHCP服务器,发现DHCP之前将该地址动态分配给某个主机,而交换机本身的管理地址也是此IP,引起地址冲突。将交换机管理地址从DHCP服务器中清除,并将DHCP的地址池已分配地址清空,并重启该网段的所有交换机,问题消除。4.3vpn远程接入故障发现所有分社用户通过vpn设备远程接入访问内网,进行各项业务工作。某日将远程接入跳转页面所在服务器进行安全补丁升级并重启,而后陆续有用户报告无法通过vpn访问内网。逐一开始排查问题,最终发现在升级安全补丁后,操作系统防火墙自动打开,且未放行该服务端口,放行端口后,问题解决。5应用前景虽然该软件设计实现较为简单,但在实际应用中,可在问题出现之初记录并发现潜在的问题,对于日常维护网络设备、应用系统可以提供有力的数据支撑。计划在今后的使用中,不断完善软件功能,如在软件中加入tracert功能,将更进一步丰富信息内容,并设计算法,开发相应的告警功能,使得该软件更加智能化、人性化,为运维工作提供更及时、更准确的信息,提高综合运维管理水平。6结束语在设备和平台快速增加的情况下,为运维人员提供可靠的、智能化的服务产品,已变得越来越重要。大而全的运维产品可在横向上提高运维工作的可管理、可维护性,专而精的运维产品可在纵向上提高运维工作的效率和快速反应能力,把问题消灭在萌芽状态。只有两个方向上都做好,才能在运维中发现问题、解决问题时得心应手,处变不惊。
参考文献:
1、明日科技.C#从入门到精通.第3版.北京:清华大学出版社.2012.
2、(美)内格尔.C#高级编程.第3版.北京:清华大学出版社.2008.
3、(美)沃森,内格尔.C#入门经典.第5版.北京:清华大学出版社.2010.
4、微软.msdn library.
编辑:中国新闻技术工作者联合会
评论 点击评论