Perl Compatible Regular Expressions (PCRE,PCRE2)在Zabbix中受支持。
在Zabbix中使用正则表达式有两种方式:
您可以在支持正则表达式的地方手动输入。请注意,表达式不能以 @ 开头,因为在 Zabbix 中该符号用于引用全局正则表达式。
在使用正则表达式时,可能会出现run堆栈溢出的情况。更多信息请参阅pcrestack man page。
请注意,在多行匹配中,^
和 $
锚点分别匹配每一行的开头和结尾,而不是整个string的开头和结尾。
另请参阅在不同上下文中使用correct escaping的示例。
Zabbix前端提供了一个高级编辑器,用于创建和测试复杂的正则表达式。
通过这种方式创建正则表达式后,可以在前端的多个位置通过引用其名称(前面加上@)来使用,例如:@mycustomregexp。
要create一个全局正则表达式:
表达式选项卡允许设置正则表达式名称并添加子表达式。
所有必填字段均以红色星号标记。
参数 | 描述 | |
---|---|---|
Name | 设置正则表达式名称。允许使用任何Unicode字符。 | |
Expressions | 点击表达式块中的 添加 以添加新的子表达式。 | |
表达式类型 | 选择表达式类型: 包含字符string - 匹配子字符串 包含任意字符string - 匹配来自分隔列表中的任意子字符串。分隔列表包括逗号(,)、点(.)或正斜杠(/)。 不包含字符string - 匹配除子字符串外的任意string 结果为TRUE - 匹配正则表达式 结果为FALSE - 不匹配正则表达式 |
|
表达式 | 输入子字符串/正则表达式。 | |
Delimiter | 逗号(,)、点(.)或正斜杠(/),用于分隔正则表达式中的文本字符串。此参数仅在选择"包含任意字符string"表达式类型时有效。 | |
Case sensitive | 复选框,用于指定正则表达式是否区分字母大小写。 |
正则表达式中的正斜杠(/)将按字面意义处理,而不是作为分隔符。这样可以保存包含斜杠的表达式而不会出错。
Zabbix中的自定义正则表达式名称可以包含逗号、空格等字符。在引用时(例如,在监控项键的参数中)可能导致误解的情况下,可以将整个引用放在引号中,例如:"@My custom regexp for purpose1, purpose2"。
正则表达式名称在其他位置(例如,在LLD规则属性中)不得加引号。
在测试选项卡中,可以通过提供测试string来测试正则表达式及其子表达式。
结果显示每个子表达式的状态以及整个自定义表达式的状态。
整个自定义表达式状态定义为组合结果。如果定义了多个子表达式,Zabbix使用逻辑运算符AND来计算组合结果。这意味着如果至少有一个结果为False,则组合结果的状态也为False。
Zabbix 在其默认数据集中包含多个全局正则表达式。
名称 | 表达式 | 匹配内容 |
---|---|---|
File systems for discovery | ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ |
"btrfs" 或 "ext2" 或 "ext3" 或 "ext4" 或 "jfs" 或 "reiser" 或 "xfs" 或 "ffs" 或 "ufs" 或 "jfs" 或 "jfs2" 或 "vxfs" 或 "hfs" 或 "refs" 或 "apfs" 或 "ntfs" 或 "fat32" 或 "zfs" |
Network interfaces for discovery | ^Software Loopback Interface |
以 "Software Loopback Interface" 开头的字符串。 |
^lo$ |
"lo" | |
^(In)?[Ll]oop[Bb]ack[0-9._]*$ |
可选以 "In" 开头,接着包含 "L" 或 "l",然后是 "oop",再接着 "B" 或 "b",最后是 "ack",其后可选地跟随任意数量的数字、点或下划线。 | |
^NULL[0-9.]*$ |
以 "NULL" 开头,可选地跟随任意数量的数字或点的字符串。 | |
^[Ll]o[0-9.]*$ |
以 "Lo" 或 "lo" 开头,可选地跟随任意数量的数字或点的字符串。 | |
^[Ss]ystem$ |
"System" 或 "system" | |
^Nu[0-9.]*$ |
以 "Nu" 开头,可选地跟随任意数量的数字或点的字符串。 | |
Storage devices for SNMP discovery | ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ |
"Physical memory" 或 "Virtual memory" 或 "Memory buffers" 或 "Cached memory" 或 "Swap space" |
Windows service names for discovery | ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ |
"MMCSS" 或 "gupdate" 或 "SysmonLog" 或类似 "clr_optimization_v2.0.50727_32" 和 "clr_optimization_v4.0.30319_32" 的字符串,其中点可以替换为除换行符外的任意字符。 |
Windows service startup states for discovery | ^(automatic|automatic delayed)$ |
"automatic" 或 "automatic delayed" |
在低级别自动发现中使用以下表达式来发现数据库,除了特定名称的数据库:
选择的 表达式类型:"结果为FALSE"。不匹配包含string "TESTDATABASE" 的名称。
使用以下包含内联修饰符的正则表达式 (?i) 匹配字符 "error":
选择的 表达式类型:"结果为 TRUE"。字符 "error" 被匹配。
使用包含多个行内修饰符的以下正则表达式来匹配特定行之后的字符:
选择的表达式类型:"Result is TRUE"(结果为 TRUE)。特定行之后的字符被匹配。
g 修饰符不能在行内指定。可用修饰符列表请参见 pcresyntax man page。有关 PCRE 语法的更多信息,请参考 PCRE HTML documentation。
位置 | 正则表达式 | 全局正则表达式 | 多行匹配 | 注释 | |
---|---|---|---|---|---|
Agent items | |||||
eventlog[] | 是 | 是 | 是 | regexp , severity , source , eventid 参数 |
|
eventlog.count[] | regexp , severity , source , eventid 参数 |
||||
log[] | regexp 参数 |
||||
log.count[] | |||||
logrt[] | 是/否 | regexp 参数支持两者,file_regexp 参数仅支持非全局表达式 |
|||
logrt.count[] |
cmdline
参数 |device
and sensor
parameters on Linux 2.4 |interface
parameter |regexp
parameter |regexp
parameter |regex_incl
, regex_excl
, regex_excl_dir
parameters |regex_incl
, regex_excl
, regex_excl_dir
parameters |regex_incl
, regex_excl
, regex_excl_dir
parameters |regexp
parameter |regexp
parameter |pattern
parameter |pattern
parameter if operator
parameter is regexp or iregexp |pattern
parameter |pattern
parameter |regexp
|