网管收不到S系列交换机的SNMP Trap信息
简介
本文档主要介绍网管无法收到交换机SNMP Trap信息时的处理方法。
Trap信息是交换机基于SNMP协议主动上报到网管系统的告警、恢复告警和事件通知。在实际应用中,习惯把Trap直接称为告警,为便于理解,下文中的告警和Trap是同一个含义。
如上图所示,交换机产生告警并上报给网管的这一完整行为中,告警在交换机、网管以及二者之间的网络中都有可能丢失。
前提条件
本文档适用于S系列交换机所有款型的所有版本,本文档中的网管以eSight网管系统为例,交换机以V200R019C10版本为例。
网管能够收到交换机SNMP trap消息的前提是网管已经成功纳管交换机,所以本文档是以网管已经成功纳管交换机为前提进行描述的。
检查网管的Snmp Trap Port是否被占用
交换机发送告警的端口号是随机分配的,但网管接收告警的SNMP port是固定的UDP端口号162,当162端口号被占用时,网管就无法收到交换机的告警信息。eSight网管支持部署在Windows系统、SUSE Linux系统、EulerOS系统,针对不同系统可以按照下面方法判断SNMP port是否被占用。
- 检查Windows系统下Trap Port是否被占用
- 在“运行”窗口中通过netstat -aon | findstr 162查看UDP 162端口对应的PID,下图中是12884。
- 在“任务管理器”进程中查看该PID对应的进程名,因为eSight的进程名是java,所以若进程名不是java,说明162端口被其他软件占用。
修改方法:
在Windows操作系统的“任务管理器”进程中,关闭UDP 162对应的PID进程,然后重启eSight网管软件。
- 在“运行”窗口中通过netstat -aon | findstr 162查看UDP 162端口对应的PID,下图中是12884。
- 检查SUSE Linux系统、EulerOS系统下Trap Port是否被占用
在SUSE Linux系统、EulerOS系统下,UDP Port 162会自动映射为10162,所以需要检查10162端口是否被占用。
- 使用命令netstat –anp | grep 162查看占用端口的进程ID。
- 使用命令ps aux | grep 7898查看进程ID对应的业务名。7898是上一步中的进程ID。
若进程ID对应的业务名不是eSight,说明端口被其他业务占用。
修改方法:
执行命令kill -9 杀死对应的进程ID,然后重启eSight网管系统。
- 使用命令netstat –anp | grep 162查看占用端口的进程ID。
检查网络中的防火墙是否放行Trap报文
防火墙默认丢弃所有的报文,只有在防火墙策略中放行的报文才能正常转发。如果防火墙中没有Trap报文对应的策略,Trap报文将无法发送到网管。
例如交换机的配置如下:
snmp-agent snmp-agent local-engineid 800007DB032CAB009815C0 snmp-agent community read cipher %^%#*st8U]NHG)dZ.:T_Ys~N\](o8YsWU=k(5MGm87^/=<;#5gHcG2LBc(R*88.P#IkQ~-JR$STyAORB=(e=%^%# mib-view test snmp-agent sys-info version all snmp-agent target-host trap address udp-domain 10.10.10.10 params securityname cipher %^%#tRFS8{]e{AY=)C$50[hJ<!)Z5ZLU{BlJKh&Q2CE9%^%# v2c snmp-agent trap source LoopBack0 //说明Trap携带的源地址是LoopBack0的IP地址 snmp-agent trap enable
在防火墙添加放行Trap报文的策略时,需要注意策略中的:
- 源IP地址是命令snmp-agent trap source指定LoopBack0的IP地址
- 目的IP地址是命令snmp-agent target-host指定的网管的IP地址
- 服务类型是snmptrap
检查交换机的Trap缓冲区中是否存在对应的告警信息
执行命令display trapbuffer查看Trap缓冲区中是否存在对应的告警信息。如果不存在,则说明交换机没有产生告警,网管也就无法收到告警,此时可以通过检查交换机的如下配置进行排查:
- 检查对应的告警开关是否开启。
告警开关可以通过告警所属的模块名查看,模块名可以查询产品文档中告警处理章节。
例如,告警处理章节中接口Down的告警为:IFNET_1.3.6.1.6.3.1.1.5.3 linkDown,说明接口Down所属的模块是IFNET。通过指定其所属模块IFNET,查看回显中的linkDown字段,判断接口Down的告警开关是否开启。执行命令snmp-agent trap enable feature-name feature-name [ trap-name trap-name ]可以打开对应的模块对应告警的开关。<HUAWEI> display snmp-agent trap feature-name ifnet all ------------------------------------------------------------------------------ Feature name: IFNET Trap number : 15 ------------------------------------------------------------------------------ Trap name Default switch status Current switch status ...... linkDown off on linkUp off on ......
- 检查交换机是否满足告警触发的条件。
例如,只有当交换机的CPU使用率超过告警门限时,才会产生CPU高的告警。缺省情况下的CPU告警门限是95%,恢复告警门限是80%,可以通过命令set cpu-usage threshold修改。
- 检查告警是否被过滤掉。如果交换机上配置了info-center filter-id bymodule-alias modname alias命令,即使交换机打印了该告警,网管也无法收到该告警。例如,如果接口UP/Down的告警被过滤掉,交换机上会存在如下配置。执行命令undo info-center filter-id bymodule-alias modname alias删除过滤配置。
info-center filter-id bymodule-alias IFNET IF_LINKUP info-center filter-id bymodule-alias IFNET IF_LINKDOWN
检查交换机配置的Trap主机协议版本与SNMP使能的协议版本是否一致
SNMP协议有三个版本:v1、v2c和v3。交换机配置的Trap主机版本与SNMP使能的版本不一致会导致网管无法收到Trap信息。在配置Trap主机时需要注意SNMP使能了哪个版本,未配置时默认使用v1。
snmp-agent snmp-agent local-engineid 800007DB033400A3D84ECA snmp-agent community read cipher %$%$S3Qp9LT`25*T=ZL=(vS$S!j.BEqp1C(ss;b28h37cb5V!j1Su-bH3)\,6V~*-5ASuvd9j:S!%$%$ snmp-agent community write cipher %$%$iwMf;[j>rA;F9*(:f^)RS!jScmYKI.u3h*bf[GJivizT!jVSa`E#BZ63XP+>&.'[+zwDj_S!%$%$ snmp-agent sys-info version v2c //snmp协议仅使能SNMPv2c版本 undo snmp-agent sys-info version v3 snmp-agent target-host trap address udp-domain 10.10.10.10 source Vlanif800 params securityname cipher %@%@%8$!GUNhxN'Db'VHj^6S*JOF%@%@ //未配置交换机发送Trap消息使用的SNMP版本,默认使用SNMPv1版本 snmp-agent trap enable
修改方法:
方式1:配置Trap主机的版本为v2c。
snmp-agent target-host trap address udp-domain 10.10.10.10 source Vlanif800 params securityname cipher %@%@%8$!GUNhxN'Db'VHj^6S*JOF%@%@ v2c
方式2:SNMP协议使能的版本为v1。
snmp-agent sys-info version v1