OpenEuler 22.03 安装 snmptt 1.5
一、说明
1.1 背景
snmptt(SNMP Trap Translator)是一个perl语言编写的SNMP Trap消息处理器,官网为:https://snmptt.org/index.shtml,被用于zabbix等监控工具。该工具最新版为2022年发布的1.5版本。
 如果使用redhat系,新增EPEL仓库仓库后可以直接yum安装1.4.2版本,非常方便。但是由于centos停止支持的缘故,转向OpenEuler,研究一下snmptt的安装并记录如下。
1.2 环境
- 操作系统:OpenEuler 22.03
- snmptt:1.5
二、准备工作
2.1 依赖包
根据实际测试,在OpenEuler 22.03系统上,需要安装这些包:
yum install -y net-snmp, perl-Config-IniFiles, perl-Net-IP
与官网说明不同的是,perl-Net-IP在官方文档中是一个可选包,但是实际运行时是必须的,而net-snmp-utils在文档中是必须的,实际上却不是。
三、部署
3.1 snmptt安装
1. 下载并解压
从github主页 https://github.com/snmptt/snmptt/releases 下载并解压:
tar -zxf snmptt_1.5.tgz
cd snmptt_1.5
cp snmptt /usr/sbin/
chmod +x /usr/sbin/
2. 创建账号
adduser -r snmptt
3. 创建配置文件
mkdir /etc/snmptt
chown -R snmptt:snmptt /etc/snmptt
chmod 755 /etc/snmptt
cp snmptt.ini /etc/snmptt/
touch /etc/snmptt/snmptt.conf
4. 创建日志文件
mkdir /var/log/snmptt
chown -R snmptt:snmptt /var/log/snmptt
chmod -R 750 /var/log/snmptt
mkdir /var/spool/snmptt/
chown -R snmptt:snmptt /var/spool/snmptt
chmod -R 750 /var/spool/snmptt
5. 注册为系统服务
cp snmptt.service /usr/lib/systemd/system/snmptt.service
chmod -x /usr/lib/systemd/system/snmptt.service
systemctl daemon-reload
6. 配置日志回滚
cp snmptt.logrotate /etc/logrotate.d/snmptt
7. 测试启动
使用snmptt --daemon或者systemctl start snmptt启动snmptt服务,如果启动无报错,可以检查系统日志/var/log/messages。
3.2 snmptthandler安装
在snmptt压缩包内:
cp snmptthandler /usr/sbin/
chmod +x /usr/sbin/snmptthandler
可以使用/usr/sbin/snmptthandler命令尝试启动,检查有无缺失的perl包
3.3 配置
1. snmptrapd.conf
修改/etc/snmp/snmptrapd.conf内容为:
 (1)如果snmptt运行于daemon模式:
disableAuthorization yes
traphandle default /usr/sbin/snmptthandler
(2)如果snmptt运行于standalone模式:
disableAuthorization yes
traphandle default /usr/sbin/snmptt
按照文档配置,则snmptt运行于standalone模式。
2. snmptrapd.service
修改并覆盖snmptrapd.service文件:
systemctl edit --full snmptrapd.service
修改Environment=OPTIONS="-Lsd"为Environment="OPTIONS=-Lsd -On"
3. snmptt.ini
编辑/etc/snmptt/snmptt.ini,修改trap消息的时间日期格式:
date_time_format=  %H:%M:%S %Y\/%m\/%d
4. snmptt.conf
修改/etc/snmptt/snmptt.conf内容为:
EVENT general .* "Default" Normal
FORMAT ZBXTRAP $aA $ar $+*
其中:
 “event_name”为自定义的event_name,.*为event_OID,意为捕获任何oid。
 “FORMAT ZBXTRAP $aA $ar” 为固定格式,$+*代表展开所有绑定变量
四、测试
4.1 启动服务
systemctl start snmptrapd
systemctl start snmptt
4.2 测试
通过snmptrap命令向本地环回地址发送trap报文,v1版本和v2c版本有不同报文格式:
- snmptrap v1版本
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring"
如果抓包可以看到报文格式如下:
 
- snmptrap v2c版本
snmptrap -v 2c -c public 127.0.0.1 '12345' .1.3.6.1.4.1.2022.5.24.1 .1.3.6.1.4.1.2022.5.24.2.1 s "value1" .1.3.6.1.4.1.2022.5.24.2.2 s "value2" .1.3.6.1.4.1.2022.5.24.2.3 s "value3"
抓包查看报文格式如下:
 
 其中12345是时间,1.3.6.1.4.1.2022.5.24.1为event_OID。
 如果一切正常,则在/var/log/snmptt/snmptt.log文件中可以看到如下日志:
23:08:22 2025/10/30 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "Default" localhost - ZBXTRAP 127.0.0.1 127.0.0.1 .1.3.6.1.6.3.1.1.5.3:teststring
23:08:24 2025/10/30 .1.3.6.1.4.1.2022.5.24.1 Normal "Default" localhost - ZBXTRAP 127.0.0.1 127.0.0.1 .1.3.6.1.4.1.2022.5.24.2.1:value1 .1.3.6.1.4.1.2022.5.24.2.2:value2 .1.3.6.1.4.1.2022.5.24.2.3:value3
五、后记
- 相比于1.4.2版本,1.5在使用感知上最大的差异就是配置文件的位置从/etc/snmp/改为了/etc/snmptt/目录,得以和net-snmp的配置文件隔离。
- 官方文档说明,snmptt 1.5基于Net-SNMP 5.7.x版本进行过测试,而OpenEuler的官方仓库中net-snmp版本为5.9.1。
- 虽然OpenEuler的默认源没有snmptt,但是社区有提供1.4.2版本的的包,可以尝试一用
  
- snmptt的安装并不复杂,按照官网文档逐步操作即可,可以考虑写一个自动安装的bash脚本,或者自行制作一个rpm包。
