Zabbix --- Snmp Trap监控详细教程

一、zabbix服务器安装snmptrapd服务

1、安装服务

yum -y install net-snmp net-snmp-agent-libs net-snmp-devel net-snmp-libs net-snmp-perl net-snmp-utils

注:使用perl脚本解析trap信息并进行格式化,net-snmp-perl

2、zabbix启用snmptrap进程,重启服务

 vi /usr/local/zabbix_proxy/etc/zabbix_proxy.conf
SNMPTrapperFile=/tmp/zabbix_traps.tmp #数据从snmp trap守护进程传到服务器的临时文件,必须与zabbix_trap_receiver.pl或者SNMPTT配置文件中一致
StartSNMPTrapper=1 #1代表启用,0为禁用
systemctl restart zabbix_proxy

二、配置snmptrap接收设备trap信息

1、将zabbix源码包里的perl脚本复制到/usr/bin目录下

 cp /usr/local/zabbix-6.0.19/misc/snmptrap/zabbix_trap_receiver.pl /usr/bin/zabbix_trap_receiver.pl

2、编辑snmptrap服务配置文件

vi /etc/snmp/snmptrapd.conf
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
authCommunity   log,execute,net public #只接收团体字为public的trap信息
# 不做任何验证 disableAuthorization  yes
# traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold
perl do "/usr/bin/zabbix_trap_receiver.pl"

3、检查zabbix_trap_receiver.pl脚本中的“trap信息存放路径”配置是否与zabbix配置一致

grep -w '$SNMPTrapperFile' /usr/bin/zabbix_trap_receiver.pl

注意:Zabbix不提供任何日志轮询系统(它应由用户处理)。trapfile文件需要设置日志切割, 日志轮询应该首先重命名旧文件,然后才能将其删除,以免丢失trap:

4、查看第三方mib文件的存放目录

net-snmp-config --default-mibdirs
#输出 /root/.snmp/mibs:/usr/share/snmp/mibs

将第三方mib放入目录/usr/share/snmp/mibs,用于perl脚本或SNMPTT解析OID信息。

(vSphere的mib库下载地址:https://customerconnect.vmware.com/cn/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0#drivers_tools“VMware vSphere Management Information Base”部分)

 5、启动snmptrap服务

systemctl start snmptrapd.service

6、测试snmptrap接收以及perl脚本解析功能

snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.4' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.4 s "testMonitor03"

如在指定的trap存放文件中接收到对应解析信息即正常,本案例中为“/tmp/zabbix_traps.tmp”

注:如不正常,检查配置文件以及net-snmp-perl是否安装成功,若重新安装后需重启snmptrap服务再进行测试。

SNMP TRAP监控过程

  • 被监控设备向zabbix发送一个trap信息,由二进制snmptrapd进程接收它。
  • snmptrapd进程执行perl脚本,该脚本将trap信息解析转换为适合Zabbix监控的格式(基本上添加标头)。
  • 解析后,trap信息被保存到/tmp/zabbix_traps.tmp
  • SNMP trapper检查文件是否有新的trap信息,并将其与监控主机匹配。

三、使用snmptt解析trap信息(第二种)

1、安装snmptt服务

  • 1.1 官网下载二进制包 Download SNMP Trap Translator

http://www.net-snmp.org/download.html

SNMPTT

  • 1.2 安装snmptt

tar xf snmptt_1.5.tgz
cd snmptt_1.5

#将snmptt自带相关命令拷贝到/usr/sbin下
cp snmptt /usr/sbin/ && chmod +x /usr/sbin/snmptt
cp snmptthandler /usr/sbin/ && chmod +x /usr/sbin/snmptthandler
cp snmpttconvertmib /usr/sbin/ && chmod +x /usr/sbin/snmpttconvertmib
cp snmpttconvert /usr/sbin/ && chmod +x /usr/sbin/snmpttconvert

#拷贝snmptt配置文件snmptt.ini和snmptt.conf解析规则文件到放/etc/snmp下
cp snmptt.ini /etc/snmp/
cp examples/snmptt.conf.generic /etc/snmp/snmptt.conf

cp snmptt.service /usr/lib/systemd/system

2、编辑snmptt配置文件snmptt.ini

#允许使用NET-SNMP包中的Perl模块:
net_snmp_perl_enable = 1

#将日志记录到trap文件中,该文件将被Zabbix读取
log_enable = 1
log_file = [TRAP FILE]

#设置日期-时间格式
date_time_format = %H:%M:%S %Y/%m/%d

3、修改snmptrap配置文件snmptrapd.conf

    3.1、使用SNMPTT守护进程模式

traphandle default snmptthandle
#注释原来的perl方式,修改为snmptt方式

注:使用--daemon命令行选项运行SNMPTT或将snmptt.ini文件中的模式变量设置为守护进程将导致SNMPTT在守护进程模式下运行         

          或者在使用嵌入式处理程序时,需要用

perl do "/usr/sbin/snmptthandler-embedded"

注意:使用嵌入式处理程序时会获得更好的性能

    3.2、使用SNMPTT独立模式

traphandle default /usr/sbin/snmptt

注:snmptt.conf文件越大,处理时间就越长。如果会收到大量TRAP,则应使用守护进程模式。在没有--daemon命令行选项的情况下运行SNMPTT将导致独立模式,除非snmptt.ini文件中的模式变量设置为守护进程。对于独立模式,snmptt.ini文件中的模式变量应设置为独立模式

4、snmptt.conf添加snmptt解析规则

# 1、匹配Linkdown的规则,注意index设置为*匹配所有端口
EVENT LinkDown .1.3.6.1.6.3.1.1.5.3.* "Status Events" Warning
FORMAT ZBXTRAP $aA LinkDown on interface $4.    Admin state: $2.    Operational state: $3.   

# 2、匹配Linkup的规则,注意index设置为*匹配所有端口
EVENT LinkUp  .1.3.6.1.6.3.1.1.5.4.* "Status Events" Normal
FORMAT ZBXTRAP $aA LinkUp on interface $4.    Admin state: $2.    Operational state: $3.   

# 3、vSphere警报,oid设置为.* 所有trap信息都按此规则处理
EVENT General .* "General event" Warning
FORMAT ZBXTRAP vCenter发送地址:$aA    $Fn告警ESXI地址:$5   $Fn警报详情:$4
NODES 10.0.xxx.xxx (注:vcenterIP地址)

# 4、默认规则,oid设置为.* 没有其他规则匹配到时,所有trap信息都按此规则处理
EVENT General .* "General event" Warning
FORMAT ZBXTRAP trap代理主机名:$A   trap代理IP:$aA   Trap主机名:$R   IP地址:$aR   类别:$c   严重性:$s  InFo:$1 --- $2 --- $3 --- $4 --- $5 --- $6 --- $7 --- $8

5、重启snmptrapd与snmptt服务

systemctl restart snmptrapd
systemctl start snmptt

启动snmptt时发生报错:

1、

需要安装perl-Config-IniFiles,如果yum源找不到软件包,可以下载源码包再用yum local install perl-Config-IniFiles-2.79-1.el7.noarch.rpm解决依赖关系

2、

如上需要安装perl-Sys-Syslog

6、测试snmptrap接收以及snmptt解析功能

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 "teststring001" .1.3.6.1.6.3.1.1.5.3 s "Down" .1.3.6.1.6.3.1.1.5.3 s "UP" .1.3.6.1.6.3.1.1.5.3 s "Interface-32"

四、zabbix配置监控与告警

1、创建监控主机

主机接口需要与发送trap信息设备的IP一致

Zabbix --- Snmp Trap监控详细教程_第1张图片

2、添加snmptrap监控项

Zabbix --- Snmp Trap监控详细教程_第2张图片

3、设置触发器

snmptrap信息特殊性一般需要手动设置恢复表达式,另外可能一条信息包含多个接口的状态,所以事件生成要选择“多重”,事件关闭要设置为“匹配标签”使告警不会被误关闭。

 4、使用regsub/iregsub宏函数配置标签

Zabbix --- Snmp Trap监控详细教程_第3张图片

五、SNMPTT使用技巧

1、自动创建snmptt.conf 解析规则

snmptt.conf定义了解析规则,自己单独为OID创建解析规则太过繁琐。

    1.1、转换mib命令格式:

nmpttconvertmib -in=path-to-mib -out=/tmp/snmptt.conf --net_snmp_perl
# 将path-to-mib文件自动解析并将转换结果追加到snmptt.conf文件中

    1.2、大量mib文件批量转换:

#由于snmpttconvertmib不支持批量转换,可能需要通过脚本来进行批量转换:
for f in $(grep -l -i "notification" ./*);do snmpttconvertmib -in="$f" -out=/tmp/snmptt.conf --net_snmp_perl;done;

#目的使用循环读取不同MIB文件,将所有文件内容包含"notification"的mib文件解析转换,转换后的结果导入到指定一个或者多个文件中。TRAP-TYPE (v1) or NOTIFICATION-TYPE 

    1.3、修改转换后的snmptt.conf文件,每个 FORMAT 行都需要添加ZBXTRAP,否则ZABBIX无法解析

sed -r -i "s/^(FORMAT)/\1 ZBXTRAP \$aA/g" /tmp/snmptt.conf

grep "FORMAT" /tmp/snmptt.conf #检查修改结果

    1.4、在snmptt.ini配置文件中添加新的解析规则conf文件

vi /etc/snmptt/snmptt.ini

###
snmptt_conf_files = <
systemctl restart snmptt

注意:conf文件中的解析规则不要重复,否则同一个snmptrap事件会匹配多个规则,并生成多条事件。

2、snmptt.conf解析规则中的”EXEC”/“PREEXEC”属性可以实现很多功能

例如:IP地址自动转换,HEX->IP地址;利用snmpget命令获取trap的描述信息;执行自愈脚本等

案例:通过SNMPTT中”EXEC”属性,自定义外部python脚本,将vsphere虚拟化的SNMPTRAP信息hexstring格式进行转码翻译后,再将翻译后的消息写回到SNMPTrapperFile定义的文件中,实现告警事件接入ZABBIX并提升SNMPTRAP信息可读性。

    2.1、创建解码脚本

# -*- coding: utf-8 -*-
# 用于将vsphere snmptrap告警事件hex string格式转换为可读的字符串格式,然后再记录到snmptrap文件中供zabbix监控
import struct  
import sys
import time

logtime=time.strftime('%H:%M:%S %Y/%m/%d',time.localtime())
trapfile = "/var/log/snmptrap/zabbix_traps.tmp"
hex_string = sys.argv[1]  
vcenter_ip = sys.argv[2]
esxi_ip = sys.argv[3]

# 将hex字符串转换成utf-8字符串
byte_message = struct.pack('B'*len(hex_string.split()), *[int(hex_string.split()[i], 16) for i in range(len(hex_string.split()))])  
# 在python2中可以直接输出为字符串,但在python3中输出为byte字节串格式 还需要再解码

utf8_message = byte_message.decode('utf-8')

# 将信息追加到trapfile文件
zbxtrap_message = f'''
{logtime} ZBXTRAP {esxi_ip} have a warning! 
告警类别:vSphere 虚拟化告警
告警事件:{utf8_message}
告警时间:{logtime}
ESXI主机地址:{esxi_ip}
vCenter地址:{vcenter_ip}
'''

with open(trapfile,'a+') as f:
    f.write(zbxtrap_message)
    f.write("\n")
    f.close()
#print zbxtrap_message

    2.2、定义SNMPTRAP事件类型的格式化参数

     注意:此时FORMAT行不再添加ZBXTRAP关键字,由脚本添加关键字并直接写入解析后的信息到trapfile。

 vim /etc/snmp/snmptt.conf
EVENT General .* "General event" Warning
FORMAT vCenter发送地址:$aA  告警ESXI地址:$5  警报详情:$4
EXEC python /etc/snmptt/vsphere_snmptrap.py $4 $aA $5
NODES 10.0.xxx.xxx (注:vcenter IP)
systemctl restart snmptt

3、snmptt.conf解析规则文件语法

详情参看官网:SNMPTT

EVENT event_name event_OID "category" severity
FORMAT format_string
[EXEC command_string]
[NODES sources_list]
[MATCH [MODE=[or | and]] | [$n:[!][( ) | n | n-n | > n]
[SDESC]
[EDESC]

3.1、EVENT

event_name        注:事件名称
  • 包含空格的唯一文本标签(别名)。
  • 当使用snmpttconvertmib转换时,这将匹配MIB文件中TRAP-TYPE或NOTIFICATION-TYPE行上的名称。
event_OID        注:事件OID
  • 不包含空格的虚线格式或符号符号的对象标识符字符串,
  • 如果通过在snmptt.ini文件中设置net_snmp_perl_enable来安装并启用Net-SNMP Perl模块,也可以使用符号名称。例如:IF-MIB::linkDown。
  • OID也可以使用通配符*来匹配结尾所有的Index,或者定义为 .* 匹配所有未知事件。
category        注:类别
  • 用双引号括起来的字符串
  • 如果类别为“IGNORE”,则即使snmpt .conf包含FORMAT和/或EXEC语句,也不会发生任何操作。
  • 如果类别为“LOGONLY”,则会像往常一样记录该陷阱,但是EXEC语句将被忽略。
severity        注:严重性
  • 事件严重程度字符串,日志记录时在输出中使用。
  • 例如: Minor(次要), Major(重要), Normal(正常), Critical(紧急), Warning(警告)
  • 可以在snmptt.ini配置文件中配置将syslog级别或NT事件日志类型与严重性级别匹配的选项。

3.2、FORMAT

format_string        注:格式字符串
  • 每个EVENT只能有一个FORMAT行。
  • 格式字符串用于生成将被记录到任何支持的日志记录方法的文本。
  • 可以使用以下变量对该字符串执行变量替换:
$A -陷阱代理主机名(见注1)
$aA - Trap代理IP地址
$Be - securityEngineID (snmpEngineID)(见注7)
$Bu - securityName (snmpCommunitySecurityName)(见注7)
$BE - contextEngineID (snmpCommunityContextEngineID)(见注释7)
$Bn - contextName (snmpCommunityContextName)(见注7)
$c -类别
$C - Trap社区字符串
$D -来自snmpt . conf或MIB文件的描述文本(见注释6)
$E -符号格式的企业陷阱OID
$e -数字格式的企业trap OID (.1.3.6.1.4.1.n)
$j -企业编号(n)
$Fa -报警(铃)(BEL)
$Ff -形式馈入(Ff)
$Fn -换行符(LF, NL)
$Fr -回报(CR)
$Ft - tab (HT, tab)
$Fz -翻译格式行(仅限EXEC, log_format和syslog_format)
$G -一般陷阱编号(如果是企业陷阱则为0)
$S -特定trap编号(如果是一般trap则为0)
$H -运行SNMPTT的系统主机名
$N -匹配条目的.conf文件中定义的事件名称
$i -匹配条目的.conf文件中定义的事件OID(可以是通配符OID)
$O -符号格式的Trap OID(见注4)
$0 -数字格式的Trap OID(见注4)
$pn - PREEXEC结果n (1-n)
$pun -未知陷阱预执行结果n (1-n)。请参见snmp .ini中的unknown_trap_preexec设置。
$R, $R - Trap主机名(参见注1)
$aR, $aR - IP地址
$s -严重性
$T - Uptime:网络实体初始化后的时间
$X -时间陷阱被假脱机(守护模式)或当前时间(独立模式)
$x -日期陷阱被假脱机(守护模式)或当前日期(独立模式)
$# -陷阱中变量绑定的数目(多少)
$$ -打印$
$@ -从陷阱被假脱机(守护模式)或当前时间(独立模式)开始的秒数
$n -扩展变量绑定n (1-n)(参见注释2,5)
$+n -将变量绑定n (1-n)展开为变量名:值的格式(参见注2、3、5)
$-n -展开变量绑定n (1-n),格式为变量名(变量类型):值(见注2、3、5)
$vn -扩展变量绑定n的变量名(1-n)(参见注3)
$* -扩展所有变量绑定(参见注5)
$+* -以变量名:值的格式展开所有变量绑定(参见注2、3、5)
$-* -以变量名(变量类型):值的格式展开所有变量绑定(参见注2、3、5)

例如:FORMAT NIC switchover to slot $3, port $4 from slot $5, port $6

3.3、[EXEC command_string]

[EXEC command_string]        注:命令 字符串
  • 每个EVENT可以有多个EXEC行。
  • 可选字符串,包含接收到trap后要执行的命令。EXEC行按照它们出现的顺序执行。
  • EXEC使用与FORMAT行相同的变量替换。您可以在EXEC行上使用$Fz来添加翻译后的FORMAT行,而不是重复您已经在FORMAT上定义的内容。

例如:

EXEC /usr/bin/qpage -f TRAP alex "$r: $x $X - NIC switchover to slot $3, port $4 from slot $5, port $6"
    
    FORMAT NIC switchover to slot $3, port $4 from slot $5, port $6
    EXEC /usr/bin/qpage -f TRAP alex "$r: $x $X - $Fz"
    
    EXEC c:\\snmp\\pager netops "$r: $x $X - NIC switchover to slot $3, port $4 from slot $5, port $6"

如果在“snmptt.conf”文件中设置trap severity为LOGONLY,则不会执行EXEC。

注意:与FORMAT行不同的是,消息中没有附加任何内容。如果您想在上面的页面中包含主机名和日期,则必须使用诸如$r、$x和$x之类的变量。

[PREEXEC command_string]        注:命令 字符串
  • 每个EVENT可以有多个PREEXEC行。
  • 可选字符串,包含一条在收到trap后、处理FORMAT和EXEC语句之前执行的命令。外部程序的输出存储在$pn变量中,其中n是从1开始的数字。允许使用多个PREEXEC行。第一个PREEXEC将命令的结果存储在$p1中,第二个PREEXEC将命令的结果存储在$p2中。
  • 删除所有结束换行符。
  • 可以在snmptt.ini配置文件中修改参数pre_exec_enable用于启用/禁用PREEXEC语句。
  • PREEXEC使用与FORMAT行相同的变量替换。

例如:

EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal  
    FORMAT Link down on interface $1($p1). Admin state: $2. Operational state: $3  
    PREEXEC /usr/local/bin/snmpget -v 1 -Ovq -c public $aA ifDescr.$1

样例输出:Link down on interface 69("100BaseTX Port 1/6 Name SERVER1").  Admin state up.  Operational state: down

在上面的示例中,结果是用引号括起来的,因为这是从snmpget返回的结果(它不是由SNMPTT添加的)。

注意:即使在snmptt.conf文件中设置trap severity为LOGONLY, PREEXEC也会执行。

3.4、NODES

[NODES sources_list]        注:节点来源_列表
  • 用于限制哪些设备可以匹配到此事件的解析规则。
  • 每个事件可以有多个节点匹配。
  • 包含主机名、IP地址、CIDR网络地址、网络IP地址范围或文件名的任何组合的可选字符串。如果省略此关键字,则将接受所有来源。每个条目都检查匹配项。一旦发生匹配,搜索就会停止。

例如:

  • 如果您只想要子网192.168.1.0/24上的设备来触发此事件,您可以使用以下节点条目:
NODES 192.168.1.0/24
  • 或者,如果您想要IPv4子网192.168.1.0/24和IPv6子网2001:db8:a::/64上的设备:
 NODES 192.168.1.0/24 2001:db8:a::/64

注意:有两种操作模式:POS(正-默认)和NEG(负)。如果设置为POS,则如果任何NODES条目匹配,则NODES是“匹配”。如果设置为NEG,那么只有当NODES条目都不匹配时,NODES才是“匹配”。要更改操作模式,请使用以下语句之一:

NODES MODE=POS
NODES MODE=NEG

例如匹配任何称为fredbarneybettywilma的主机:

NODES fred barney betty wilma
    NODES MODE=NEG

3.5、MATCH

[MATCH [MODE=[or | and]] | [$n:[!][( )[i] | n | n-n | > n | < n | x.x.x.x | x.x.x.x-x.x.x.x | x.x.x.x/x]]        注:匹配条件
  • 只有值为true的可选匹配表达式,才能将Trap与此事件解析规则相匹配。
  • 如果存在MATCH语句,但没有匹配评估为true,则默认值将不匹配此事件解析规则。
  • 支持以下Perl正则表达式修饰符:
1、i - 匹配时忽略大小写

2、命令格式可用:
MATCH MODE=[or | and]
MATCH $x: [!] (reg) [i]
MATCH $x: [!] n
MATCH $x: [!] n-n
MATCH $x: [!] < n
MATCH $x: [!] > n
MATCH $x: [!] & n
MATCH $x: [!] x.x.x.x
MATCH $x: [!] x.x.x.x-x.x.x.x
MATCH $x: [!] x.x.x.x/x
MATCH $x: [!] x:x:x
MATCH $x: [!] x:x:x/x

注:
or 或 and 为多个条件时的默认匹配模式
$x 是任何变量(例如:$3、$A、$*等)
reg 是一个正则表达式
!用于否定结果,代表not不是
& 相当于AND,代表和
n是一个数字
x.x.x.x 是一个IP地址
x.x.x.x.x-x.x.x.x 是IPv4网络地址范围
x.x.x.x.x/x 是一个IPv4 CIDR网络地址
x:x:x 是一个IPv6地址
x:x:x/x 是一个IPv6 CIDR网络地址

例如:

  • $2必须在1000到2000之间:
MATCH $2: 1000-2000
  • 以下任何一项必须匹配(默认为或):$3必须是52,或者$4必须是192.168.1.10和192.168.1.20之间的IP地址,或者严重性必须是“主要”:
MATCH $3: 52
    MATCH $4: 192.168.1.10-192.168.1.20
    MATCH $s: (Major)
  • 所有必须匹配(和):$3必须大于$20,$5不得包含警报或关键单词,$6必须包含字符串'(1) remaining',$7必须包含不区分大小写的字符串'power':
MATCH $3: >20  
    MATCH $5: !(alarm|critical)  
    MATCH $6: (\(1\) remaining)  
    MATCH $7: (power)i  
    MATCH MODE=and

3.6、REGEX

[REGEX( )( )[i][g][e]]        注:可选的正则表达式
  • 用于在翻译的FORMAT/EXEC行上执行搜索和替换,允许多条 REGEX()() 行
  • 第一个()包含搜索表达式,第二个()包含替换文本
  • 支持以下Perl正则表达式修饰符:
i - 尝试匹配左侧时忽略大小写
g - 替换所有出现,而不是只替换第一个
e - 执行右侧(eval)作为代码
  • 要使用捕获(内存括号)或e修饰符进行替换,您必须首先通过将allow_unsafe_regex设置为1在snmptt.ini文件中启用支持。注意:这被认为是不安全的,因为正确的表达式的内容是由Perl执行的(eval),它可能包含不安全的代码。如果启用此选项,请确保SNMPTT配置文件是安全的!
  • 每条REGEX行都按从上到下的顺序处理,并且是累积的。第二个REGEX根据第一个REGEX等的结果进行操作。

例如:

FORMAT行格式化之前:UPS has detected a building alarm. Cause: UPS1 Alarm #14: Building alarm 3.

REGEX (Building alarm 3)(Computer room high temperature)  
    REGEX (Building alarm 4)(Moisture detection alarm)  
    REGEX (roOm)(ROOM)ig  
    REGEX (UPS)(The big UPS)  
    REGEX (\s+)( )g

格式化之后:The big UPS has detected a building alarm. Cause: UPS1 Alarm #14: Computer ROOM high temperature.

注意:要在搜索表达式中使用括号(or),它们必须反斜杠(\),否则它被解释为捕获(见下文)。替换文本不需要反斜杠。

例如:

FORMAT行格式化之前:FORMAT line before: Alarm (1) and (2) has been triggered

REGEX (\(1\))(One)  
    REGEX (\(2\))((Two))

格式化之后:FORMAT line after: Alarm One and (Two) has been triggered

注意:如果启用了allow_unsafe_regex,则可以在替换文本中使用捕获。

例如:

FORMAT行格式化之前:The system has logged exception error 55 for the service testservice

REGEX (The system has logged exception error (\d+) for the service (\w+))(Service $2 generated error $1)

格式化之后:Service testservice generated error 55

注意:如果启用了allow_unsafe_regex并指定了e修饰符,则执行右侧(evaluated)。这允许您使用Perl函数执行各种任务,例如从十六进制转换为十进制,使用sprintf格式化文本等。所有文本必须位于引号内,并且语句可以使用点(.)串联在一起。

例如:

FORMAT行格式化之前:FORMAT line before: Authentication Failure Trap from IP address: C0 A8 1 FE

REGEX (Address: (\w+)\s+(\w+)\s+(\w+)\s+(\w+))("address: ".hex($1).".".hex($2).".".hex($3).".".hex($4))ei

格式化之后:FORMAT line after: Authentication Failure Trap from IP address: 192.168.1.254

3.7、SDESC

[SDESC]

描述的可选开头。此行和行EDESC之间的所有文本将被SNMPTT忽略。此部分可用于输入有关陷阱的注释,供您自己使用。如果您使用SDSC,则必须遵循EDESC。

3.8、EDESC

[EDESC]

用于结束描述部分。

你可能感兴趣的:(Zabbix监控,zabbix,linux,运维,snmptrap)