13

基于 Python 的交换机实时监控系统的设计与实现

 4 years ago
source link: https://mp.weixin.qq.com/s/jiz9IqouP4cVS0iUs_O_9Q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从高校校园网运维工作实际出发,论文提出了一种基于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。

B3eMFne.png!web

图1MIB组织结构图

1.5设计思路与系统架构

实际工作中,当某个楼宇的用户提交报修请求时,一般先登录该楼宇交换机,然后查看交换机上联端口是否正常,再根据用户的房间号查找该用户对应的端口,并检查端口的各种状态信息,这个过程通过命令行实现,比较费时,结果展示不友好,工作效率低。

因此从实际工作出发,为了提高工作效率和减少故障定位时间,当某个楼宇的用户提出报修请求时,工作人员无论在何时何地都可以直接通过浏览器打开系统首页,选择相应的楼宇,实时获取该楼宇交换机的所有端口的详细状态信息,并以不同的颜色对端口状态进行标识,同时把整个交换机的所有端口状态都在一个页面中展示,使得结果一目了然,信息展示清晰直观,端口状态对比明显,极大的提高了故障处理效率。系统流程如图2所示。

eUZjye7.png!web

图2系统流程图

本系统采用B/S结构,使用web.py作为框架。前端使用html5+CSS实现页面效果和布局控制,后端使用Python+SNMP协议通过交换机管理IP登录相应的交换机,实时获取交换机的启动时间、工作状态等数据,生成静态页面推送至前端发布,用户通过任意联网终端使用浏览器即可方便实时查看所选交换机设备及端口工作状态等数据。系统架构如图3所示。

rYN7j2m.png!web

图3系统架构图

1.6重要数据与关键代码

对交换机进行监控,主要是监控交换机的端口流量、状态、交换机启动时间、CPU使用率、内存状态等,关键是找出与之相对应的OID。OID的获取比较容易,一般设备厂商都有相应的文件提供下载。通过下载的MIB文件,查找出需要的状态对应的OID,然后读取设备的OID数据即可。本系统中访问的设备都是锐捷的交换机,对应的OID表如表1所示。

表1系统相关的OID列表

z6fMbyz.png!web

而另外一些参数MIB中没有直接对应的OID数据,例如端口5分钟内吞吐量等,为了获取这部分数据,我们使用Python的Telnetlib模块,通过自动化脚本远程访问交换机,来获取这些数据。

因篇幅原因,仅贴出部分代码。

zm26RnF.png!web

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 Linux4.4.0-154-generic

可以看出,本系统对软硬件配置要求低,普通计算机即可承担。 系统使用简单,不需要对系统环境进行任何配置,只需在后台通过一条命令即可启动服务器端程序并绑定端口号,启动后客户端即可通过浏览器进行访问。 系统的主页面如图4所示。

qQvumyn.png!web

图4系统主界面

首先通过以下界面提交楼宇交换机信息,如图5所示。

feq2Ina.png!web

图5客户端选择楼宇

提交之后系统实时反应,以静态网页的形式展示当前交换机的各种状态信息。 如图6所示。

yiQBfqR.jpg!web

图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年第一期 (为便于排版,已省去原文参考文献)

往期精彩

现代浏览器中Cookie同源策略测试框架的设计与实现

  网络流量管理系统中队列管理器的设计与实现

云安全的三宗罪

深度伪造技术的法律挑战及应对

一种面向敏感身份的安全认证方案

网络空间武器化的发展态势及影响

深度伪造对国家安全的挑战及应对

思想库  情报站  动力源

网址: http://www.txjszz.com

热线:010-88203306

IJZbya3.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK