Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1462493
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

斑竹网络专注为中小企业客户提供以管理服务为核心的IT全方位服务 https://www.sysadm.cn

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: 系统运维

2014-03-25 11:54:34

在前面,我们提到并在被监控设备或代理上配置了SNMP陷入。与Zabbix服务器可以直接支持SNMP查询不一样,对于SNMP陷入,我们需要在Zabbix服务器(或者代理服务器)上配置并启动SNMP陷入服务,Zabbix系统才能使用SNMP陷入的方法采集监控数据。

u       Zabbix系统中SNMP陷入的工作流程

被监控设备上的SNMP服务代理无法直接向Zabbix服务端或代理发送SNMP陷入信息,它需要借助第三方服务或插件才能完成这个功能。以下Zabbix系统中SNMP陷入的工作流程。

1、    snmptrapd进程接收到来自被监控设备或代理上的SNMP代理发送过来的SNMP陷入;

2、    snmptrapd将接收到的陷入信息传送给SNMP陷入转译器(SNMPTTSNMP Trap Translator)或用Perl编写的陷入接收器(Zabbix软件包里附带这个接收器程序);

3、    SNMPTTPerl接收器解析接收到的陷入信息,并按照一定格式进行格式化,之后将格式化后的陷入信息写入指定的陷入信息文件中;

4、    Zabbix服务的SNMP陷入器读取并解析这个陷入信息文件;

5、    Zabbix从每条陷入信息中分离出发送陷入信息的被监控设备的IP地址或主机名;

6、    将接收到的陷入信息与分离出来的IP地址或主机名对应的主机上配置的项目进行正则匹配。如果匹配监控项目,则将对应的项目设置成相应的值。如果没有匹配到任何项目,但是配置了“snmptrap.fallback”项目,则将陷入的信息设置到该目上;

7、    如果分离出来的IP地址或主机名没有匹配到任何被监控的主机,则zabbix会产生一条没有匹配到陷入的陷入信息;

u       SNMPTT安装配置

通过上面的介绍,我们了解到Zabbix系统接收SNMP陷入需要与snmptrapd服务(该服务是net-snmp软件包自带的服务)一起工作。snmptrapd服务通过其内嵌的机制——Perl脚本或SNMPTT将接收到的SNMP陷入传送给Zabbix服务器(或服务器代理)进程的。如果使用Perl脚本进行SNMP陷入信息的转译,则要求在编译net-snmp时显示的添加内嵌Perl支持,即在编译net-snmp软件包时使用--enable-embedded-perl编译选项。而我们在介绍安装net-snmp包时使用的yum安装的,默认情况下使用二进制方式安装的net-snmp软件包是不支持内嵌Perl的(在net-snmp5.4以后的版本里支持内嵌Perl)。所以,我们在这里介绍使用SNMPTT进行SNMP陷入转译的方法。

SNMP陷入转译器(SNMPTT,SNMP Trap Translator),是用Perl语言编写的,供net-snmpucd-snmp软件包中的snmptrapd 进程使用的SNMP陷入处理器。SNMP陷入转译器的主要作用是将snmptrapd捕获的陷入信息按照指定的格式进行转换,并将其存成文件形式、输出到系统日志、Windows系统的事件日志甚至存储到SQL数据库中。下面我们来介绍SNMPTT安装和配置的方法。

SNMPTT需要使用SNMP以及IniFilesperl模块,所以需要首先安装net-snmp-perl以及perl-Config-IniFiles软件包。

shell> yum install net-snmp-perl

perl-Config_IniFilesCentOS的默认yum源里,而使用源码安装各个软件包的依赖关系比较复杂。所以,我们使用epel源来安装。故我们首先来配置一下epel。创建/etc/yum.repos.d/epel.repo文件,并将下面内容复制进该文件后保存。

shell> vi /etc/yum.repos.d/epel.repo

[epel]

name=Extra Packages for Enterprise Linux 5 - $basearch

#baseurl=

mirrorlist=

failovermethod=priority

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

接下来用下面命令安装perl-Config-IniFiles软件包。

shell> yum install perl-Config-IniFiles

接下来,我们按照下面步骤安装snmptt软件包。

下载snmptt_1.4源码包:

shell >   wget /snmptt_1.4.tgz?r=&ts=1389880477&use_mirror=superb-dca2

解压软件包:shell> tar -zxvf snmptt_1.4.tgz

shell> cd snmptt_1.4

snmptt文件拷贝到/usr/sbin下,并设置成可执行文件:

shell> cp snmptt /usr/sbin/

shell> chmod +x /usr/sbin/snmptt

snmptthandler文件拷贝到/usr/sbin下,并设置成可执行文件:

shell> cp snmptthandler /usr/sbin/

shell> chmod +x /usr/sbin/snmptthandler

拷贝snmptt配置文件snmptt.inisnmptt.conf文件到/etc/snmp下:

shell> cp snmptt.ini  /etc/snmp/

shell> cp examples/snmptt.conf.generic /etc/snmp/snmptt.conf

创建/var/log/snmptt mkdir /var/spool/snmptt目录:

shell> mkdir /var/log/snmptt

shell> mkdir /var/spool/snmptt

创建用户并赋予上述用新用户的属组:

shell> useradd –s /sbin/nologin snmptt

shell> chown snmptt:snmptt /var/spool/snmptt

修改snmptt配置文件snmptt.ini下列各项:

vi /etc/snmp/snmptt.ini

修改mode = standalone 项为 mode = daemon

修改date_time_format =  项为date_time_format = %H:%M:%S %Y/%m/%d

修改log_system_enable = 0项为og_system_enable = 1

修改unknown_trap_log_enable = 0 项为unknown_trap_log_enable = 1。并确认

下面所列的两项所配置的路径是否正确。

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

log_enable = 1

u       配置snmptrap服务

首先,我们需要按照2.3.3节所介绍的方法在zabbix服务器或代理服务器上安装net-snmp软件包并做相应的配置。在安装完net-snmp软件包以后,系统不会自动生成默认配置的net-snmp陷入进程所需要的配置文件snmptrapd.conf。所以,我们可以使用snmpconf工具来生成一个snmptrapd.confsnmpconf工具使用比较简单,只要按照提示回答一些提问之后,snmpconf即可为我们生成snmptrapd的配置文件。在此,我们提供一个简化的配置文件内容,读者只需创建/usr/share/snmp/snmptrapd.conf文件,并将下面这段内容复制过去即可。

donotfork  yes

pidfile  /var/run/snmptrapd.pid     

printeventnumbers  yes

traphandle default /usr/sbin/snmptthandler

ignoreauthfailure  yes

authcommunity execute,log,net snmp@domain.com

接下来,因为snmptt是基于数字OID来匹配/etc/snmp/snmptt.conf文件里的内容,以确定是接收到了哪种陷入并将陷入信息转化成相应格式的。但是,在默认情况下snmptrapd会自动将接收到陷入信息中的OID转化成类似于: SNMPv2-MIB::coldStart这种简化的字符串形式的。而这种简化的字符串形式OIDsnmptt.conf中配置的OID是数字形式的不匹配,故snmptt服务将无法识别。因些,我们修改snmptrap的启动脚本来解决这一问题。

shell> /etc/init.d/snmptrapd

snmptrapd文件中的OPTIONS="-Lsd -p /var/run/snmptrapd.pid"修改成OPTIONS="-Lsd  -On -p /var/run/snmptrapd.pid"并保存。

好了,通过上面的安装、配置和准备,我们已经完成了snmp陷入服务的安装和配置,下面我们来重启服务并检查服务工作是否正常。

shell> service snmpd start/restart

shell> service snmptrapd start/restart

shell> service snmptt start/restart

如果上述三种服务启动都是正常的,则我们可能通过下例命令来检查我们配置的SNMP陷入服务是否正常。在本机或其它主机上发送一条陷入信息到我们zabbix服务器的陷入服务端口上,并检查snmptt服务是否在指定的文件里输出我们要求的陷入信息的输出。

shell>snmptrap -v 2c -c snmp@domain.com 192.168.5.139:162 "" .1.3.6.1.6.3.1.1.5.3

执行上述陷入命令之后,如果在/var/log/snmptt/snmptt.log文件里有如下类似如下的信息输出则说明我们配置的snmptrapdsnmptt服务工作是正常的。

15:05:362014/01/17.1.3.6.1.6.3.1.1.5.3Normal"Status Events" source.iwgame.tec - Link down on interface $1.  Admin state: $2.  Operational state: $3

阅读(7681) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

bamboo7892014-03-26 11:07:48

xsxyfprs:路过看看

欢迎常用来看看

回复 | 举报

xsxyfprs2014-03-26 10:49:49

路过看看