三、SNMPTRAP工作流程
1、Agent端
A、编写MIB文件,确定好TRAP名称等信息(一般MIB设备厂商会提供) B、命令方式:发送各种TRAP命令(Manager地址后面一定要加端口号162),在Manager端看反应结果,在Agent端无反应 C、自动触发:配置snmpd.conf设置触发TRAP,系统发生某类错误时会自动触发相应类型的TRAP,发送给Manager D、程序方式:一部份TRAP需要写C语言程序,用相应的api(send_easy_trap或send_v2trap)发送
2、Manager端
A、配置snmptrapd.conf文件,设置访问权限 B、将MIB文件导入到mibs文件夹中 C、用perl等脚本语言编写处理trap的程序 D、配置snmptrapd.conf文件,添加traphandler项,将不同的TRAP对应到不同的处理程序上
3、流程图
图中在测试机 M1 上启动 snmptrapd 进程,并且在 UDP 162 端口上监听 SNMP Trap 信息,一旦收到 Trap,snmptrapd 将所接收到的 Trap 信息内容打印到一个本地的文本文件中。机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。
四、SNMPTRAP在ZABBIX上实现过程
1、设置ZABBIX接收SNMP Trap
1)、安装依赖的程序包 yum install -ynet-snmp-utils net-snmp-perl
2)、下载和解压Zabbix源码包 tar -zxvfzabbix-2.2.1.tar.gz
3)、从源码文件中复制脚本和添加执行权限 cp./zabbix-2.2.1/misc/snmptrap/zabbix_trap_receiver.pl /usr/binchmod +x/usr/bin/zabbix_trap_receiver.pl
4)、设置Trap接收器和团体名称 vi/etc/snmp/snmptrapd.conf # you can setmultiple community names: # authCommunityexecute public # authCommunityexecute S7di@kjh8 authCommunityexecute public perl do"/usr/bin/zabbix_trap_receiver.pl"
5)、编辑zabbix_server.conf配置文件启用SNMP Trap vi/etc/zabbix/zabbix_server.conf StartSNMPTrapper=1 SNMPTrapperFile=/tmp/zabbix_traps.tmp(注:必须跟zabbix_trap_receiver.pl脚本中设置的相同)
6)、重启zabbix_server服务使配置生效 /etc/init.d/zabbix-serverrestart
7)、设置SNMP MIBs MIBs默认在系统目录/usr/share/snmp/mibs下,添加MIB名称到/etc/snmp/snmp.conf配置文件中(如果不存在则手动新建配置文件),它们将被Net-SNMP进程用来解析trap OID值。 例:mibs+JUNIPER-MIB:JUNIPER-FABRIC-CHASSIS:BGP4-MIB
8)、重启snmptrapd服务 /etc/init.d/snmptrapdrestart
2、配置ZABBIX
1)、创建"SNMP trap fallback"模板和"SNMP trap fallback"监控项: 监控项名称:SNMP trap fallback 类型: SNMPtrap 键值:snmptrap.fallback 数据类型: Log 注:该监控项用来收集所有不匹配的trap
2)、创建触发器以通知管理员关于新的不匹配trap: 触发器名称:Unmatched SNMP trap received from {HOST.NAME} 表达式:{Template SNMP trap fallback:snmptrap.fallback.nodata(300)}=0
3)、创建"Template SNMP traps"模板并链接到"Template SNMP trap fallback" 在"TemplateSNMP traps"模板中,为trap创建需要的监控项. key值使用snmptrap[regex]格式, 例: Key:snmptrap["SNMPv2-MIB::coldStart"] 替代OID值(数字或文本),您可以使用任何从一个trap文本中的单词/短语: Key:snmptrap["No route to host"] 在这种情况下,Zabbix从匹配的地址中捕获所有SNMP Trap包含"No route to host"。
4)、为监控项创建触发器 在前面创建的模板,为必要的项目(Trap)创建触发器. 这里涉及一些变量,以前面例子中的监控项为例创建触发器: 表达式: {Template SNMPtraps:snmptrap["SNMPv2-MIB::coldStart"].nodata(5m)}=0 意思是如果5分钟后,trap接收和自动返回OK状态,则触发器进入警告状态
5)、查看ZABBIX获取到的数据
五、总结 SNMP Trap是一种事件驱动型的监控方式,避免了监控系统的资源浪费,提高了警告的及时性和准确性。目前很多监控系统都提供SNMP Trap的监控方式,主动型监控是比较推荐的选择方式。 注意和免责声明 相关软件操作设置请在专业服务人员指导下实施。
|