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

从高校校园网运维工作实际出发,论文提出了一种基于 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年第一期 (为便于排版,已省去原文参考文献)

往期精彩

思想库  情报站  动力源

热线:010-88203306

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计兰州交通大学C语言课程设计报告(完整版).doc12页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整…

python manager与basemanager_使用Python多处理管理器(BaseManager/SyncManager)与远程计算机共享队列时出现管道中断...

在上个月,当我们试图使用Python2.6.x多处理包在几个不同的(linux)计算机之间共享队列时,我们遇到了一个持久的问题。我也直接向Jesse Noller提出了这个问题,因为我们还没有找到任何解释StackOverflow、Python文档、源代码或其他在线问题的东西…

Lucene 工作原理

Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下:0)设有两篇文章1和2文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.文章2的内容为:He once lived …

导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用

转自EXCEL不加班今天分享文本之王TEXT函数的4个运用,跟着卢子一起来操作。1.发票号都是8位,从系统导出后前面的0消失,如何补齐?常规格式发票号前面的0都会消失,只有文本格式情况下的0才不会消失。事先录入的话&#xf…

c 语言读取注册表信息,C++读取注册表的实现方法

C读取注册表GetRegValue.h:#ifndef __GETREGVALUE_H__#define __GETREGVALUE_H__#include //---------------------------------------------------------------//function:// GetRegValue 获取注册表中指定键的值//Access:// public//Parameter:// [in] int nKeyType - 注册表…

java传值问题.

Java传递参数只有一种 :值传递 而没有引用传递 一般根据传递类型来分类 可以分为 值类型数据 和 引用数据类型 值类型是原始数据类型 包括 int,byte,char short long,boolean,float,double 引用类型就是一般的class类 当然也包括原始数据的封装类型 比如int的 封装类…

stm32按键矩阵代码_STM32 学习笔记---1

既然打算学,基础的东西元件的得知道是什么,这样写代码的时候才能知道自己在干什么!ROM 和Flash 断电后都能储存数据,RAM则不能其实闪存(flash)是ROM的一种它的全名---FLASH EEPROM EEPROM---电可擦除可编程…

c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形,所以花了点时间研究各种包络提取的算法。所谓包络检测又叫幅度解调,在许多领域都有重要的应用。如果载波信号是确定的,那么通常可以采用同步解调的方式,这种方式的信噪比最好,…

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时,总是被截断,无法执行的错误解决方案 1 典型的错误信息如下: 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个…

python交换数组中的两个元素_[Python]华为面试题,交换两个数组的元素使之总和的差值最小。...

看看写了个 &#xff0c;实现不需数组长度一致&#xff0c;复杂度O(n^2),求好的算法/** arr1{1,2,3};* arr2{22,33,44,55};* 交换两个矩阵数据*/public void exchange(){int index0;int lenarr1.length;int currMinusgetMinus();while(true){for (int i 0; i < arr2.length…

c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break

先来看一个没有break的例子&#xff1a;int main(){int a 1;switch (a){case 1:printf("1");case 2:printf("2");}}我们看一下它的汇编代码&#xff1a;switch (a)0137181F mov eax,dword ptr [a]01371822 mov dword ptr [ebp-0D0h],eax01371828 cmp dwor…

VC中ADO连接SQLSERVER的几种标准方式?

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法&#xff0c;很经典&#xff0c;也很实用&#xff0c;很值得一看。 正文 一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的&#xff0c;是一个便于使用的应用程序层接口。ADO 使您…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…

linux smb 启动失败,[已解决]windows能看到smb,但是打不开

xiadao_81 于 2010-01-15 16:32:31发表:还是不行啊&#xff01;郁闷&#xff01;还会哪里原因的&#xff1f;我把配置中没有注释的全拿出来了74 workgroup mshome75 server string Samba Server76 guest okyes77 guest accountroot102 security share103 passdb backend td…

String类的构造与析构相关处理

String类原型&#xff1a; 1 Class String2 {3 Public:4 String(constchar*str);5 String(constString &other);6 ~String(void);7 String&operator(constString &other);8 Private:9 char*m_data;10 };String的析构函数 1 String::~String(void)2 {3 delete []m_d…

cocos2dx 字体外发光_在电致发光研发领域,选择有机材料是基于哪些原因?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

android点击下拉历史记录,uni-app,社交应用中,聊天页面下拉onPullDownRefresh获取历史消息,数据合并之后,滚动到下拉之前的位置,页面看不见闪动,完美解决...

一般下拉之后&#xff0c;拿到数据合并&#xff0c;会默认展示顶部第一条&#xff0c;模仿其他聊天应用&#xff0c;回到下拉之前位置&#xff0c;如果不做处理&#xff0c;可以看见下拉得到的数据&#xff0c;本方法完美解决有问题可以留言或者加qq445849201讨论&#xff0c;亲…

WebOS + WebIM

此已文重新编辑.WebOSWebOS 是基于web技术实现的类似于桌面操作系统交互风格的应用程序。实现WebOS的主要技术可以是JavaScript或者是RIA(Flex\SL)。在JS领域内的最强大和最著名的可能要数eyeos了。本文所述的WebOS也是采用JavaScript开发的。图1&#xff1a;此应用主要是用于大…

雨滴桌面rainmeter素材_win10 桌面如何做到清爽好看?这篇教程给你答案

当一个电脑用的时间长了以后&#xff0c;难免就会变得非常杂乱。伟大的领袖曾经说过&#xff0c;要像倒腾自己的发型一样折腾好自己的桌面。道理咱都懂&#xff0c;可是大家动起手来就傻眼了&#xff0c;这啥玩意啊&#xff0c;算了吧&#xff0c;还是不弄了。本着慈悲为怀&…

met40如何升级成鸿蒙系统,再见了,EMUI11!你好,华为鸿蒙!

本文原创&#xff0c;请勿抄袭和搬运&#xff0c;违者必究鸿蒙终于来了华为研发鸿蒙OS已经有四五年的时间&#xff0c;诞生时间比大家想象的还要早&#xff0c;并不是为了替代安卓和专门推出的鸿蒙。因为从一开始华为就确定鸿蒙OS是一款面向万物互联时代的操作系统。从华为面向…