3. 正規表現(PCRE)
Zabbix3.4から正規表現の処理が、拡張POSIXから、PCRE(Perl Compatible Regular Expressions)になりました。
これで、正規表現の柔軟性が高まることと、Webインターフェースで提供されていた正規表現のテスト機能と実際の動作が異なる、というケースも解消されそうです。
否定的先読み(除外する文字の定義)
以前のバージョンでは使うことができなかった否定的先読みを確認します。
Windowsのイベントログのチェックで、再起動を伴うWindowsアップデートや、更新のエラーを抽出するため、Zabbix Agentのアクティブチェックで以下のようなキー指定をします。
eventlog[SYSTEM,,,WindowsUpdateClient,^(?!.*(^19$|^27$)).*$]
^(?!.(^19$|^27$)).$の部分が、イベントIDをフィルタする正規表現です。19は(再起動を伴わない)更新の成功、27は更新の一時停止で、どちらも頻繁に発生します。
この正規表現で、WindowsUpdateClientというイベントソースから、イベントID 19と27を含まないイベントだけを監視データとして取り込むことができます。
Webインターフェースのテスト画面
正規表現のテスト画面でチェックした結果です。
19はFalse
119はTrue
念のため、外部のテストツールでも結果が同じことを確認。
実際の監視データ
監視データも、期待通りの(イベントID 19と27を含まない)データが取得できました。
メリット
Zabbixの正規表現の場合、画面上の条件定義機能を使って、以下のように除外条件を設定し、
キーの中で正規表現名(@で始まる名称)を指定することで、対応することも可能です。
eventlog[SYSTEM,,,WindowsUpdateClient,@EVENT_FILTER]
ただこの方法だと、テンプレートでこのようなキー指定がされていると、ホスト毎に個別の設定をすることはできません。それよりも、キーの定義は以下のようにし、
eventlog[SYSTEM,,,WindowsUpdateClient,{$EVENT_FILTER}]
テンプレートマクロで正規表現を設定しておけば、ホスト毎に違う設定に変更する、ということも可能になります。