Zabbix Documentation 5.0

3.04.05.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.24.4Guidelines

User Tools

Site Tools


manual:regular_expressions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
manual:regular_expressions [2019/06/03 06:23]
martins-v fixing typo
manual:regular_expressions [2020/06/09 08:45]
martins-v regular expression support in macro context (ZBXNEXT-3205)
Line 17: Line 17:
  
 Note that in multi-line matching, the ''​^''​ and ''​$''​ anchors match at the beginning/​end of each line respectively,​ instead of the beginning/​end of the entire string. Note that in multi-line matching, the ''​^''​ and ''​$''​ anchors match at the beginning/​end of each line respectively,​ instead of the beginning/​end of the entire string.
 +
 === Global regular expressions === === Global regular expressions ===
  
Line 47: Line 48:
 <note important>​A custom regular expression name in Zabbix may contain commas, spaces, etc. In those cases where that may lead to misinterpretation when referencing (for example, a comma in the parameter of an item key) the whole reference may be put in quotes like this: //​%%"​%%@My custom regexp for purpose1, purpose2%%"​%%//​.\\ Regular expression names must not be quoted in other locations (for example, in LLD rule properties).</​note>​ <note important>​A custom regular expression name in Zabbix may contain commas, spaces, etc. In those cases where that may lead to misinterpretation when referencing (for example, a comma in the parameter of an item key) the whole reference may be put in quotes like this: //​%%"​%%@My custom regexp for purpose1, purpose2%%"​%%//​.\\ Regular expression names must not be quoted in other locations (for example, in LLD rule properties).</​note>​
  
-=== Example ===+== Default global regular expressions ​==
  
-Use of the following ​regular ​expression in LLD to discover databases ​not taking into consideration ​a database with a specific name:  ​+Zabbix comes with several global regular expression in its default dataset. 
 + 
 +^Name^Expression^Matches^ 
 +|//File systems for discovery// ​ |''​^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$'' ​ |%%"​%%btrfs%%"​%% or %%"​%%ext2%%"​%% or %%"​%%ext3%%"​%% or %%"​%%ext4%%"​%% or %%"​%%jfs%%"​%% or %%"​%%reiser%%"​%% or %%"​%%xfs%%"​%% or %%"​%%ffs%%"​%% or %%"​%%ufs%%"​%% or %%"​%%jfs%%"​%% or %%"​%%jfs2%%"​%% or %%"​%%vxfs%%"​%% or %%"​%%hfs%%"​%% or %%"​%%refs%%"​%% or %%"​%%apfs%%"​%% or %%"​%%ntfs%%"​%% or %%"​%%fat32%%"​%% or %%"​%%zfs%%"​%% ​ | 
 +|//Network interfaces for discovery// ​ |''​^Software Loopback Interface'' ​ |Strings starting with %%"​%%Software Loopback Interface%%"​%%. ​ | 
 +|  |''​^lo$'' ​ |%%"​%%lo%%"​%% ​ | 
 +|  |''​^(In)?​[Ll]oop[Bb]ack[0-9._]*$'' ​ |Strings that optionally start with %%"​%%In%%"​%%,​ then have %%"​%%L%%"​%% or %%"​%%l%%"​%%,​ then %%"​%%oop%%"​%%,​ then %%"​%%B%%"​%% or %%"​%%b%%"​%%,​ then %%"​%%ack%%"​%%,​ which can be optionally followed by any number of digits, dots or underscores. ​ | 
 +|  |''​^NULL[0-9.]*$'' ​ |Strings starting with %%"​%%NULL%%"​%% optionally followed by any number of digits or dots.  | 
 +|  |''​^[Ll]o[0-9.]*$'' ​ |Strings starting with %%"​%%Lo%%"​%% or %%"​%%lo%%"​%% and optionally followed by any number of digits or dots.  | 
 +|  |''​^[Ss]ystem$'' ​ |%%"​%%System%%"​%% or %%"​%%system%%"​%% ​ | 
 +|  |''​^Nu[0-9.]*$'' ​ |Strings starting with %%"​%%Nu%%"​%% optionally followed by any number of digits or dots.  | 
 +|//Storage devices for SNMP discovery// ​ |''​^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$'' ​ |%%"​%%Physical memory%%"​%% or %%"​%%Virtual memory%%"​%% or %%"​%%Memory buffers%%"​%% or %%"​%%Cached memory%%"​%% or %%"​%%Swap space%%"​%% ​ | 
 +|//Windows service names for discovery// ​ |''​^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$'' ​ |%%"​%%MMCSS%%"​%% or %%"​%%gupdate%%"​%% or %%"​%%SysmonLog%%"​%% or strings like %%"​%%clr_optimization_v2.0.50727_32%%"​%% and %%"​%%clr_optimization_v4.0.30319_32%%"​%% where instead of dots you can put any character except newline. ​ | 
 +|//Windows service startup states for discovery// ​ |''​^(automatic|automatic delayed)$'' ​ |%%"​%%automatic%%"​%% or %%"​%%automatic delayed%%"​%% ​ | 
 + 
 +=== Examples === 
 + 
 +== Example 1 == 
 + 
 +Use of the following expression in low-level discovery ​to discover databases ​except ​a database with a specific name:  ​
  
   ^TESTDATABASE$   ^TESTDATABASE$
Line 57: Line 77:
 Chosen //​Expression type//: %%"​Result is FALSE"​%%. Doesn'​t match name, containing string "//​TESTDATABASE//"​. Chosen //​Expression type//: %%"​Result is FALSE"​%%. Doesn'​t match name, containing string "//​TESTDATABASE//"​.
  
-=== Example with an inline regex modifier ​===+== Example with an inline regex modifier ==
  
 Use of the following regular expression including an inline modifier (?i) to match the characters "​error":​ Use of the following regular expression including an inline modifier (?i) to match the characters "​error":​
Line 67: Line 87:
 Chosen //​Expression type//: %%"​Result is TRUE"​%%. Characters "​error"​ are matched. ​ Chosen //​Expression type//: %%"​Result is TRUE"​%%. Characters "​error"​ are matched. ​
  
-=== Another example with an inline regex modifier ​===+== Another example with an inline regex modifier ==
  
 Use of the following regular expression including multiple inline modifiers to match the characters after a specific line: Use of the following regular expression including multiple inline modifiers to match the characters after a specific line:
Line 78: Line 98:
 <note important>​ **g** modifier can't be specified in line. The list of available modifiers can be found in [[https://​www.pcre.org/​original/​doc/​html/​pcresyntax.html#​SEC16|pcresyntax man page]]. For more information about PCRE syntax please refer to [[https://​www.pcre.org/​original/​doc/​html/​pcrepattern.html|PCRE HTML documentation]]. ​ </​note>​ <note important>​ **g** modifier can't be specified in line. The list of available modifiers can be found in [[https://​www.pcre.org/​original/​doc/​html/​pcresyntax.html#​SEC16|pcresyntax man page]]. For more information about PCRE syntax please refer to [[https://​www.pcre.org/​original/​doc/​html/​pcrepattern.html|PCRE HTML documentation]]. ​ </​note>​
  
-=== More complex example ​===+== More complex example ==
  
 A custom regular expression may consist of multiple subexpressions,​ and it can be tested in the **Test** tab by providing a test string. A custom regular expression may consist of multiple subexpressions,​ and it can be tested in the **Test** tab by providing a test string.
Line 87: Line 107:
  
 Total custom expression status is defined as //Combined result//. If several sub expressions are defined Zabbix uses AND logical operator to calculate //Combined result//. It means that if at least one Result is False //Combined result// has also False status. ​ Total custom expression status is defined as //Combined result//. If several sub expressions are defined Zabbix uses AND logical operator to calculate //Combined result//. It means that if at least one Result is False //Combined result// has also False status. ​
- 
-=== Explanation of global regular expressions === 
- 
-^Global regexp^Expression^Description^ 
-|//File systems for discovery// ​ |''​^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$'' ​ |Matches "​btrfs"​ or "​ext2"​ or "​ext3"​ or "​ext4"​ or "​jfs"​ or "​reiser"​ or " xfs" or "​ffs"​ or "​ufs"​ or "​jfs"​ or "​jfs2"​ or "​vxfs"​ or "​hfs"​ or "​refs"​ or "​apfs"​ or "​ntfs"​ or "​fat32"​ or "​zfs" ​ | 
-|//Network interfaces for discovery// ​ |''​^Software Loopback Interface'' ​ |Matches strings starting with "​Software Loopback Interface" ​ | 
-|  |''​^lo$'' ​ |Matches "​lo" ​ | 
-|  |''​^(In)?​[Ll]oop[Bb]ack[0-9._]*$'' ​ |Matches strings that optionally start with "​In",​ then have "​L"​ or "​l",​ then "​oop",​ then "​B"​ or "​b",​ then "​ack",​ which can be optionally followed by any number of digits, dots or underscores ​ | 
-|  |''​^NULL[0-9.]*$'' ​ |Matches strings starting with "​NULL"​ optionally followed by any number of digits or dots  | 
-|  |''​^[Ll]o[0-9.]*$'' ​ |Matches strings starting with "​Lo"​ or "​lo"​ and optionally followed by any number of digits or dots  | 
-|  |''​^[Ss]ystem$'' ​ |Matches "​System"​ or "​system" ​ | 
-|  |''​^Nu[0-9.]*$'' ​ |Matches strings staring with "​Nu"​ optionally followed by any number of digits or dots  | 
-|//Storage devices for SNMP discovery// ​ |''​^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$'' ​ |Matches "​Physical memory"​ or "​Virtual memory"​ or "​Memory buffers"​ or "​Cached memory"​ or "Swap space" ​ | 
-|//Windows service names for discovery// ​ |''​^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$'' ​ |Matches "​MMCSS"​ or "​gupdate"​ or "​SysmonLog"​ or strings like "​clr_optimization_v2.0.50727_32"​ and "​clr_optimization_v4.0.30319_32"​ where instead of dots you can put any character except newline. ​ | 
-|//Windows service startup states for discovery// ​ |''​^(automatic|automatic delayed)$'' ​ |Matches "​automatic"​ or "​automatic delayed"​. ​ | 
- 
  
 === Regular expression support by location === === Regular expression support by location ===
Line 135: Line 139:
 |:::​|regexp() ​   |:::​|:::​|:::​| |:::​|regexp() ​   |:::​|:::​|:::​|
 |**[[:​manual/​discovery/​low_level_discovery#​discovery_rule_filter|Low-level discovery]]** ||Yes|Yes|//​Filter//​ field| |**[[:​manual/​discovery/​low_level_discovery#​discovery_rule_filter|Low-level discovery]]** ||Yes|Yes|//​Filter//​ field|
-|**[[:​manual/​config/​notifications/​action/​conditions|Action conditions]]** ||Yes|No|In //​matches//,​ //does not match// options for //Host name// and //Host metadata// ​auto-registration ​conditions|+|**[[:​manual/​config/​notifications/​action/​conditions|Action conditions]]** ||Yes|No|In //​matches//,​ //does not match// options for //Host name// and //Host metadata// ​autoregistration ​conditions|
 |**[[:​manual/​web_monitoring#​configuring_a_web_scenario|Web monitoring]]** ​  ​||Yes|No |//​Variables//​ with a **regex:** prefix\\ //Required string// field| |**[[:​manual/​web_monitoring#​configuring_a_web_scenario|Web monitoring]]** ​  ​||Yes|No |//​Variables//​ with a **regex:** prefix\\ //Required string// field|
 +|**[[:​manual/​config/​macros/​usermacros#​user_macro_context|User macro context]]** ​  ​||Yes|No |In macro context with a **regex:** prefix\\ Supported since Zabbix 5.0.2. ​ |
 |**[[:​manual/​config/​macros/​macro_functions|Macro functions]]**|^ ​ ^^^ |**[[:​manual/​config/​macros/​macro_functions|Macro functions]]**|^ ​ ^^^
 ^   ​|regsub() |Yes|No |''​pattern''​ parameter| ^   ​|regsub() |Yes|No |''​pattern''​ parameter|