Zabbix的SNMPTrap监控配置

SNMPTrap监控主要用于设备发生故障时的主动通知的监控。以下简单记录下Zabbix的SNMPTrap的配置方法。

1.监控对象发送SNMPTrap信息到snmptrapd(Net-SNMP)服务器,

2.snmptrapd服务器将接收到的SNMPTrap信息发送给SNMPTT(或者Perl trap receiver),

3.NMPTT(或者Perl trap receiver)将按照指定的数据格式将SNMPTrap信息写入SNMPTrapperFile,

4.Zabbix服务器的snmptrapper进程将读取SNMPTrapperFile的内容,对其进行解析,将值传递给对应的监控对象,并保存数据到DB。

※流程参考下图(使用SNMPTT的地方均可使用Perl trap seceiver脚本代替):

Zabbix的SNMPTrap监控配置

ZabbixServer的环境是CentOS release 6.5 (Final),SNMPTrapd,SNMPTT等全部在ZabbixServer上进行设置。

1)首先安装SNMPTrapd(NET-SNMP),

# yum install -y net-snmp net-snmp-utils net-snmp-perl

2)接来下设置SNMPTrap的Community名称自己处理SNMPTrap信息的处理器(或者说处理方法):

# vim /etc/snmp/snmptrapd.conf

添加如下内容:

authCommunity log,execute,netpublic

#### 配置community名称,这里设置为public, 也进行用认证:disableAuthorization yes

traphandle default /usr/sbin/snmptthandler

#### 配置SNMPTrap信息的处理器,这设置为SNMPTT,也可以设置成其他Perl脚本处理,比如perl do "/usr/local/zabbix/bin/zabbix_trap_receiver.pl "

3)设置SNMPTrapd的启动脚本的选项

# vim /etc/init.d/snmptrapd

### 某些OS版本的路径可能是/etc/rc.d/init.d/snmptrapd

更改如下内容:

OPTIONS="-Lsd -p /var/run/snmptrapd.pid" ↓ ↓ ↓(更改成如下) ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid"

#### 根据SNMPTT的文档说明,由于版本问题,可能会导致MIB文件无法正确翻译,所以最好是加上-On参数。

#### 参考文件http://snmptt.sourceforge.net/docs/snmptt.shtml#Installation-Overview

#### Note: The -On is recommended. This will make snmptrapd pass OIDs in numeric form and prevent SNMPTT from having to translate the symbolic name to numerical form. If the UCD-SNMP / Net-SNMP Perl module is not installed, then you MUST use the -On switch. Depending on the version of UCD-SNMP / Net-SNMP, some symbolic names may not translate correctly. See the FAQ for more info.

4)设置SNMPTrapd自动启动并重新启动服务

# chkconfig snmptrapd on # service snmptrapd restart

1)安装SNMPTT(这里采用yum安装方式进行)

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum install snmptt

### 以上的rpm可以根据OS的版本选择合适的yum库进行安装。

2)配置SNMPTT,设置基本信息

### 以上的rpm可以根据OS的版本选择合适的yum库进行安装。

# vim /etc/snmp/snmptt.ini修改如下内容:

date_time_format= %Y/%m/%d %H:%M:%S

#### 设置时间格式,读取的SNMPTrap信息之后写入SNMPTrapperFile里的时间格式,也是ZabbixTrapper读取时的时间格式

syslog_enable = 0

#### 默认值为1,设置成0,表示不将日志记录入syslog,不过该参数为可选参数,可直接默认值即可。

log_file = /var/log/snmptt/snmptt.log

#### 这里指定了SNMPTrapperFile,默认/var/log/snmptt/snmptt.log,无需更改。

[TrapFiles]

snmptt_conf_files = <<END

/etc/snmp/snmptt.conf

END

#### 这一段代码记录了使用那些规则文件处理SNMPTrap信息,默认值如上,简单处理中无需更改该配置。

#### 该文件可以设置成多个文件,在END之前添加文件即可。

3)设置处理数据的格式规则

这里只说最简单的例子,配置文件按照snmptt.ini的默认设置snmptt.conf进行配置。

添加如下内容:

EVENT general .* "General event" Normal

FORMAT ZBXTRAP $aA $1

#### (OID信息为:[.1.3.6.1.4.1.232.0.11001],而[.*]匹配了所有OID信息)

备注:

为了和Zabbix做连接需要,snmptt.conf中的配置具有一定的规则,这将在其他文章另行记录。

本文只简单说明为了实现Zabbix的SNMPTrap监控需要进行哪些设置。

不需要根据OID来具体区分的情况下,以上配置即足够了。

4)创建SNMPTrapperFile文件(默认为/var/log/snmptt/snmptt.log)

# touch /var/log/snmptt/snmptt.log # chown snmptt:snmptt /var/log/snmptt/snmptt.log 5)配置以上日志轮询

yum安装的情况下默认已经配置好,无需再设置。这里将需要自己配置时的配置内容贴出来供参考。

# vim etc/logrotate.d/snmptt里面内容如下:

/var/log/snmptt/snmptt*.log /var/log/snmptt/snmptthandler.debug { weekly notifempty missingok } /var/log/snmptt/snmptt.debug { weekly notifempty missingok postrotate /etc/init.d/snmptt reload >/dev/null 2>/dev/null || true endscript }

6)设置SNMPTT自动启动并重新启动服务

# chkconfig snmptt on # service snmptt restartr 以上SNMPTT的配置即结束。

1)启用SNMPTRAP监控并指定SNMPTrapperFile信息

# vim /usr/local/zabbix/etc/zabbix_server.conf#### 以上文件路径可能和安装方式不同所有不同,需要根据具体情况而定。

修改如下内容:

StartSNMPTrapper=1

SNMPTrapperFile=/var/log/snmptt/snmptt.log

#### SNMPTrapperFile文件可根据具体情况进行修改

2)重启Zabbix服务

# service zabbix_server restart

三、在Zabbix系统上进行配置监控

可新规创建监控对象,也可直接在已有的对象上添加一个SNMP接口:

Zabbix的SNMPTrap监控配置

另外,在SNMPTrap中配置的community信息需要和监控对象上配置的一致,和默认值不一样时可以在Macros中使用{$SNMP_COMMUNITY}进行指定。

Zabbix的SNMPTrap监控配置

有两种ITEM可以创建,一种是SNMPTrap[regexp]以及SNMPTrap.fallback两种,

本文以上的例子则可创建2个ITEM,一个是SNMPTrap[regexp]格式的内容:

Zabbix的SNMPTrap监控配置

另一个是SNMPTrap.fallback,表示未匹配的值全部识别为该ITEM

Zabbix的SNMPTrap监控配置

这个配置接完成了。

在被监控对象上发送测试的命令或者是图形界面的话也发送测试消息。

以下是使用命令发送测试消息的格式:

snmptrap -v <SNMP版本> -c <community名> <ZabbixServer的IP地址> '' <OID>[ s '文字消息>']

例如:

假设发送命令的被监控对象为192.168.1.1

# snmptrap -v 2c -c public 192.168.0.1 '' .1.3.6.1.6.3.1.1.5.3 # snmptrap -v 2c -c public 192.168.0.1 '' .1.3.6.1.6.3.1.1.5.4 # snmptrap -v 2c -c public 192.168.0.1 '' .1.3.6.1.6.3.1.1.5.5

则在/var/log/snmptt/snmptt.log中显示的如下:

# tail -f /var/log/snmptt/smmptt.log显示内容如下:

2017/03/31 05:33:04 .1.3.6.1.6.3.1.1.5.3 Normal "Geranal event" 192.168.1.1 - ZBXTRAP 192.168.1.1 192.168.1.12017/03/31 05:34:24 .1.3.6.1.6.3.1.1.5.4 Normal "Gerenal event" 192.168.1.1 - ZBXTRAP 192.168.1.1 192.168.1.12017/03/31 05:34:26 .1.3.6.1.6.3.1.1.5.5 Normal "Gerenal event" 192.168.1.1 - ZBXTRAP 192.168.1.1 192.168.1.1 然后在Zabbix系统上配置的监控对象上,也可以看到以上配置的SNMPTrap的ITEM的值,类似如下:

Zabbix的SNMPTrap监控配置

以上,则表示能够正常收到信息,配置成功。

相关推荐