设为首页 收藏本站
查看: 9451|回复: 0

[经验分享] Zabbix服务器上的SNMP陷入配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-3-27 09:24:19 | 显示全部楼层 |阅读模式
在前面,我们提到并在被监控设备或代理上配置了SNMP陷入。与Zabbix服务器可以直接支持SNMP查询不一样,对于SNMP陷入,我们需要在Zabbix服务器(或者代理服务器)上配置并启动SNMP陷入服务,Zabbix系统才能使用SNMP陷入的方法采集监控数据。
u       Zabbix系统中SNMP陷入的工作流程
被监控设备上的SNMP服务代理无法直接向Zabbix服务端或代理发送SNMP陷入信息,它需要借助第三方服务或插件才能完成这个功能。以下Zabbix系统中SNMP陷入的工作流程。
1、    snmptrapd进程接收到来自被监控设备或代理上的SNMP代理发送过来的SNMP陷入;
2、    snmptrapd将接收到的陷入信息传送给SNMP陷入转译器(SNMPTT,SNMP Trap Translator)或用Perl编写的陷入接收器(Zabbix软件包里附带这个接收器程序);
3、    SNMPTT或Perl接收器解析接收到的陷入信息,并按照一定格式进行格式化,之后将格式化后的陷入信息写入指定的陷入信息文件中;
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-snmp或ucd-snmp软件包中的snmptrapd 进程使用的SNMP陷入处理器。SNMP陷入转译器的主要作用是将snmptrapd捕获的陷入信息按照指定的格式进行转换,并将其存成文件形式、输出到系统日志、Windows系统的事件日志甚至存储到SQL数据库中。下面我们来介绍SNMPTT安装和配置的方法。
SNMPTT需要使用SNMP以及IniFiles的perl模块,所以需要首先安装net-snmp-perl以及perl-Config-IniFiles软件包。
shell> yum install net-snmp-perl
perl-Config_IniFiles在CentOS的默认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=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
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 http://downloads.sourceforge.net/project/snmptt/snmptt/snmptt_1.4 /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.ini和snmptt.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.conf。snmpconf工具使用比较简单,只要按照提示回答一些提问之后,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这种简化的字符串形式的。而这种简化的字符串形式OID与snmptt.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文件里有如下类似如下的信息输出则说明我们配置的snmptrapd和snmptt服务工作是正常的。
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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-16275-1-1.html 上篇帖子: zabbix分区表操作步骤 下篇帖子: Zabbix系统中简单检查数据采集方法 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表