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

必須入力フィールドには、赤いアスタリスクが付いています。
| パラメータ | 説明 | |
|---|---|---|
| 名前 | 正規表現の名前を設定します。Unicode文字を使用できます。 | |
| 正規表現 | 正規表現ブロックの 追加 をクリックして、新しいサブ正規表現を追加します。 | |
| 正規表現のタイプ | 正規表現のタイプを選択します: 文字列を含む - 部分文字列に一致します 任意の文字列を含む - 区切り文字で区切られたリスト内の任意の部分文字列に一致します。区切り文字には、コンマ(,)、ピリオド(.)、スラッシュ(/)を使用できます。 文字列を含まない - 部分文字列以外の任意の文字列に一致します 結果がTRUE - 正規表現に一致します 結果がFALSE - 正規表現に一致しません |
|
| 正規表現 | 部分文字列または正規表現を入力します。 | |
| 区切り文字 | 正規表現内のテキスト文字列を区切るためのコンマ(,)、ピリオド(.)、またはスラッシュ(/)です。このパラメータは、正規表現のタイプとして「任意の文字列を含む」を選択した場合にのみ有効です。 | |
| 大文字と小文字を区別 | 正規表現で大文字と小文字を区別するかどうかを指定するチェックボックスです。 | |
正規表現内のスラッシュ(/)は、区切り文字ではなく文字として扱われます。 これにより、スラッシュを含む正規表現をエラーなしで保存できます。
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 は「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 を参照してください。
ロケーション別の正規表現サポート
| 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 | Operation 条件の matches、does not match オプション内 | ||
| アクション条件 | Yes | No | No | 自動登録条件の Host name および Host metadata の matches、does not match オプション内 | |
| スクリプト | 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 |
|