12. 正则表达式

概述

Zabbix支持POSIX 正则表达式

在Zabbix中有两种方法使用正则表达式

  • 手动输入正则表达式

  • 使用在Zabbix中创建的全局正则表达式

正则表达式

你可以在受支持位置中手动输入正则表达式。请注意,表达式不能以@开头,因为该符号在Zabbix中用于引用全局正则表达式。

全局正则表达式

有一个高级编辑器用于在Zabbix前端中创建和测试复杂的正则表达式。

一旦以这种方式创建了正则表达式,它可以在前端的多个地方通过引用其名称(前缀为@)来使用,例如@mycustomregexp

创建全局正则表达式

  • 进入: 管理(Administration)→ 一般(General)

  • 从下拉列表中选择正则表达式(Regular expressions)

  • 点击新的正则表达式(New regular expression)

表达式选项卡允许设置正则表达式名称和添加子表达式。

12. 正则表达式 - 图1

参数 说明
名称(Name)设置正则表达式名称。 允许任何Unicode字符。
表达式(Expressions)单击表达式区域中的添加(Add)以添加新的子表达式。
表达式类型(Expression type)选择表达式类型:字符串已包含(Character string included) - 匹配子字符串包含任何字符串(Any character string included) - 匹配逗号分隔列表中的任何子字符串字符串未包含(Character string not included) - 匹配除了子字符串之外的任何字符串结果为真(Result is TRUE) - 匹配正则表达式结果为假(Result is FALSE) - 不匹配正则表达式
表达式(Expression)输入子字符串/正则表达式。

自Zabbix 2.4.0开始,表达式中的正斜杠作为字符处理,而不是分隔符。这样可以保存包含斜杠的表达式,而以前它会产生错误。

Zabbix中的自定义正则表达式名称可能包含逗号,空格等。在引用时可能导致错误解释的情况下(例如,监控项键的参数中的逗号),整个引用可以放在引号中,如下所示 :“@我的自定义regexp为purpose1,purpose2”。\正则表达式名称不能在其他位置引用(例如,在LLD规则属性中)。

自定义正则表达式可能由多个子表达式组成,并且可以通过提供测试字符串在测试选项卡中进行测试

12. 正则表达式 - 图2

结果显示每个子表达式的状态和自定义表达式的状态

正则表达式支持位置

位置正则表达式支持全局正则表达式支持注释
宏函数
regsub() 模式(pattern) 参数
iregsub()
触发器函数
count() 模式(pattern) 参数,如果 (操作员)operator 参数是regexp or iregexp
logeventid()模式(pattern) 参数
iregexp()
regexp()
自动发现
过滤(Filter) 字段
Web监测
变量regex: 为前缀Required string 字段的变量
Zabbix 代理(agent) 项
eventlog[] regexp, severity, source, eventid 参数
log[] regexp 参数
log.count[]
logrt[] 是/否regexp 参数支持两老师, file_regexp 参数只支持non-global 表达式
logrt.count[]
proc.cpu.util[] cmdline 参数
proc.mem[]
proc.num[]
sensor[] devicesensor 参数在 Linux 2.4
system.hw.macaddr[] interface 参数
system.sw.packages[]package 参数
vfs.dir.size[] regex_inclregex_excl 参数
vfs.file.regexp[] regexp 参数
vfs.file.regmatch[]
web.page.regexp[]
SNMP 捕获
snmptrap[]regexp 参数
图标映射(Icon mapping)
Expression 字段