当前位置:   article > 正文

Zabbix SNMP traps使用

zabbix snmp trap

目录

前言

一、SNMPTRAP配置

1.安装SNMPTRAPD服务

2.编辑配置文件/etc/snmp/snmptrapd.conf

3.启动并配置开机自启动

二、SNMPTT配置

1.安装SNMPTT(需要配置epel源)

3.修改配置文件(/etc/snmp/snmptt.conf)

4.启动并配置开机自启动

三、ZABBIX配置

1.修改zabbix配置(zabbix_server.conf)

2.重启zabbix-server

实例:从动环管控平台获取SNMP告警数据

一、导入MIB库

二、配置snmptt.conf

三、zabbix配置

四、效果


前言

Zabbix 中接收 SNMP traps使用snmptrapd和将陷阱传递给 Zabbix 的内置机制之一——Perl 脚本或 SNMPTT。


提示:以下是本篇文章正文内容,下面案例可供参考

一、SNMPTRAP配置

1.安装SNMPTRAPD服务

 yum install net-snmp net-snmp-utils net-snmp-perl

2.编辑配置文件/etc/snmp/snmptrapd.conf

authCommunity   log,execute,net public  #public为团体字
traphandle default snmptt

3.启动并配置开机自启动

  1. systemctl start snmptrapd
  2. systemctl enable snmptrapd

二、SNMPTT配置

1.安装SNMPTT(需要配置epel源)

yum install snmptt

2.修改配置文件(/etc/snmp/snmptt.ini)

  1. 1.启用 NET-SNMP 包中的 Perl 模块:
  2. net_snmp_perl_enable = 1
  3. 2.将陷阱记录到将被 Zabbix 读取的陷阱文件:
  4. log_enable = 1
  5. log_file = /var/log/snmptt/snmptt.log
  6. 3.设置日期时间格式:
  7. date_time_format = %H:%M:%S %Y/%m/%d
  8. 4.转换oid值为可读的标签值
  9. mibs_environment = ALL

3.修改配置文件(/etc/snmp/snmptt.conf)

snmptt.conf是捕获traps后的清洗数据配置文件

定义一个默认的配置:

  1. EVENT general .* "General event" Normal
  2. FORMAT ZBXTRAP $aA $ar

4.启动并配置开机自启动

  1. systemctl start snmptt
  2. systemctl enable snmptt

三、ZABBIX配置

1.修改zabbix配置(zabbix_server.conf)

  1. StartSNMPTrapper=1
  2. # 路径必须和snmptt配置的路径一致
  3. SNMPTrapperFile=/var/log/snmptt/snmptt.log

2.重启zabbix-server


实例:从动环管控平台获取SNMP告警数据

从动环管控平台接收告警数据,数据以十六进制发送,我们需要外部的py脚本转义为字符串。

一、导入MIB

  1. 复制mib文件到/usr/share/snmp/mibs/目录下
  2. 修改配置文件引用导入的MIB库
  1. # 查看mib文件目录
  2. net-snmp-config --snmpconfpath
  3. # 在/usr/share/snmp目录下新增snmp.conf文件,如果没有新增
  4. mibdirs +/usr/share/snmp/mibs/PxData-new.txt
  5. # 配置MIBS环境变量(配置在/etc/profile)
  6. export MIBS=ALL
  7. # 测试是否正常
  8. snmptranslate -On PxData::trapSignalAlarm
  9. snmptranslate -Dinit_mib 1.3.6.1.4.1.31951.3.20.1

二、配置snmptt.conf

一般情况下,需要FORMAT指令配置ZBXTRAP,但是由于我是新手,实在无奈不用使用,所以此处把FORMAT指令取消,使用python脚本写入snmptt.log文件对应的格式。

  1. EVENT trapSignalAlarm .1.3.6.1.4.1.31951.3.20.1 "动环告警" Warning
  2. EXEC /etc/snmp/donghuan/test.py $aA $+*

test.py

  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. import sys
  4. import time
  5. import sys
  6. reload(sys)
  7. sys.setdefaultencoding('utf-8')
  8. def hex_to_ascii(hex_str):
  9. msg=hex_str.replace("enterprises.31951.3.20.1:","").replace("#012","").decode('hex').decode('GBK')
  10. return msg
  11. SNMPTRAPMESSAGE=''.join(sys.argv[2:])
  12. msg=hex_to_ascii(SNMPTRAPMESSAGE)
  13. logtime=time.strftime('%H:%M:%S %Y/%m/%d',time.localtime())
  14. snmptrapfile="/var/log/snmptt/snmptt.log"
  15. zbxtrapmessage=logtime + ' .1.3.6.1.4.1.31951.3.20.1 Warning "动环告警" 127.0.0.1 - ZBXTRAP 127.0.0.1 enterprises.31951.3.20.1: '+ msg
  16. zbxtrapmessage2=zbxtrapmessage.encode("raw_unicode_escape").decode("raw_unicode_escape").encode("utf8")
  17. with open(snmptrapfile,'a+') as f:
  18. f.write(zbxtrapmessage2)
  19. f.write("\n")
  20. f.close()

三、zabbix配置

四、效果

 后话:

1.snmptt的配置很复杂

2.snmptraps设备发过来的时候可能oid并不太准确,比如下方message中oid不知道为什么死活认为是link  down,后来抓包发现应该是发送的问题

3.抓包可以看到snmptrap的团体字,如果实在接收不到数据可以通过tcpdump获取团体字

 tcpdump -i ens192 dst port 162

4.传给zabbix的数据格式如果不合适会无法识别,可以关注zabbix日志。

5.可以通过/var/log/messages、/var/log/snmptt/snmptt.log、/var/log/zabbix/zabbix_server.log三个文件去查看问题到底出在某一步。

6.如果再messages里看到接收到数据报错

-bash: syntax error near unexpected token `('

解决:给变量值及上引号即可,比如EXEC /etc/snmp/test.py "$+*"

参考文档:

3 SNMP traps

第三方平台告警接入、翻译、关联恢复-云社区-华为云

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号