从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法。整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现。后端采用Python编程语言实现对交换机各项数据的获取,实时数据以HTML页面的形式供系统前端访问。
该系统一方面能协助校园网管理运维人员快速及时定位网络交换机故障,提高了和快速反应能力和工作效率,另一方面通过对交换机性能的监控,为实现对交换机的性能调优提供数据支持。
随着互联网及其应用的飞速发展,新技术不断涌现,高校校园网作为多种网络接入的先行试点,为数字化校园、信息化系统建设提供了契机,在一定程度上引领了网络的发展,提升自身竞争力和对外形象。 这对校园网的通畅运行也提出了更高的要求。 一旦出现断网情况,及时定位故障点和故障类型对于恢复网络畅通尤其重要。
传统的网络运维方式多为人工处置方式,判断网络设备问题多是依据个人经验,存在工作效率低,不能准确定位故障,网络恢复时间长等现象。
随着校园网络的不断发展、建设,网络应用和结构日益复杂,传统的网络运维方式已经无法满足运维的要求,亟需一款通用的、可查看末端设备网络状态、精确定位网络故障并可远程快速判断故障原因的应用系统进行支撑。
而将 Python 设计语言应用于网络运维之中可以提高运维效率,降低运维成本。
01
关键技术与系统实现
本系统的设计初衷即要求系统要具有跨平台特征、易实现、开发效率高和简单部署,因此选择了目前在最流行的Python语言作为实现工具。同时为了避免频繁登录交换机影响设备运行,通过SNMP协议来获取交换机的各种参数数据。
1.1Python
Python作为使用率上升最快的面向对象编程语言,具有简单易用、开发效率高、兼容性好、可扩展性好等特点,并且拥有功能强大、丰富的库资源,广泛应用于人工智能、大数据、物联网等新型领域。本系统采用成熟稳定的Python 2.7版本实现服务器端程序代码。
1.2web.py
为了便于部署和方便用户使用,使用开源项目web.py作为系统的开发框架。
web.py 内置了web服务器,相当的小巧、简单,归属于轻量级的web框架,但功能强大,而且使用起来简单、直接。
1.3SNMP
SNMP,简单网络管理协议(SimpleNetwork Management Protocol),是已经投入使用的工业标准,它属于 TCP/IP 协议中的应用层协议。SNMP 主要用于网络设备的管理。由于 SNMP 协议简单可靠,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
SNMP协议,一般基于UDP传输,目前版本是v3版本,提供了认证和加密安全机制。SNMP一般主要由网络设备、Agent和管理组件构成,其中Agent组件是网络设备和管理组件的中间件,是驻留在网络设备中的程序进程,它收集设备的管理信息并与管理组件交互。
SNMP对外提供了三种用于控制MIB对象的基本操作命令,它们是:Get、Set 和 Trap,可以查询设备信息、修改设备的参数值、监控设备状态、自动发现网络故障、生成报告等。本系统在Ubuntu Server系统上使用Python的Pysnmp模块部署了相应服务。
1.4MIB
MIB库,全称Management Information Base,相当于数据库。存储了被监控设备的各种参数和状态信息等。每个被管理的设备都需要有MIB库的存在,我们才能对设备进行管理。
MIB库中定义了可访问的网络设备及其属性,通过OID(Object IDentifier,对象标识符,唯一标识一个MIB对象),Object Identifer来区别。MIB采用分级树形结构,结构类似于DNS,以下是结构图:
网络设备的各个相关配置、数据等描述,均由OID来标识。通过从MIB树的根部进行遍历,可以获取整个网络设备所管理的对象的值或描述。如图1所示,1.3.6.1.2.1就代表iso.org.dod.internet.mgmt.mib。
图1MIB组织结构图
1.5设计思路与系统架构
实际工作中,当某个楼宇的用户提交报修请求时,一般先登录该楼宇交换机,然后查看交换机上联端口是否正常,再根据用户的房间号查找该用户对应的端口,并检查端口的各种状态信息,这个过程通过命令行实现,比较费时,结果展示不友好,工作效率低。
因此从实际工作出发,为了提高工作效率和减少故障定位时间,当某个楼宇的用户提出报修请求时,工作人员无论在何时何地都可以直接通过浏览器打开系统首页,选择相应的楼宇,实时获取该楼宇交换机的所有端口的详细状态信息,并以不同的颜色对端口状态进行标识,同时把整个交换机的所有端口状态都在一个页面中展示,使得结果一目了然,信息展示清晰直观,端口状态对比明显,极大的提高了故障处理效率。系统流程如图2所示。
图2系统流程图
本系统采用B/S结构,使用web.py作为框架。前端使用html5+CSS实现页面效果和布局控制,后端使用Python+SNMP协议通过交换机管理IP登录相应的交换机,实时获取交换机的启动时间、工作状态等数据,生成静态页面推送至前端发布,用户通过任意联网终端使用浏览器即可方便实时查看所选交换机设备及端口工作状态等数据。系统架构如图3所示。
图3系统架构图
1.6重要数据与关键代码
对交换机进行监控,主要是监控交换机的端口流量、状态、交换机启动时间、CPU使用率、内存状态等,关键是找出与之相对应的OID。OID的获取比较容易,一般设备厂商都有相应的文件提供下载。通过下载的MIB文件,查找出需要的状态对应的OID,然后读取设备的OID数据即可。本系统中访问的设备都是锐捷的交换机,对应的OID表如表1所示。
表1系统相关的OID列表
而另外一些参数MIB中没有直接对应的OID数据,例如端口5分钟内吞吐量等,为了获取这部分数据,我们使用Python的Telnetlib模块,通过自动化脚本远程访问交换机,来获取这些数据。
因篇幅原因,仅贴出部分代码。
02
系统运行环境及结果展示
本系统基于Python2.7.12和Pysnmp4.2.5实现,使用web.py3.0作为web框架,硬件配置为:
CPU: Intel Corei5-6600 CPU @ 3.9GH
RAM: 11945MiB
软件环境为:
操作系统: Ubuntu16.04 xenial或windows2008 R2
内核: x86_64 Linux 4.4.0-154-generic
可以看出,本系统对软硬件配置要求低,普通计算机即可承担。 系统使用简单,不需要对系统环境进行任何配置,只需在后台通过一条命令即可启动服务器端程序并绑定端口号,启动后客户端即可通过浏览器进行访问。 系统的主页面如图4所示。
图4系统主界面
首先通过以下界面提交楼宇交换机信息,如图5所示。
图5客户端选择楼宇
提交之后系统实时反应,以静态网页的形式展示当前交换机的各种状态信息。 如图6所示。
图6系统运行界面
以笔者本单位的所有楼宇交换机为实验对象对本系统进行了测试,结果表明,本系统都能在规定的时间内获取到对应交换机的状态信息,大大缩短了用户故障的处理时间,提高了工作效率,同时根据各个端口的数据比对,对流量过大的端口上用户及时发出预警信息,降低了设备的故障率。
03
对比与反思
目前用于网络应用系统监控的软件比较多,多以通用软件的形式出现,而且大多配置复杂,跨平台性和可移植性差,无法满足用户的个性化需求。 而有的系统比较庞大,需要单独占用一台硬件设备作为系统运行的平台,造成资源浪费。
比如MRTG(Multi Router TrafficGrapher,MRTG),主要监控网络链路流量负载,也就是只对交换机的上行端口流量进行监控,而对于其他下行状态等参数却无法展示给用户。 而Cacti系统虽然可以监控多种设备,但是系统庞大,安装、配置复杂。
相当于其他功能类似的监控系统,本系统也是基于snmp协议实现对交换机的访问,本系统的优点在于,系统实现架构简单,文件结构清晰,软件小巧,目前整个系统大约3MB,非常方便进行系统部署和迁移。 系统基于由python和web.py实现,所以具有良好的跨平台特征,在windows和linux下测试都获得成功。
同时因为系统小巧,对平台的要求不高,不需要单独占用整台服务器资源,节省了资金费用。 本系统监控整个交换机的所有上行端口和下行端口状态和参数,且同页显示。 更重要的是,本系统立足于实际,需求从日常的网络维护工作中提出,目的是解决日常工作中的交换机故障,能够满足个性化需求,属于定制开发,更能解决实际工作中遇到的问题。
04
总结与展望
本系统通过Python与SNMP的完美结合,实现了实时获取特定楼宇交换机启动时间、资源使用率、端口状态、端口流量以及端口当前下联设备的MAC地址,展示效果清晰直观,用户使用简单方便。
当有校园网用户反映网络问题时,管理人员根据以上数据可以实现对网络故障进行精确定位和类型判断,大大减轻了管理人员的工作量,缩短了故障定位时间,提高了定位精度和故障处理效率,提升了网络服务形象、管理效率和服务水平,也极大改善了用户的上网体验。 通过规范化、流程化和标准化的服务,极大地提高了故障应急处理能力。
为了扩展系统功能,实现对交换机的更加高效、方便管理,下一步将增加交换机端口的远程管理功能,同时利用python强大的数据分析和处理功能,持续获取所管理交换机的工作状态的实时数据,对交换机在不同时间段内的工作状态和性能进行跟踪,从而支持网络管理人员校园网规划方案和带宽管理策略,最大限度发挥交换机的性能,提高校园网的使用效率。
同时增加端口重启功能和交换机端口流量异常增加预警功能,配置SMTP服务器的邮件提醒和SMS短信平台监测提醒服务,当交换机等末端设备掉电时,管理人员会收到邮件或短信通知,预判问题,争取在终端用户无感知的情况下尽早解决问题,更好的做好服务工作,保障校园网络的实时畅通,为数字化校园、智慧校园、教学信息化做好支撑工作。
作者简介 >>>
颜伟 (1972—),男,硕士,高级实验师,主要研究方向为计算机网络及通信技术;
张超 (1992—),男,硕士,助理实验师,主要研究方向为机器学习,大数据。
选自《通信技术》2020年第一期 (为便于排版,已省去原文参考文献)
往期精彩
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 为何要用到三层交换机?监控系统中三层交换机选择的七项指标
- 基于 Python 的交换机实时监控系统的设计与实现
- 网络基本功之细说交换机
- 深度解析SDN交换机配置及应用问题
- 运维中交换机的常见问题及如何处理
- Phoenix工业交换机曝漏洞 石油、能源和海事受影响
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Collective Intelligence
Toby Segaran / O'Reilly Media / 2007-8-26 / USD 39.99
Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the......一起来看看 《Programming Collective Intelligence》 这本书的介绍吧!