12. 正規表現
概要
Perl互換の正規表現 (PCRE、PCRE2)がZabbixでサポートされています。
Zabbixで正規表現を使用するには2つの方法があります。
- 正規表現を手動で入力する
- Zabbixで作成したグローバルな正規表現を使用する。
正規表現
サポートされている箇所では、正規表現を手動で入力できます。なお、 その式は @ で始めることはできません。これは、この記号が Zabbix でグローバル正規表現を参照するために使用されるためです。
正規表現の使用時にスタックが不足する可能性があります。詳細は pcrestack man page を参照してください。
複数行マッチングでは、^ および $ アンカーは、文字列全体の先頭/末尾ではなく、
それぞれ各行の先頭/末尾にマッチすることに注意してください。
さまざまなコンテキストにおける正しいエスケープの例も参照してください。
グローバル正規表現
Zabbix Webインターフェースには、複雑な正規表現を作成およびテストするための高度なエディターがあります。
この方法で正規表現を作成すると、名前の先頭に @ を付けて参照することで、Webインターフェース内の複数の場所で使用できます。例えば、\@mycustomregexp のように指定します。
グローバル正規表現を作成するには、次のようにします。
- Administration → General に移動します
- ドロップダウンから Regular expressions を選択します
- New regular expression をクリックします
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 は Combined result の計算に AND 論理演算子を使用します。つまり、少なくとも1つの Result が False の場合、Combined result も False になります。
デフォルトのグローバル正規表現
Zabbix には、デフォルトのデータセットにいくつかのグローバル正規表現が含まれています。
| Name | Expression | Matches |
|---|---|---|
| ディスカバリ用ファイルシステム | ^(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」 |
| ディスカバリ用ネットワークインターフェース | ^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」で始まり、その後ろに任意の数の数字またはドットが続く文字列。 | |
| SNMPディスカバリ用ストレージデバイス | ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ |
「Physical memory」または「Virtual memory」または「Memory buffers」または「Cached memory」または「Swap space」 |
| ディスカバリ用Windowsサービス名 | ^(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サービス起動状態 | ^(automatic|automatic delayed)$ |
「automatic」または「automatic delayed」 |
例
例 1
低レベルの検出で次の式を使用すると、特定の名前のデータベース以外を検出できます。
^TESTDATABASE$

選択されたExpression type : "結果はFALSE "です。"TESTDATABASE" を含んだ名前と一致しません。
インライン型正規表現修飾子を含む例
インラインモディファイアを含む次の正規表現を使用します。
(?i) を使用して、"error" という文字にマッチさせます。
(?i)error

選択されたExpression type : "結果はTRUE "です。文字 "error "にマッチする。
インライン正規表現修飾子を含む別の例
複数のインライン修飾子を含む次の正規表現を使用すると、特定の行以降の文字にマッチします。
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow .match newline characters

選択されたExpression type : "結果はTRUE "です。
特定の行以降の文字にマッチします。
g修飾子は、行内で指定することはできません。利用可能な修飾子の一覧は
利用可能な修飾子のリストは、pcresyntax manpageにあります。
PCRE の構文に関するより詳しい情報は PCRE HTML documentation を参照してください。
場所ごとの正規表現サポート
| 場所 | 正規表現 | グローバル正規表現 | 複数行マッチング | コメント | |
|---|---|---|---|---|---|
| エージェントアイテム | |||||
| eventlog[] | はい | はい | はい | regexp、severity、source、eventid パラメータ |
|
| eventlog.count[] | regexp、severity、source、eventid パラメータ |
||||
| log[] | regexp パラメータ |
||||
| log.count[] | |||||
| logrt[] | はい/いいえ | regexp パラメータは両方をサポートし、file_regexp パラメータは非グローバル式のみをサポート |
|||
| logrt.count[] | |||||
| proc.cpu.util[] | いいえ | いいえ | 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[] | はい | regexp パラメータ |
|||
| vfs.file.regmatch[] | |||||
| web.page.regexp[] | |||||
| SNMPトラップ | |||||
| snmptrap[] | はい | はい | いいえ | regexp パラメータ |
|
| アイテム値の前処理 | はい | いいえ | いいえ | pattern パラメータ |
|
| トリガー/計算アイテム用関数 | |||||
| count() | はい | はい | はい | operator パラメータが regexp または iregexp の場合の pattern パラメータ |
|
| countunique() | はい | はい | |||
| find() | はい | はい | |||
| logeventid() | はい | はい | いいえ | pattern パラメータ |
|
| logsource() | |||||
| ローレベルディスカバリ | |||||
| フィルター | はい | はい | いいえ | Regular expression フィールド | |
| オーバーライド | はい | いいえ | Operation 条件の matches、does not match オプション内 | ||
| アクション条件 | はい | いいえ | いいえ | Host name および Host metadata 自動登録条件の matches、does not match オプション内 | |
| スクリプト | はい | はい | いいえ | Input validation rule フィールド | |
| Web監視 | はい | いいえ | はい | regex: 接頭辞付きの Variables Required string フィールド |
|
| ユーザーマクロコンテキスト | はい | いいえ | いいえ | regex: 接頭辞付きのマクロコンテキスト内 | |
| マクロ関数 | |||||
| regsub() | はい | いいえ | いいえ | pattern パラメータ |
|
| iregsub() | |||||
| アイコンマッピング | はい | はい | いいえ | Expression フィールド | |
| 値のマッピング | はい | いいえ | いいえ | マッピングタイプが regexp の場合の Value フィールド |
|