Snmp trap的配置与使用
trap的用途
TRAP是提供从代理进程到管理站的异步报告机制为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时 向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析trap的工作流程
agent端:
编写mib文件,确定好trap名称等信息。
命令方式:发送各种trap命令(manager地址后面一定要加端口号162),在manager端看反应结果,在agent端无反应以下都未实现
自动触发:配置snmpd.conf设置触发trap,系统发生某类错误时会自动触发相应类型的trap,发送给manager
程序方式:一部份trap需要写c语言程序,用相应的api(send_easy_trap 或 send_v2trap)发送
manager端:
配置snmptrapd.conf文件,设置访问权限
将mib导入到mibs文件夹中
用perl等脚本语言编写处理trap的程序
配置snmptrapd.conf文件,添加traphandler项,将不同的trap对应到不同的处理程序上
trap的环境配置
1 manager端
建立/usr/share/snmp/snmptrapd.conf(不同机器不同,可能有的放在/etc/snmp,/usr/local/share/snmp/下,)加入以下一行:
authcommunity execute,log,net public设置所有用户的访问权限:可执行,记录,传递
命令方式的过程
1处理系统默认的trap
添加以下几行到snmptrapd.conf中:
traphandle ...1 page_me uptraphandle ..4.1.2021.251.1 page_me up
traphandle ..4.1.2021.251.2 page_me down
traphandle default log_it
用sudo snmptrapd -d -f -Lo启动snmptrapd
PS: 如果snmptrapd启动不起来是因为在安装net-snmp的时候有些模块没有安装上,可以通过:
./configure --with-mib-modules="examples/notification"
make
sudo make install
来进行安装trap相关的模块。
然后在agent端输入:
snmptrap -v 2c -c public :162 "" UCD-SNMP-MIB::ucdStart
Manager端反应:
NET-SNMP version
Received 73 bytes from UDP: []:41244
0000: 30 47 02 01 01 04 06 70 75 62 6C 69 63 A7 3A 02 0Gpublic.:.
0016: 04 42 8A 48 EC 02 01 00 02 01 00 30 2C 30 10 06 .B.H0,0..
0032: 08 2B 06 01 02 01 01 03 00 43 04 00 88 86 97 30 .+C0
0048: 18 06 0A 2B 06 01 06 03 01 01 04 01 00 06 0A 2B ...++
0064: 06 01 04 01 8F 65 81 7B 01 e.{.
2008-11-11 10:16:12 localhost [UDP: []:41244]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8947351) 1 day, 0:51:13.51
SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdStart
sh: page_me: command not found
说明收到trap ucdstart并且调用对应的脚本程序,这里由于系统没有page_me这个命令,所以返回命令找不到.
2、 处理自定义trap(参考 /wiki/index.php/TUT:snmptrap )
编写两个mib文件,包括snmp1和snmp2两种trap
Snmp1的mib:TRAP-TEST-MIB.txt:
TRAP-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS ucdE