10 正規表現
概要
Perl Compatible Regular Expressions (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 は AND 論理演算子を使用して Combined result を計算します。 つまり、少なくとも 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 は「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[] | はい | はい | はい | 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() | |||||
| マップ内のリンクインジケーター | はい | いいえ | いいえ | Pattern フィールド(テキストアイテム用) | |
| アイコンマッピング | はい | はい | いいえ | Expression フィールド | |
| 値のマッピング | はい | いいえ | いいえ | マッピングタイプが regexp の場合の Value フィールド |
|