正規表現
概要
Perl Compatible Regular Expressions (PCRE, PCRE2) は Zabbix でサポートされています。
Zabbix で正規表現を使用する方法は 2 つあります。
- 正規表現を手動で入力する
- Zabbix で作成したグローバル正規表現を使用する
正規表現
サポートされている箇所では、正規表現を手動で入力できます。
式は @ で始めることはできません。Zabbix ではこの記号はグローバル正規表現を参照するために使用されるためです。
正規表現を使用すると、スタックメモリが不足する可能性があります。
詳細は PCRE PERFORMANCE を参照してください。
マルチライン一致では、^ と $ のアンカーは文字列全体の先頭/末尾ではなく、それぞれ各行の先頭/末尾に一致することに注意してください。
さまざまなコンテキストでの正しいエスケープの例も参照してください。
グローバル正規表現
Zabbix Webインターフェースには、複雑な正規表現を作成およびテストするための高度なエディタがあります。
この方法で正規表現を作成すると、@ を前置した名前で参照することで、Webインターフェース内の複数の場所で使用できます。たとえば、@mycustomregexp です。
グローバル正規表現を作成するには、次の手順を実行します。
- 管理 > 一般 に移動します。
- ドロップダウンから 正規表現 を選択します。
- 新しい正規表現 をクリックします。
Expressions タブでは、正規表現名の設定とサブ式の追加を行えます。

必須入力フィールドには赤いアスタリスクが表示されます。
| Parameter | Description | |
|---|---|---|
| Name | 正規表現名を設定します。Unicode 文字を使用できます。 | |
| Expressions | Expressions ブロックで Add をクリックして、新しいサブ式を追加します。 | |
| Expression type | 式の種類を選択します: Character string included - 部分文字列に一致 Any character string included - 区切り文字付きリスト内の任意の部分文字列に一致します。区切り文字付きリストには、カンマ (,) 、ドット (.) 、またはスラッシュ (/) が含まれます。 Character string not included - 部分文字列を除く任意の文字列に一致 Result is TRUE - 正規表現に一致 Result is FALSE - 正規表現に一致しない |
|
| Expression | 部分文字列/正規表現を入力します。 | |
| Delimiter | 正規表現内のテキスト文字列を区切るためのカンマ (,) 、ドット (.) 、またはスラッシュ (/) です。このパラメーターは、"Any character string included" の式タイプが選択されている場合にのみ有効です。 | |
| Case sensitive | 正規表現が大文字と小文字を区別するかどうかを指定するチェックボックスです。 | |
式内のスラッシュ (/) は区切り文字ではなく、リテラルとして扱われます。 このため、スラッシュを含む式でもエラーなく保存できます。
Zabbix のカスタム正規表現名には、カンマ、スペースなどを含めることができます。
参照時に誤解釈される可能性がある場合(たとえば、アイテムキーのパラメーター内にカンマがある場合など)は、参照全体を次のように引用符で囲めます: "\@My custom regexp for purpose1, purpose2"。
正規表現名は、他の場所(たとえば、LLD ルールのプロパティ)では引用符で囲んではいけません。
Test タブでは、テスト文字列を指定して正規表現とそのサブ式をテストできます。

結果には、各サブ式の状態とカスタム式全体の状態が表示されます。
カスタム式全体の状態は Combined result として定義されます。 複数のサブ式が定義されている場合、Zabbix は AND 論理演算子を使用して Combined result を計算します。 つまり、少なくとも 1 つの Result が False の場合、Combined result も False になります。
デフォルトのグローバル正規表現
Zabbix には、デフォルトのデータセットにいくつかのグローバル正規表現が含まれています。
| 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" または "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" |
例
例 1
低レベルディスカバリで、特定の名前のデータベースを除外してデータベースを検出するために、次の式を使用します。
^TESTDATABASE$

選択した Expression type は「Result is FALSE」です。名前に一致せず、文字列 "TESTDATABASE" を含みません。
インライン正規表現修飾子を使用した例
以下の正規表現では、インライン修飾子 (?i) を使用して文字列 "error" に一致させます。
(?i)error

選択した Expression type: "Result is TRUE"。 文字列 "error" が一致します。
インライン正規表現修飾子を使った別の例
次の正規表現では、複数のインライン修飾子を使用して、特定の行の後ろにある文字を一致させます。
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

選択した式の種類: "Result is TRUE"。 特定の行の後ろにある文字が一致します。
g 修飾子は行内で指定できません。 使用可能な修飾子の一覧は pcresyntax man page で確認できます。 PCRE の構文の詳細については、PCRE HTML documentation を参照してください。
場所別の正規表現サポート
| 場所 | 正規表現 | グローバル正規表現 | 複数行マッチング | コメント | |
|---|---|---|---|---|---|
| エージェントアイテム | |||||
| eventlog[] | Yes | Yes | Yes | regexp、severity、source、eventid パラメータ |
|
| eventlog.count[] | regexp、severity、source、eventid パラメータ |
||||
| log[] | regexp パラメータ |
||||
| log.count[] | |||||
| logrt[] | Yes/No | regexp パラメータは両方をサポートし、file_regexp パラメータは非グローバル正規表現のみをサポート |
|||
| logrt.count[] | |||||
| proc.cpu.util[] | No | No | cmdline パラメータ |
||
| proc.get[] | |||||
| proc.mem[] | |||||
| proc.num[] | |||||
| sensor[] | Linux 2.4 の device および sensor パラメータ |
||||
| system.hw.macaddr[] | interface パラメータ |
||||
| system.sw.packages[] | regexp パラメータ |
||||
| system.sw.packages.get[] | regexp パラメータ |
||||
| vfs.dir.count[] | regex_incl、regex_excl、regex_excl_dir パラメータ |
||||
| vfs.dir.get[] | regex_incl、regex_excl、regex_excl_dir パラメータ |
||||
| vfs.dir.size[] | regex_incl、regex_excl、regex_excl_dir パラメータ |
||||
| vfs.file.regexp[] | Yes | regexp パラメータ |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| SNMPトラップ | |||||
| snmptrap[] | Yes | Yes | No | regexp パラメータ |
|
| アイテム値の前処理 | Yes | No | No | pattern パラメータ |
|
| トリガー/計算アイテム用関数 | |||||
| count() | Yes | Yes | Yes | operator パラメータが regexp または iregexp の場合は pattern パラメータ |
|
| countunique() | Yes | Yes | |||
| find() | Yes | Yes | |||
| logeventid() | Yes | Yes | No | pattern パラメータ |
|
| logsource() | |||||
| 低レベルディスカバリ | |||||
| Filters | Yes | Yes | No | Regular expression フィールド | |
| Overrides | Yes | No | Operation 条件の matches、does not match オプション内 | ||
| アクション条件 | Yes | No | No | Host name および Host metadata の自動登録条件における matches、does not match オプション内 | |
| スクリプト | Yes | Yes | No | Input validation rule フィールド | |
| Web監視 | Yes | No | Yes | regex: プレフィックス付きの Variables Required string フィールド |
|
| ユーザーマクロのコンテキスト | Yes | No | No | regex: プレフィックス付きのマクロコンテキスト内 | |
| マクロ関数 | |||||
| regsub() | Yes | No | No | pattern パラメータ |
|
| iregsub() | |||||
| マップ内のリンクインジケーター | Yes | No | No | Pattern フィールド(テキストアイテム用) | |
| アイコンマッピング | Yes | Yes | No | Expression フィールド | |
| 値のマッピング | Yes | No | No | マッピングタイプが regexp の場合の Value フィールド |
|
| エージェント設定パラメータ | |||||
| AllowKeyRegexp | Yes | No | No | Pattern | |
| DenyKeyRegexp | |||||