pidtfork 发表于 2021-12-8 16:37:14

使用SNMPv2c获取交换机端口状态Trap推送

本帖最后由 pidtfork 于 2021-12-8 16:44 编辑

SNMP

SNMP(SimpleNetwork Management Protocol)即简单网络管理协议,主要用在局域网中对设备进行管理,应用最为广泛的是对路由器交换机等网络设备的管理,当然不仅限于网络设备。SNMP分为管理端和代理端(agent),管理端的默认端口为UDP 162,主要用来接收Agent的消息如TRAP告警消息;Agent端使用UDP 161端口接收管理端下发的消息如SET/GET指令等。
SNMP协议目前在用的有3个版本,分别是V1,V2C,V3,主要差异在安全性、消息封装格式、GET效率等方面。
SNMP管理端和代理端(Agent)进行通信时,双方必须有共同的一套参数才能正常“交流”,这套参数被称作MIB(管理信息库),因文件组织格式为树形,统称MIB树。

启用设备的SNMP功能

连接前确认设备已经开启SNMPv2c协议并且您知道团体名称,您可以通过命令行或者登入交换机的web配置开启SNMP v2c协议





使用SNMP客户端软件

下载MIB browser 工具软件
直接下载exe文件即可,如果下载全平台版本需要先安装 git和 java 环境
软件加载IF-MIB标准MIB即可,其他功能测试可以去华为某交换机软件下载页面去下载华为交换机的MIB文件,如果时华为终端也可以去华为终端页面下载终端的MIB库。
记录对应接口或功能的 OID 值,在中控中将使用OID读取对应配置和状态。

关于中控的SNMP客户端

中控中实现了 ASN.1规范中的 BER 编解码,SNMP是基于BER编码的,中控基于SNMP v2c版本实现了get、getNext、getBulk三个最常用的请求,支持所有响应报文包括Trap报文,Trap报文是设备主动发送的报文,如设备接口变化,CPU异常等告警信息会主动推送。
Trap服务在中控中和SNMP客户端是分开的,所以能支持一台中控运维监视多台SNMP设备,可以通用接收报文的团体名称或者源IP来区分多台设备。
SwitchDevice 构造函数是专门为交换机实现的,里面安装交换机类设备的固有报文格式封装好了流程和 OID 值,所以使用时可以不用去配置OID值,只需要剔除多余的接口状态即可,提供了直接与运维2.0对接的方法,直接调用即可。
同时Trap 报文可以直接推送到 SwitchDevice 实例中,这样不仅可以定时获取接口状态也可以告警推送,能做到网线断开立刻反馈。
interfaceSpeed是专门用来获取交换机、网关设备的接口流量的。SwitchDevice 内置了方法可以计算所有接口的流量的,因为获取接口带宽需要高频的获取数据,会有较大带宽和中控日志文件问题所以特意弱化了此功能。使用更简单的方法更高频率来获取特定端口的输入输出数据。

使用请参考 ubainsSNMPv2c.mini.js 文件,里面包含 使用示例 和 数据格式示例









页: [1]
查看完整版本: 使用SNMPv2c获取交换机端口状态Trap推送