Zabbix SNMP Trapper配置总结

公司有几台HP Superdome服务器做Oracle数据库,前段时间由于一台硬件故障导致系统重启。DBA紧急把主库切到备机上面,业务中断了5分钟左右,还好在中午12点,影响不是很大。和管理小机的系统管理员沟通了一下,目前几台小机没有任何硬件方面的报警,都是定期登录小机管理后台巡检看是否有硬件方面的报警,然后被动地去处理。

研究了一下HP小机关于SNMP的监控方式,只有通过SNMP Trapper的方式监控。当被监控的网络设备发生故障的时候会向Zabbix Server SNMPTrap告警信息,当Zabbix Server收到网络设备SNMPTrap的信息时会立即触发短信和邮件报警。

Zabbix SNMP Trapper具体的工作流程如下:
Zabbix SNMP Trapper配置总结
1)硬件设备发送SNMPTrap信息到Snmptrapd(Net-SNMP)服务器(Zabbix Server服务器)。

2)Snmptrapd服务器将接收到的SNMPTrap信息发送给SNMPTT或者Perl trap receiver,下面的配置是通过SNMPTT的方式接收信息的。

3)SNMPTT或者Perl trap receiver将按照指定的数据格式将SNMPTrap信息写入SNMP TrapperFile。

4)Zabbix服务器的Snmptrapper进程读取SNMP TrapperFile的内容并立即触发Action报警。

下面在Centos 6.8上面配置Snmptraps,官方参考文档:https://www.zabbix.org/wiki/ConfigureSnmptrapsCentos6_RHEL6

1.安装软件包并配置服务。

[root@monitor ~]# yum install net-snmp-utils
[root@monitor ~]# yum install net-snmp-perl
[root@monitor ~]# yum install snmptt #(perl-Net-SNMP will be installed together with snmptt)
[root@monitor ~]# chkconfig snmptt on
[root@monitor ~]# chkconfig snmptrapd on

2.修改Zabbix的配置文件并重启Zabbix Server服务。

[root@monitor ~]# vim /etc/zabbix/zabbix_server.conf
### Option: SNMPTrapperFile
#       Temporary file used for passing data from SNMP trap daemon to the server.
#       Must be the same as in zabbix_trap_receiver.pl or SNMPTT configuration file.
#
# Mandatory: no
# Default:
SNMPTrapperFile=/var/log/zabbix_traps/zabbix_traps.log

### Option: StartSNMPTrapper
#       If 1, SNMP trapper process is started.
#
# Mandatory: no
# Range: 0-1
# Default:
StartSNMPTrapper=1
[root@monitor ~]# /etc/init.d/zabbix_server restart

3.编辑snmptrapd的配置文件并重启服务。这里配置community名称为zmz,要和小机上面snmptrap时候的community名称保持一致。

[root@monitor ~]# cat /etc/snmp/snmptrapd.conf 
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
#authCommunity   log,execute,net public
traphandle default snmptt
authCommunity   log,execute,net zmz
[root@monitor ~]# /etc/init.d/snmptrapd restart

4.编辑snmptt的配置文件并重启服务。

[root@monitor ~]# vim /etc/snmp/snmptt.ini
date_time_format=  %H:%M:%S %Y/%m/%d
translate_log_trap_oid = 2
net_snmp_perl_enable = 1
log_file = /var/log/zabbix_traps/zabbix_traps.log

[root@monitor ~]# cat /etc/snmp/snmptt.conf 
EVENT general .* "Zabbix Traps" Warning
FORMAT ZBXTRAP $aA $1
[root@monitor ~]# /etc/init.d/snmptt restart

5.配置日志按照天轮询。

[root@monitor ~]# cat /etc/logrotate.d/snmptt    
/var/log/zabbix_traps/zabbix_traps.log {
 weekly
 notifempty
 missingok
 postrotate
 /etc/init.d/snmptt reload >/dev/null 2>/dev/null || true
 endscript

}

6.上面所有的Zabbix Server、snmptrapd和snmptt的配置都已经完成。下面进行配置Zabbix监控模板。

在模板里面创建Items,监控类型为SNMP trap,监控项目为snmptrap[“Warning”],即匹配日志里面包含Warning关键字的日志行,Log time format:hh:mm:ss yyyy/MM/dd
Zabbix SNMP Trapper配置总结
7.创建Tigger,这里采用nodata函数,当Zabbix收到错误信息的时候会立即触发报警。
Zabbix SNMP Trapper配置总结
8.在Zabbix Macros中使用{$SNMP_COMMUNITY}变量指定在SNMPTrap中配置的community名称。如果监控设备上面的snmp community名称和SNMPTrap中配置的community名称一致,则不需要配置该Macros变量。
Zabbix SNMP Trapper配置总结
9.验证上面的配置是否正确。

1)在被监控的对象上面用下面的命令测试。

[root@monitor ~]# snmptrap -v 2c -c zmz 192.168.3.100:162 '' 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "This is zabbix traps test"

2)SNMPTT将设备trap的信息保存到Zabbix指定的文件中。

[root@monitor ~]# cat /var/log/zabbix_traps/zabbix_traps.log
15:19:33 2018/04/03 SNMPv2-SMI::enterprises.2345 Warning "Zabbix Traps" 192.168.3.100 - ZBXTRAP 192.168.3.100 This is zabbix traps test

3)Zabbix读取/var/log/zabbix_traps/zabbix_traps.log内容存入数据库并触发报警。

通过Zabbix SNMP Trapper配置需要注意以下几点:

1)被监控设备上面开启SNMPTrap,配置好Zabbix Server IP和SnmpTrap Community。

2)Zabbix上面添加被监控的IP,开启SNMP interfaces,添加snmptrap[regexp]和snmptrap.fallback监控项,snmptrap[regexp]监控项的key支持正则表达式和宏变量。

snmptrap["Power supply 1: critical"] 该监控项表示匹配日志里面包含"Power supply 1: critical"关键字的日志。
snmptrap[@HPUnixSnmpTrapd]           该监控项支持正则表达式,该正则表达式在Administration->General->Regular expressions里面定义
snmptrap[{HPUnixSnmpTrapd}]          该监控项支持宏变量,该宏变量在Administration->General->Macros里面定义

3)Zabbix Server首先根据host interfaces的地址匹配日志文件内容,如果匹配成功,在继续通过snmptrap[regexp]匹配,如果匹配成功,则存入历史数据,如果匹配失败,则把数据存入snmptrap.fallback里面。如果snmptrap[regexp]和snmptrap.fallback监控都没有添加到被监控的主机,Zabbix Server日志里面会有unmatched trap(This is configured by “Log unmatched SNMP traps” in Administration → General → Other)。

4452:20190109:190447.704 unmatched trap received from "x.x.x.x": 19:04:46 2019/01/09 SNMPv2-SMI::enterprises.789.0.392 Warning "Zabbix Traps" 192.1
68.200.235 - Chassis power supply 1 is degraded: PSU1 Temperature is Unreadable 

4)如果匹配不包含特定字符串的日志建议用snmptrap[@HPUnixSnmpTrapd]监控项。

猜你喜欢

转载自blog.51cto.com/sfzhang88/2516103