正規表現
概要
Perl Compatible Regular Expressions (PCRE, PCRE2) は Zabbix でサポートされています。
Zabbix で正規表現を使用する方法は 2 つあります。
- 正規表現を手動で入力する
- Zabbix で作成したグローバル正規表現を使用する
正規表現
supported places では、正規表現を手動で入力できます。
式は @ で始めてはいけません。この記号は Zabbix でグローバル正規表現を参照するために使用されるためです。
正規表現を使用すると、スタックメモリが不足する可能性があります。 詳細については、PCRE PERFORMANCE を参照してください。
複数行マッチングでは、^ と $ のアンカーは、それぞれ文字列全体の先頭と末尾ではなく、各行の先頭と末尾に一致することに注意してください。
さまざまなコンテキストでの正しいエスケープの例も参照してください。
グローバル正規表現
Zabbixでは、複雑な正規表現を作成およびテストするための高度なエディターがWebインターフェースに用意されています。
アクセスするには、Administration > General > Regular expressions に移動します。
Zabbixには、デフォルトデータセットとして多数の事前定義されたグローバル正規表現が含まれています。

正規表現の一覧は、名前と説明でフィルタリングして、必要な式を見つけることができます。
設定
グローバル正規表現を作成するには、正規表現の作成 をクリックし、フォームに正規表現のパラメータを入力します。

必須入力フィールドには赤いアスタリスクが付いています。
| Parameter | Description | |
|---|---|---|
| Name | 正規表現名を設定します。Unicode 文字を使用できます。 | |
| Expressions | Expressions セクションで Add をクリックして、新しいサブ式を追加します。 | |
| Expression type | 式の種類を選択します: Contains string - 部分文字列に一致します。 Contains any substring from list - 区切り記号で区切られたリスト内の任意の部分文字列に一致します。区切り記号には、カンマ ,、ドット .、またはスラッシュ / を使用できます。Does not contain string - 部分文字列を除く任意の文字列に一致します。 Matches regular expression - 正規表現に一致します。 Does not match regular expression - 正規表現に一致しません。 |
|
| Expression | 部分文字列/正規表現を入力します。 最大長: 2048 文字。 |
|
| Delimiter | 正規表現内のテキスト文字列を区切るためのカンマ ,、ドット .、またはスラッシュ / です。このパラメータは、Contains any substring from list の式タイプが選択されている場合にのみ有効です。 |
|
| Case sensitive | 正規表現が大文字と小文字を区別するかどうかを指定するチェックボックスです。 | |
| Description | 正規表現の説明を入力します。 | |
| Test expression | 正規表現のテストに使用する値です。 | |
式内のスラッシュ / は区切り記号ではなく、文字そのものとして扱われます。
これにより、スラッシュを含む式をエラーなく保存できます。
Zabbix のカスタム正規表現名には、カンマ、スペースなどを含めることができます。
参照時に誤解を招く可能性がある場合(たとえば、アイテムキーのパラメータ内にカンマがある場合)は、参照全体を次のように引用符で囲むことができます: "\@My custom regexp for purpose1, purpose2"。
正規表現名は、他の場所(たとえば、LLD ルールのプロパティ)では引用符で囲んではいけません。
正規表現を作成すると、@ を前に付けて名前を参照することで、Webインターフェース内の複数の場所で使用できます。たとえば、@mycustomregexp です。
フォームのボタン
フォーム下部のボタンを使用して、さまざまな操作を実行できます。
| ボタン | 説明 |
|---|---|
![]() |
正規表現を追加します。このボタンは、新しい正規表現に対してのみ使用できます。 |
![]() |
正規表現のプロパティを更新します。 |
![]() |
現在の正規表現のプロパティを基に、別の正規表現を作成します。 |
![]() |
指定した値に対して、正規表現とそのサブ表現をテストします。 |
![]() |
正規表現を削除します。 |
![]() |
正規表現のプロパティの編集をキャンセルします。 |
正規表現のテスト
Test expression フィールドに値を入力し、Test ボタンをクリックすると、正規表現とその部分式をテストできます。

Test result 列には、各部分式のステータスが表示されます。
Combined result フィールドには、正規表現全体のステータスが表示されます。
複数の部分式が定義されている場合、Zabbix は論理 AND 演算子を使用して Combined result を計算します。つまり、少なくとも 1 つの結果が False の場合、Combined result も False になります。
デフォルトのグローバル正規表現
デフォルトのデータセットには、次の事前定義されたグローバル正規表現が含まれます。
| Name | Expression | Matches |
|---|---|---|
| File systems for discovery | ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ |
"btrfs" または "ext2" または "ext3" または "ext4" または "reiser" または "xfs" または "ffs" または "ufs" または "jfs" または "jfs2" または "vxfs" または "hfs" または "apfs" または "refs" または "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"。 |
正規表現のインポート/エクスポート
正規表現 のエクスポート/インポート設定ページで説明されているように、グローバル正規表現をインポートまたはエクスポートできます。
例
完全一致する文字列を除外する例
特定の名前を持つデータベースを除き、低レベルディスカバリでデータベースを検出するには、次の式を使用します。
^TESTDATABASE$

Test result と Combined result の両方に FALSE が表示されます。名前が "TESTDATABASE" に一致するため、Does not match regular expression 条件は満たされません。
インライン正規表現修飾子を使用した大文字小文字を区別しない一致の例
次の正規表現を使用します。これは、文字列 "error" に対して大文字小文字を区別しない一致を行うためのインライン修飾子 (?i) を含んでいます。
(?i)error

Test result と Combined result の両方に TRUE が表示されます。これは、Case sensitive が選択されていても、インライン修飾子 (?i) により一致が大文字小文字を区別しなくなるため、文字列 "error" が一致するからです。
複数のインライン正規表現修飾子を使用する例
複数のインライン修飾子を含む次の正規表現を使用して、特定の行の後ろにある文字を一致させます。
(?<=match (?i)eveRything(?-i) after this line\r\n)(?sx).*# comment
ここで、各修飾子は次の意味を持ちます。
(?i)- 大文字小文字を区別しない一致を有効にする;(?-i)- 大文字小文字を区別しない一致を無効にする;(?s)- dotall モードを有効にし、.が改行文字にも一致するようにする;(?x)- 拡張モードを有効にし、正規表現内の空白とコメントを無視できるようにする。

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





