前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SNMP Trap调试记录[通俗易懂]

SNMP Trap调试记录[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-24 10:09:41
2.7K0
发布2022-09-24 10:09:41
举报

大家好,又见面了,我是你们的朋友全栈君。

目录

一、Trap与Inform

二、Trap

1、Agent端工作流程

2、Manager端工作流程

3、流程图

三、调试

四、SNMP中预定义的trap



一、Trap与Inform

SNMP Inform Requests功能允许路由器向SNMP管理器发送通知请求。

路由器可以在发生特定事件时向SNMP管理器发送通知。例如,代理路由器可能在自身遇到错误情况时向管理器发送消息。通知有两种格式:Trap和Inform。

Trap是不可靠的,因为接收器在收到Trap时不发送任何确认。发件人无法确定是否收到了Trap。但是,接收Inform请求的SNMP代理使用SNMP response PDU确认该消息。如果代理未收到Inform请求,则不会发送回复。如果发送方从未收到响应,则可以再次发送Inform请求。因此,Inform更有可能到达其预期目的地。

因为它们更可靠,所以Inform在路由器和网络中消耗更多资源。与Trap一起发送时丢弃的Trap不同,必须在内存中保留Inform请求,直到收到响应或请求超时。此外,Trap仅发送一次,而Inform可能会重试几次。重试会增加流量并导致网络上的开销增加。因此,Trap和Inform请求提供了可靠性和资源之间的权衡。如果SNMP管理器收到每个通知很重要,请使用Inform请求。另一方面,如果您担心网络上的流量或路由器中的内存,并且您不需要接收每个通知,请使用Trap。

二、Trap

SNMP Trap是SNMP的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。通过告警事件,管理站可以通过定义好的方法来处理告警。

1、Agent端工作流程

①编写MIB文件,确定好TRAP名称等信息(一般MIB设备厂商会提供)

②命令方式:发送各种TRAP命令(Manager地址后面一定要加端口号162),在Manager端看反应结果,在Agent端无反应

③自动触发:配置snmpd.conf设置触发TRAP,系统发生某类错误时会自动触发相应类型的TRAP,发送给Manager

④程序方式:一部份TRAP需要写C语言程序,用相应的api(send_easy_trap或send_v2trap)发送

2、Manager端工作流程

①配置snmptrapd.conf文件,设置访问权限

②将MIB文件导入到mibs文件夹中

③用perl等脚本语言编写处理trap的程序

④配置snmptrapd.conf文件,添加traphandler项,将不同的TRAP对应到不同的处理程序上

3、流程图

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

图中在测试机 M1 上启动 snmptrapd 进程,并且在 UDP 162 端口上监听 SNMP Trap 信息,一旦收到 Trap,snmptrapd 将所接收到的 Trap 信息内容打印到一个本地的文本文件中。 机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。

三、调试

snmptrapd安装路径:/usr/local/sbin/snmptrapd

其配置文件路径:/usr/local/sbin/snmptrapd.conf

添加如下配置文件内容:

authCommunity log,execute,net public

上面语句指明以“public”为“community”请求的snmp “notification”允许的操作。上面添加的是比较简单的配置,但可使snmptrapd程序运行起来并正确接收trap包。

服务器运行:

sudo snmptrapd -d -f -Lo

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

上面命令中的选项表示:

-C:表示不使用net-snmp默认路径下的配置文件snmptrapd.conf;

-c:指定snmptrapd.conf文件;

-d:显示收到和发送的数据报,通过这个选项可以看到数据报文;

-f:默认情况下,snmptrapd是在后台中运行的,加上这个选项,表示在前台运行;

-L:指定日志记录在哪里,后面的o表示直接输出到屏幕上,如果是跟着f表示日志记录到指定的文件中;

可通过snmptrapd -h查看命令帮助了解该命令的使用。

客户端运行:

sudo snmptrap -v1 -c public [管理端IP] 1.3.6.1.4.1.1 [代理端IP] 2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s test_snmptrap

各参数含义:

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

snmptrapd和snmptrap都在虚拟Ubuntu中执行的,所以snmp管理端IP和snmp代理IP一样。执行后,在执行snmptrapd的窗口中可接收到数据,如下:

代码语言:javascript
复制
Received 82 byte packet from UDP: [192.168.11.129]:38271->[192.168.11.129]:162

0000: 30 50 02 01  00 04 06 70  75 62 6C 69  63 A4 43 06    0P.....public.C.

0016: 06 2B 06 01  04 01 01 40  04 C0 A8 0B  81 02 01 02    .+.....@........

0032: 02 01 03 43  02 03 E8 30  29 30 0E 06  09 2B 06 01    ...C...0)0...+..

0048: 09 09 2C 01  02 01 02 01  0C 30 17 06  06 2B 04 01    ..,......0...+..

0064: 02 03 01 04  0D 74 65 73  74 5F 73 6E  6D 70 74 72    .....test_snmptr

0080: 61 70                                                 ap



2019-05-22 10:49:36 61 [192.168.11.129] (via UDP: [192.168.11.129]:38271->[192.168.11.129]:162) TRAP, SNMP v1, community public

SNMPv2-SMI::enterprises.1 Link Down Trap (3) Uptime: 0:00:10.00

SNMPv2-SMI::internet.9.9.44.1.2.1 = INTEGER: 12 SNMPv2-SMI::org.4.1.2.3.1 = STRING: "test_snmptrap"
SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

上线:

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

下线(服务器端):

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

上线(代理端):

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

上线(服务器端):

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

测试(服务器端):

SNMP Trap调试记录[通俗易懂]
SNMP Trap调试记录[通俗易懂]

四、SNMP中预定义的trap

snmp协议中定义了6种基本的trap,这6种trap可以涵盖大部分设备的主要状态改变,与企业自定义trap配合使用,就可以处理几乎所有的重要状态改变情况。

(1).coldStart:snmp发送实体正在重新初始化,以修改代理的配置或协议实例的实现,特别是由于崩溃或重大故障而引起的意外重启。

(2).warmStart:发送实体正在重新初始化,但不修改代理的配置或协议实例的实现。

(3).linkDown:表示代理的一个通信连接失败。

(4).linkUP:表示代理的一个通信连接成功。

(5).authenticationFailure:表示发送方的snmp消息检验失败

(6).egpNeighborLoss:表示发送协议实体的EGP邻居已被标记为Down,相邻关系已经不存在。

企业专用trap:snmp定义的6个trap可以涵盖大部分的情况,但是很多情况下设备有自己特殊的状态,企业也希望发送或接收自己定义的trap以得到特殊的消息。使用trap定义宏就可以定义企业自己的trap。企业设备发送自定义trap时,必须同时定义trap的MIB一起分发出去,否则,其他管理站不能识别自定义trap的格式。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171354.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Trap与Inform
  • 二、Trap
    • 1、Agent端工作流程
      • 2、Manager端工作流程
        • 3、流程图
        • 三、调试
        • 四、SNMP中预定义的trap
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档