Zabbix 随笔:snmptrap 探索(上)

2022-02-16 18:45:07 浏览数 (1)

网络领域的监控以目前的状态暂时无法离开 SNMP 协议,但是随着规模的增大以及对监控要求越来越高,对监控的性能和告警的及时性也随之增高,snmptrap 作为主动推送的模式,而且及时性相比于 snmp 方式要高得多,本次 Zabbix snmtrap 文章一共有两篇,第一篇是如何使用 snmptrap 推送至 Zabbix,第二篇详细讲实战怎么使用。

正文

本文环境

  • Zabbix 6.0 beta2
  • snmptt 1.4.2(目前最新版本为1.5.1 beta)
  • 网络设备为华为CE 6855
  • CentOS 8.5.2109

安装需求软件

代码语言:javascript复制
dnf -y install net-snmp net-snmp-utils net-snmp-perl

启动 snmptrapd

代码语言:javascript复制
systemctl start snmptrapd 
systemctl enable snmptrapd

交换机侧配置(以华为交换机为例)

其他的品牌设备请咨询查询官方文档或其他教程。

代码语言:javascript复制
snmp-agent target-host trap address udp-domain 10.0.0.73 params  securityname huawei@123 v2c

调整 snmptrapd 配置

代码语言:javascript复制
vi /etc/snmp/snmptrapd.conf
authCommunity log,execute,net huawei@123

重启 snmptrapd 服务

代码语言:javascript复制
service snmptrapd restart

效果

由于CentOS 8 最小化安装版本不自带 /var/log/messages ,所以需要安装相关软件包,此时模拟登录交换机,同时查看日志。

代码语言:javascript复制
dnf -y install rsyslog
service restart rsyslog
tail -f /var/log/messages

安装 snmptt

首先我们要搞清楚为什么装这个软件,Zabbix 在实现 snmptrap 有两个条件,第一个是能收集和记录 snmptrap 信息的程序,这个程序就是snmptrapd,第二个是需要把这些信息发送到Zabbix server,这个软件是snmptt,当然也可以是perl脚本,本篇文章以snmptt为例

  • CentOS7
  • CentOS8
代码语言:javascript复制
yum -y install epel-release
yum -y install snmptt

CentOS 7 不进行演示,文章全文按照 CentOS 8 进行

代码语言:javascript复制
wget https://nchc.dl.sourceforge.net/project/snmptt/snmptt/snmptt_1.4.2/snmptt_1.4.2.tgz --no-check-certificate
####解压该包####
tar -zxvf snmptt_1.4.2.tgz
####复制相关文件至指定文件夹
cp snmptt_1.4.2/snmptt /usr/sbin/snmptt
cp snmptt_1.4.2/snmptthandler /usr/sbin/snmptthandler
cp snmptt_1.4.2/snmptt.ini /etc/snmp/snmptt.ini
cp snmptt_1.4.2/examples/snmptt.conf.generic /etc/snmp/snmptt.conf
cp snmptt_1.4.2/snmptt-init.d /etc/rc.d/init.d/snmptt
cp snmptt_1.4.2/snmptt.logrotate /etc/logrotate.d/snmptt
####解决依赖环境问题####
dnf -y install perl-CPAN perl-Text-Balanced perl-Sys-Syslog 
perl -MCPAN -e 'install Config::IniFiles'
####创建snmptt相关用户####
groupadd snmptt
useradd  -c "SNMP Trap Translator" -g snmptt  -d /var/spool/snmptt  snmptt -s /sbin/nologin

修改 snmptrapd 配置文件

代码语言:javascript复制
vi /etc/snmp/snmptrapd.conf
traphandle default /usr/sbin/snmptthandler

修改 snmptt 配置文件

需要修改以下三处

代码语言:javascript复制
date_time_format=  %Y/%m/%d %H:%M:%S
net_snmp_perl_enable = 1
translate_log_trap_oid = 2     # 0:数字形式显示OID,1:显示OID名称,2:显示OID所属模块名及其名称 

Zabbix Server 开启 snmptrapd

代码语言:javascript复制
vi /etc/zabbix/zabbix_server.conf

重启相关服务

代码语言:javascript复制
service snmptt restart
service snmptrapd restart
service zabbix-server restart

创建 log 文件

代码语言:javascript复制
mkdir /var/log/snmptt
touch /var/log/snmptt/snmptt.log
chown snmptt:snmptt /var/log/snmptt/snmptt.log

配置数据处理格式

1、添加数据格式

代码语言:javascript复制
vim /etc/snmp/snmptt.conf
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $ar

2、修改 Zabbix Server 配置文件,这里一定要调整 snmptt 的日志文件路径,否则后面 Zabbix 前端将无法收到 trap 信息。

代码语言:javascript复制
vim /etc/zabbix/zabbix_server.conf

测试

依然是登陆设备测试

前端添加监控项

此处使用的模板为 Generic SNMP 模板,自带 snmptrap 监控项,仅仅测试

写在最后

snmptrap 最大的好处就是由设备推送至 Zabbix Server,保证了及时性,那么下期我会详细来讲实战中该怎么使用。

0 人点赞