Zabbix支持 Perl兼容的正规表达式库 (PCRE)。
在Zabbix中有两种使用正则表达式的方法:
你可以在支持的位置手动输入正则表达式。请注意,表达式可能不以@开头,因为该符号在Zabbix中用于引用全局正则表达式。
在Zabbix前端,有一个高级的编辑器用于创建和测试复杂的正则表达式。
一旦以这种方式创建了正则表达式,它就可以在前端的几个地方使用,方法是加个@前缀来引用它的名称, 例如,@mycustomregexp。
创建全局正则表达式:
正则表达式选项卡允许设置正则表达式名称并添加子表达式。
所有必填输入字段都标有红色星号。
参数 | 说 | |
---|---|---|
名称 | 设 | 正则表达式名称。允许使用任何Unicode字符。 |
表达式 | 单击 | 达式块中的 添加 用来添加新的子表达式。 |
表达式类型 选择表达 | 类型: 字符串已包含 - 匹配子字符串 包括任何字符串 - 匹配分隔列表中的任何子字符串。分隔列表包括逗号(,)、点号(.)或正斜杠(/)。 字符串未包含 - 匹配除此以外的任何子字符串 结果为真 - 匹配正则表达式 结果为假 - 不匹配正则表达式 |
|
表达式 输入 | 字符串/正则表达式。 | |
分隔符 | 用逗 | (,)、点号(.)或正斜杠(/)分隔正则表达式中的文本字符串。仅当选择“包括任何字符串”表达式类型时,此参数才有效。 |
区分大小写 | 此复选框 | 于指定正则表达式是否对字母大小写敏感。 |
自Zabbix 2.4.0开始,表达式中的正斜杠(/)按字面意思处理,而不是分隔符。这样就可以保存包含斜杠的表达式,而以前版本则会报错。
<note important>Zabbix里自定义的表达式名称可以包含逗号,空格等。在引用时可能导致误解的情况下(例如,监控项键值的参数中的逗号),整个引用可以放在引号中,如下所示:// " @My custom regexp for purpose1, purpose2"//。
不能在其他位置引用正则表达式名称(例如,在低级自动发现规则属性中)。 :::
在低级自动发现中使用以下正则表达式,来发现不考虑具有特定名称的数据库:
选择 表达式类型: "结果为假"。不匹配名称,包含字符串“TESTDATABASE”。
使用如下带有内联修饰符(?i)的正则表达式匹配“error”字符:
选择 表达式类型: "结果为真"。“error”字符被匹配到。
使用如下带有内联修饰符(?i)的正则表达式匹配“error”字符:
选择表达式类型: "结果为真"。匹配特定行后的字符。
g修饰符不能在行中指定。可用的修饰符列表可以在 pcresyntax手册 里找到。如果想了解更多的PCRE正则表达式语法,请参考 PCRE HTML文档。
自定义正则表达式可能包含多个子表达式,可以通过提供测试字符串在Test选项卡中进行测试。
结果显示每个子表达式的状态和整个自定义表达式的状态。
整个自定义表达式状态定义为 合并结果。如果定义了几个子表达式,Zabbix使用与逻辑运算符来计算 合并结果。这意味着如果只要有一个结果为False,合并结果 也为False状态。
全局正则表达式 表达式 | 说明 | |
---|---|---|
文件系统发现 ^(bt|fs\|ext2\|ext3\|ext4\|jfs\|reiser\|xfs\|ffs\|ufs\|jfs\|jfs2\|vxfs\|hfs\|refs\|ntfs\|fat32\|zfs)$ 匹配btr |
s”或“ext2”或“ext3”或“ext4”或“jfs”或“reiser”或“xfs”或“ffs”或“ufs”或“jfs”或“jfs2”或“vxfs”或“hfs“或”refs“或”ntfs“或”fat32“或”zfs“ | |
网络接口发现 ^Sof|ware Loopback Interface 匹配以"S |
ftware Loopback Interface"开头的字符串 | |
^lo$ |
匹配"lo" | |
^(In)?[Ll]oop[Bb]ack[0-9._]*$ |
匹配以 “In” 开头(该项可选),然后是“L”或者“l”字符,然后是“oop”,然后是“B”或者“b”,然后是“ack”,最后以任意长度(长度可能为0)的数字(0-9),点号(.)或者下划线(_)结尾的字符串 | |
^NULL[0-9.]*$ |
匹配以“NULL”开头的字符串,后面是任意长度(长度可能为0)的数字(0-9)或者点号(.) | |
^[Ll]o[0-9.]*$ |
匹配以“Lo”或者“lo”开头的字符串,后面是任意长度(长度可能为0)的数字(0-9)或者点号(.) | |
^[Ss]ystem$ |
匹配“System”或者“system” | |
^Nu[0-9.]*$ |
匹配以 “Nu” 开头的字符串,后面是任意长度(长度可能为0)的数字(0-9)或者点号(.) | |
存储设备SNMP发现 ^(Ph|sical memory\|Virtual memory\|Memory buffers\|Cached memory\|Swap space)$ 匹配"Ph |
sical memory"或"Virtual memory"或"Memory buffers"或"Cached memory"或"Swap space" | |
Windows服务名称发现 ^(MM|SS\|gupdate\|SysmonLog\|clr_optimization_v2.0.50727_32\|clr_optimization_v4.0.30319_32)$ 匹配“MM |
SS”或“gupdate”或“SysmonLog”或类似“clr_optimization_v2.0.50727_32”和“clr_optimization_v4.0.30319_32”的字符串,而不是点号,可以放置除换行符之外的任何字符。 | |
Windows服务启动状态发现 ^(auto|atic\|automatic delayed)$ 匹配"auto |
atic"或"automatic delayed"。 |
位置 | 正 | 表达式 全局正则表达 | 注释 | |
---|---|---|---|---|
Agent监控项 | ||||
eventlog[] | 支持 支 | re|exp , severity , source , eventid 参数 |
||
log[] | regexp 参数 |
|||
log.count[] | ||||
logrt[] | 支持/不支持 reg|xp 参数两者都支持, file_regexp 参数仅支持非全局表达式 |
|||
logrt.count[] | ||||
proc.cpu.util[] | 不支持 c|dline 参数 |
|||
proc.mem[] | ||||
proc.num[] | ||||
sensor[] | device 和 sensor 参数在Linux 2.4中 |
|||
system.hw.macaddr[] | interface 参数 |
|||
system.sw.packages[] | package 参数 |
|||
vfs.dir.count[] | regex_incl 和 regex_excl 参数 |
|||
vfs.dir.size[] | regex_incl 和 regex_excl 参数 |
|||
vfs.file.regexp[] | regexp 参数 |
|||
vfs.file.regmatch[] | ||||
web.page.regexp[] | ||||
SNMP捕捉器 | ||||
snmptrap[] | 支持 支 | re|exp 参数 |
||
监控项值预处理 | 支持 | 不支持 | pattern 参 |
|
触发器函数 | ||||
count() | 支持 支 | pa|tern 参数,如果 operator 参数是 regexp 或者 iregexp |
||
logeventid() | pattern 参数 |
|||
iregexp() | ||||
regexp() | ||||
低级别发现 | 支持 | 支持 | 过滤 字段 | |
Web监测 | 支 | 不支持 | *Varia | les* 带有 regex: 前缀 变量所需字符串 字段 |
宏函数 | ||||
regsub() | 支持 不 | 持 pat|ern 参数 |
||
iregsub() | ||||
图标映射 | 支持 | 支持 | 表达式 字 |