网络监控系统研究
2018-01-04葛威
葛 威
(91872部队 北京 102442)
网络监控系统研究
葛 威
(91872部队 北京 102442)
随着信息化技术的快速发展,网络服务器系统软硬件架构日益复杂,这对IT运维工作的要求也越来越高,IT运维中网络监控技术也越来越受到重视。健壮的监控系统会在IT运维工作中发挥着重要作用,它不仅能够大大提升运维工作效率,减少工作失误,使运维人员能够及时发现系统所出现的故障和问题,而且可以通过对监控数据的分析,为系统架构的重构提供数据支撑。论文对目前主流开放式监控系统进行了介绍,并以Zabbix监控系统为例,对监控系统基本功能进行了演示。
IT运维;网络监控
1 引言
当前世界是风起“云”(计算)涌的时代,SaaS(软件即服务)改变了传统软件实施的方式,而PaaS(平台即服务)则进一步改善了各种应用系统的生态环境;“物联网”全面走入我们生活的角角落落只是时间问题;“智能社会”随着全社会网络基础架构的改善而一点点呈现在人们面前[1]。这些在广泛降低了用户端软硬件投入的基础上,却对集中式的服务器端/群等提出了更为严峻的考验。怎样才能保障系统工作的高效性、稳定性、可靠性?怎样才能动态地了解用户的需求和分配资源给到用户?怎样才能应对潜在的网络中的各种风险?这些都需要能够及时发现并采取有效措施及时解决,所以系统监控技术越来越受到重视,系统监控工作无疑占据了日常IT运维中非常重要的地位[1~2]。
监控系统是运维工程师和研发工程师的眼睛,它帮助工程师在第一时间发现问题。服务器的整个生命周期,都要和监控系统打交道。服务器上架,需要加入基础监控,比如CPU负载、内存等;当服务器开始使用提供服务时,需要加入对应的应用服务监控;当系统发生问题时,监控系统要第一时间发出报警,报警中除了提示出现问题的部位,还要有一些数据和简单的分析,以帮助接到报警的人员快速定位问题。在出现故障以后进行问题分析时,还要靠监控系统提供记录的故障发生时服务器的状况数据,使得运维工程师可以通过不同维度进行分析,找出问题原因[3]。
根据监控系统在IT运维中的角色,理想的监控系统应该具有如下特点[2,4]:
1)监控数据收集及可视化。监控系统能够自定义监控的内容,可以自己编写脚本实现相关数据的收集;数据应保存在数据库中,以便以后需要的时候可以对这些数据进行分析计算;能够方便、快速地将监控项目加入到服务器上,而不需要繁琐的操作;数据可视化要能够直观清楚表达数据内容。
2)异常数据报警。可以定义复杂的报警逻辑,可以实现监控项目之间报警的关联性,而不是只针对单一故障独立报警;用户可以根据实际情况自定义报警方式,如发送邮件或短息等;报警内容能够根据实际情况自行设置,可以获取服务器的基本信息;报警后可以自动执行简单的命令,最大程度的做到自动修复故障、恢复服务器状态。
3)和其它系统协同工作。有强大的API(应用程序接口)提供使用,以便实现其它系统调用;监控数据具有开放行,数据库中的数据结构设计简单、合理、直观;监控可视化的图表信息可以提供给用户方便使用。
2 开放源代码技术平台介绍
2.1 MRTG
MRTG(Multi Router Traffic Grapher)是一套可以用来绘制网络流程图的软件,由瑞士奥尔腾的Tobias Oetiker与Dave Rand所开发。MRTG最早的版本是在1995年春推出的,用Perl语言写成,可跨平台使用,数据采集使用SNMP协议,MRTG将收集到的数据通过Web页面以GIF或PNG格式绘制出图像,并以日、周、月为单位分别绘制出,可以查询最大值和最小值。MRTG原本只能绘制出网络设备的流量,后来发展出了各种插件。因此,网络设备以外的其他设备也可以由MRTG监控,例如,服务器的硬盘使用容量、CPU负载等。
2.2 Cacti
Cacti(仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据,使用RRDtool绘图,但使用者无须了解RRDtool的复杂参数,它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看的树状结构、主机设备等,还可以与LDAP结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能非常强大。Cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图功能,具有强大的运算能力(数据的叠加功能)[5~6]。
2.3 SmokePing
SmokePing主要用于监视网络性能,包括常规的ping、www服务器性能、DNS查询性能、SSH性能等,底层使用RRDtool作为支持,特点是绘制的图形非常漂亮,网络丢包和延迟用颜色和阴影来表示,支持将多张图叠放在一起。
2.4 Graphite
Graphite是一个用于采集网站实时信息并进行统计的开源项目,Graphite服务支持平均每分钟4800次更新操作,采用简单文本协议,具有绘图功能,其即插即用的功能可以方便的用于任何需要监控的系统中。和其他监控工具不同的是,Graphite本身并不收集具体数据,这些数据收集的工作通常由第三方工具或插件完成(如Ganglia、Nagios、Col⁃lectd等),因此,可以说Graphite是一个绘图工具[7]。
2.5 Nagios
Nagios是一个企业级的监控系统,可以监控服务的运行状态和网络信息等,并能监控所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。Nagios可以运行在Linux和UNIX平台上,同时提供一个可选的基于浏览器的Web界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等。Nagios的功能侧重于监控服务的可用性,能及时根据触发条件报警。目前,Nagios占领了一定的市场份额,但并没有与时俱进,已经不能满足多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版Nag⁃iosXI中[8~9]。
2.6 ZenossCore
ZenossCore(简称Zenoss)是开源企业级IT管理软件,它允许IT管理员依靠单一的Web控制台来监控网络架构的状态和健康度。Zenoss的强大功能在于配置管理数据库,用于发现和管理公司IT环境的各类资产(包括服务器、网络和其他设备)。Zenoss可以创建关键资产清单和对应的组件(接口、服务、进程、已安装的软件等)。建立好模型后,Zenoss就可以监控和报告IT架构中各种资源的状态和性能状况了,同时还提供与CMDB(配置管理数据库)关联的时间和错误管理系统,以协助提高各类事件和提醒的管理效率,以此提高IT管理人员的工作效率。
2.7 Ganglia
Ganglia是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,用RRDtool存储数据,具有可视化界面,适合于对集群系统的自动化监控,其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低,目前已经有成千上万的集群正在使用Ganglia监控系统,可以轻松的处理2000个节点的集群环境。
2.8 OpenTSDB
开源OpenTSDB用Hbase数据库存储所有时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库,它支持秒级数据采集,支持永久存储,可以做容量规划,并很容易接入到现有的报警系统中。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的采集指标,并进行存储、索引和服务,从而使这些数据更容易让人理解,如Web化、图形化等。在对实时性要求比较高的场合,OpenTSDB是一个很好的选择,它支持秒级的数据采集,这在其他监控系统中是无法想象的。因得益于其存储系统的选择,所以它支持大数据分析。因此这个开源软件在未来的环境中会有更多的用户,也会获得更广泛的支持。
2.9 Zabbix
1)Zabbix概述
Zabbix是一个提供Web管理界面的企业级网络分布式监控解决方案,能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。Zabbix由zabbixserver与可选组件zabbixagent两部分构成[10]:
(1)zabbixagent需要安装在被监视的目标设备上,它主要完成对硬件信息或与操作系统有关的内存、CPU等信息的收集。
(2)zabbixserver可以通过SNMP,zabbixagent,ping、端口监视等方法获取监控数据,实现对远程设备/网络状态的监视和数据分析等功能。zabbix⁃server可以单独监视远程设备的状态,同时也可以与zabbixagent配合,轮询zabbixagent主动读取监视数据,或被动接收zabbixagent发送的数据[11]。
2)Zabbix基本功能
(1)具备常见的商业监控软件所具备的功能(服务器、网络设备、应用软件等性能监控)。
(2)具备协议监控、多种告警方式、详细的报表图表绘制。
(3)支持自动发现网络设备和服务器。
(4)支持分布式,能集中展示、管理分布式的监控点。
(5)扩展性强,提供通用接口,可以自己开发完善各类监控。
3 监控功能演示
本文以目前较为流行的Zabbix网络监控平台为例,进行网络监控基本功能的演示。
3.1 功能演示环境
首先需要搭建一个小型的网络环境,在网络环境中部署相关的服务器和客户端硬件设备,然后将需要演示验证的软件系统部署到服务器或客户端中,最后对Zabbix系统各功能进行操作演示,网络环境示意图如图1所示。演示环境中包含服务器、客户端、网络交换机等设备,其中:服务器由一台笔记本电脑构成,安装Vmware ESXI虚拟化操作系统,并在其操作系统内构建两个Linux系统服务器,分别安装Zabbix软件和其它应用服务软件(如邮件、FTP服务器等);客服端A和客户端B分别由一台笔记本电脑构建,其中在客户端B上安装可选组件zabbixagent,客户端笔记本电脑通过交换机和其他设备连通;交换机用来组建网络环境,实现服务器笔记本电脑、两个客户端笔记本电脑互联互通,网络地址分配如表1所示。
图1 网络环境示意图
表1 演示验证IP地址配置
3.2 功能演示内容
Zabbix通过收集终端信息,汇总到Zabbix服务器端统一展现和分析。首先,客户端A通过web界面登录已安装在服务器的Zabbix系统,创建监控主机(Host)、监控项(Item)等需要展示和查看的相关监控数据。通过监控内容的设置,可以实现对客户端B的被动监控,并且客户端A作为一个网络终端,也同样可以被Zabbix系统主动监控。利用Zab⁃bix自动发现功能,可以检测到交换机设备,并利用SNMP协议(交换机端SNMP协议功能需开放),可以监控到交换机各端口联通状态、端口流量等大部分信息。此外,Zabbix监控系统还可以对虚拟机(如本例中邮件服务器)进行同样的状态监控。基于所创建的上述监控信息,可进一步创建事件(Event)和动作(Action)等功能,比如通过设定某项监控数据阀值,当监控数据超过(或低于)该阀值时,触发报警事件,并根据用户设定,实现相关动作的自动执行,最常见的是当发生故障时,自动向用户发出故障报警的邮件,或者自动向故障设备发出一些简单的执行指令,修复故障以恢复状态[12~13]。
3.3 软件功能演示与技术实现
下面以我们搭建的演示环境,通过具体监控功能设置,对Zabbix系统功能设置等进行说明。
1)对客户端A设备的监控:
(1)创建监控主机:进入Zabbix系统web管理页面,点击“Create Host”,输入被监控设备的名称(TestHost)、主 机 组 名 称(testgroup)、和 IP(192.168.12.201)。
(2)添加监控项(Item):进入上步创建的Host页面,单击“Item”后选择“Create Item”,在“Name”项中输入任意名称(本例为CPU Load);在“Type”选项中选择“zabbix agent”;在“Key”栏中输入需要监控CPU负载的参数“system.cpu.load”;可以在“Type of information”中选择该监控的数据类型“Numeric(float)”。
(3)添加触发器(Trigger):Trigger是Zabbix报警的核心之一,本例将监控项关联一个触发器,当CPU负载超过某个阈值时,会触发这个Trigger。在Trigger设置页面中的“Name”中输入任意名称(本例为 CUP load is too high),在“Experssion”中输入“{TestHost:system.cpu.load.last()}>40”,这里使用Zabbix的语法定义了一个表达式,表示刚刚创建的监控项获取的数据大于40。
(4)设置动作(Action):Zabbix系统中可以由Trigger由正常变为异常时触发动作发生。如果当出现问题时,需要Zabbix发送邮件通知,则在web页面的“Administration”中选择“Media”,可以看到Zabbix已经默认定义了三种媒介:Email是邮件、Jabber是XMPP、SMS是短信。在本例中,单击Email,“Name”为该媒介的名字;Type选择 Email;SMTP为邮件服务器(如填写该环境内的邮件服务器);SMTP email是发送报警邮件的邮箱。报警邮箱设置好后,选择“Configuration”中的“Actions”单击“Create action”新创建一个Action,Action名字可任意(如CPU Load is too high);在“Condition”标签页中配置Action触发的场景,这里选择“Trigger name like CPU Load”,则Condition有三个条件如图2所示,触发条件为:服务器不在维护状态中,Trig⁃ger的状态是PROBLEM,并且Trigger的名字是“CPU Load”。通过这些条件,这个Action就和前面建立的Trigger关联起来了;在“Operation”标签页中的参数设置如图3所示,其中“User”选项可添加需要邮件通知的人员。通过上述设置,即可对客户端A的CPU负载进行监控和自动报警。
图2 Action触发条件
图3 Operation标签页选项示例
2)对客户端B设备的监控:
由于客户端B设备已安装zabbixagent组件,本例利用Zabbix系统被监控设备主动工作模式对客户端B设备监控。运行在被监控设备上的代理组件(zabbixagent)需要首先从Zabbix服务器端获取需要采集数据的监控项目列表及配置信息。而被监控设备代理组件确定它所需要连接的Zabbix服务器的方法是:从其自身的配置文件(zab⁃bix_agentd.conf)中读取ServerActive配置项内容。该配置项的值指定了被监控设备代理组件所需要连接的Zabbix服务器的IP地址或主机名,本例中将此项设为192.168.12.101;被监控项目列表及其配置信息的读取频率则是由上述配置文件中的Re⁃freshActiveChecks配置项指定,但是如果读取出错,则它将在60ns后重试。设置完该配置文件后,与对客户端A设备监控设置步骤和参数类似,仅是在监控项设置中将“Type”选项中选择“zabbix agent(active)”项。
3)对交换机设备的监控:
Zabbix可以实现通过扫描IP地址来发现监控节点,只要节点满足发现条件即可发现。本例通过配置Zabbix的自动发现(Discovery)功能来实现自动扫描交换机节点。进入“Configuration”中的“Dis⁃conery”,单击“Create rule”创建发现规则,定义该发现规则名字(如discovery switch);在“IP range”中填写 192.168.12.1-200;在“Check Type”中 选 择“SNMP v2 agent”。完成配置发现规则后,还要配置该规则触发后的动作(Action),方法步骤与前述类似,本例中在“Action”中的“Operation”标签页中设置自动添加主机监控(Add host),实现发现交换机后自动添加被监控的交换机设备;最后可以手动为该被监控设备添加监控项,步骤如前所述,仅所选参数不同:“type”选择“SNMP v2 agent”,并根据所需监控的数据填写“SNMP OID”对象标识符[14~16]。对虚拟机监控与对客户端设备监控类似,在此不再赘述。本例功能演示效果图如图4所示。
图4 运维监控系统演示效果图
4 结语
当前正处于信息化时代,IT运维是一项非常繁琐复杂的工作,尤其是对于大型现代化企业,运维成本耗费巨大,而网络监控技术是提高信息化系统运行可靠度、降低运维成本的一项重要手段,企业应该根据自身实际情况选择适合自己的监控系统和软件,应该在网络监控系统方面投入更大的精力和关注度。
[1]付贤树,朱艳超.虚拟化数据中心的IT运维管理浅谈与实践[J].电子技术与软件工程.2014,15(08):195-196.FU Xianshu,ZHU Yanchao.Discussion and Practice on IT operation and maintenance management of virtualized data center[J].Electronic technology and software engi⁃neering,2014,15(08):195-196.
[2]蔡昭权,索剑,汪华斌.基于Esper和Nagios的网络监控系统设计与实现[J].计算机工程与科学,2012,26(09):8-12.CAI Zhaoquan,SUO Jian,WANG Huabin.Design and im⁃plementation of network monitoring system based on Esper and Nagios[J].Computer engineering and Science,2012,26(09):8-12.
[3]汤兵勇.云计算概论[M].北京:化学工业出版社,2013:2-6.TANG Bingyong.An introduction to cloud computing[M].Beijing:Chemical Industry Press,2013:2-6.
[4]张术平.探讨计算机网络监控系统的应用与发展[J].无线互联科技,2014,20(05):10-11.ZHANG Shuping.Discussion of the application and devel⁃opment of computer network monitoring system[J].Wire⁃less Interconnect Technology,2014,20(05):10-11.
[5]朱姝.浅谈网络监控系统的设计思路[J].电脑知识与技术,2012,16(23):24-26.ZHU Shu.An introduction to the design idea of network monitoring system[J].Computer knowledge and technolo⁃gy,2012,16(23):24-26.
[6]李志刚.浅谈计算机网络监控系统的应用[J].吉林广播电视大学学报,2010,21(11):15-17.LI Zhigang.An introduction to the application of computer network monitoring system[J].Journal of Jilin TV&Ra⁃dio University,2010,21(11):15-17.
[7]张水平,孙云星,张凤.SOA架构的分布式网络监管系统的设计与实现[J].计算机工程与设计,2011,18(7):22-25.ZHANG Shuiping,SUN Yunxing,ZHANG Feng.Design and implementation of a distributed network monitoring system based on SOA architecture[J].Computer engineer⁃ing and design,2011,18(7):22-25.
[8]宋磊,王静文.OpenBSD下基于Nagios的网络服务监控报警系统的研究[J].电脑编程技巧与维护,2009,33(14):112-113.SONG Lei,WANG Jingwen.Research on monitoring and alarming system of network service based on Nagios of OpenBSD[J].Computer programming skills and mainte⁃nance,2009,33(14):112-113.
[9]陈子国,刘金刚.基于nagios的网络监控系统的设计和实现[J].微计算机信息,2010,31(36):32-34.CHEN Ziguo,LIU Jingang.Design and implementation of network monitoring system based on Nagios[J].Microcom⁃puter information,2010,31(36):32-34.
[10]黄俭.ZABBIX在服务器监控中的应用与研究[J].科技信息,2010,34(20):26-29.HUANG Jian.Application and research of ZABBIX in server monitoring[J].Sci-tech Information,2010,34(20):26-29.
[11]李朝阳.利用ZABBIX进行系统和网络管理[J].计算机时代,2008,29(10):31-33.LI Chaoyang.Using ZABBIX for system and network management[J].Computer age.2008,29(10):31-33.
[12]李渤,陈莹.IT的运维管理与实现[J].计算机光盘软件与应用,2013,29(18):10-13.LI Bo,CHEN Ying.Management and implementation of IT operation and maintenance[J].Software and applica⁃tion of computer CD,2013,29(18):10-13.
[13]姚仁婕.Zabbix监控系统深度实践[M].北京:电子工业出版社,2016:115-126.YAO Renjie.Deep practice of Zabbix monitoring system[M].Beijing:Electronics Industry,2016:115-126.
[14]黎皓.基于SNMP的网络性能管理系统研究[J].通讯世界,2013,42(9):8-10.LI Hao.Research on network performance management system based on SNMP[J].Communication world,2013,42(9):8-10.
[15]赵辉,胥光辉,吴君青.一种新的SNMP操作实现方法[J].计算机应用,2007,25(S1):35-37.ZHAO Hui,XU Guanghui,WU Junqing.A new imple⁃mentation method of SNMP operation[J].Computer ap⁃plication,2007,25(S1):35-37.
[16]吕斌斌.基于SNMP对服务器进行监管的研究和实现[J].湖州师范学院学报,2006,17(S1):26-29.LV Binbin.Research and implementation of server moni⁃toring based on SNMP[J].Journal of Huzhou Teachers College,2006,17(S1):26-29.
Research on System of Network Monitoring
GE Wei
(No.91872 Troops of the PLA,Beijing 102442)
With the rapid development of the information technology,the system hardware and software architecture of serv⁃ers are becoming increasingly complex,so the requirements of IT operation and maintenance are also getting higher and higher,and network monitoring technology has been paid more and more attention in IT operation and maintenance.A robust monitoring system will play an important role in IT operation and maintenance,which not only can greatly enhance the efficiency of operation and main⁃tenance,reduce errors,make operation and maintenance experts detect the faults and problems of system in time,but also through the analysis of the monitoring data,can provide data support for reconfigurable system architecture.In this paper,the mainstream open monitoring system is introduced,and the Zabbix monitoring system is taken as an example to demonstrate the basic functions of the monitoring system.
IT operation and maintenance,network monitoring
Class Number TP277
TP277
10.3969/j.issn.1672-9722.2017.12.027
2017年7月12日,
2017年8月21日
葛威,男,硕士,研究方向:计算机科学与技术、故障检测及测试诊断技术。