12. 正規表現
概要
Perl互換の正規表現 (PCRE、PCRE2)がZabbixでサポートされています。
Zabbixで正規表現を使用するには2つの方法があります。
- 正規表現を手動で入力する
- Zabbixで作成したグローバルな正規表現を使用する。
正規表現
サポートされている箇所では、正規表現を手動で入力できます。
ただし、この記号はZabbixでグローバル正規表現の参照に使用されるため、式の先頭を @ にすることはできません。
正規表現の使用時にスタック不足が発生する可能性があります。詳細は pcrestack man page を参照してください。
複数行マッチングでは、アンカー ^ と $ は文字列全体の先頭/末尾ではなく、それぞれ各行の先頭/末尾にマッチすることに注意してください。
あわせて、さまざまなコンテキストにおける正しいエスケープの例も参照してください。
グローバルな正規表現
Zabbix フロントエンドで複雑な正規表現を作成およびテストするための高度なエディターがあります。
このようにして作成した正規表現は、\@mycustomregexp のように、先頭に @ を付けたその名前を参照することで、フロントエンドのさまざまな場所で使用できます。
グローバルな正規表現を作成するには:
- 管理 → 一般設定 に移動。
- ドロップダウンから正規表現を選択。
- 正規表現の作成 をクリック。
条件式 タブでは、正規表現名を設定し、部分式を追加できます。

必須入力項目には、赤いアスタリスクが表示されています。
| パラメータ | 説明 | |
|---|---|---|
| 名前 | 正規表現名を設定します。 すべての Unicode 文字を使用できます。 | |
| 条件式 | 条件式ブロックの 追加 をクリックして、新しい部分式を追加します。 | |
| 条件式の形式 | 条件式の形式を選択します: 文字列が含まれる - 部分文字列と一致します いずれかの文字列が含まれる - 区切りリストの任意の部分文字列と一致します。 区切りリストには、コンマ (,)、ドット (.)、またはスラッシュ (/) が含まれます。 文字列が含まれない - 部分文字列以外の任意の文字列に一致します 結果が真 - 正規表現に一致する 結果が偽 - 正規表現に一致しない |
|
| 条件式 | 部分文字列/正規表現を入力します。 | |
| 区切り文字 | 正規表現でテキスト文字列を区切るには、コンマ (,)、ドット (.)、またはスラッシュ (/) を使用します。 このパラメーターは条件式の形式が"いずれかの文字列が含まれる"を選択している場合にのみ有効です。 | |
| 大文字と小文字を区別 | 正規表現が文字の大文字と小文字を区別するかどうかを指定するチェックボックス | |
式内のスラッシュ (/) は、区切り文字ではなく文字どおりに扱われるので、スラッシュを含む式はエラーなしで保存できます。
Zabbixのカスタム正規表現名には、カンマやスペースなどを含むことができます。そのため、参照時に誤解を招く可能性がある場合(例えば、アイテムキーのパラメータにカンマがある場合)、参照全体を次のように引用符で囲むことができます。"\@My custom regexp for purpose1, purpose2".
正規表現名は、他の場所(たとえば LLD ルールのプロパティ)では引用符で囲まないでください。
テスト タブでは、テスト文字列を指定することで、正規表現とその部分式をテストできます。

結果には、各部分式のステータスとカスタム式の合計ステータスが表示されます。
カスタム式の合計ステータスは、結合結果として定義されます。 複数のサブ式が定義されている場合、Zabbix は AND 論理演算子を使用して 結合結果 を計算します。 これは、少なくとも 1 つの結果が False の場合、結合された結果 も 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[] | 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() | |||||
| ローレベルディスカバリ | |||||
| フィルター | Yes | Yes | No | Regular expression フィールド | |
| オーバーライド | 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 フィールド |
|