現在位置: ホーム / 製品・サービス / 統合システム監視 MIRACLE ZBX / MIRACLE ZBX - Zabbix テック・ラウンジ / Zabbix 3.2以降の新機能解説(Zabbix 4.0を見据えて) その1

Zabbix 3.2以降の新機能解説(Zabbix 4.0を見据えて) その1

こんにちは、MIRACLE ZBXサポートを担当している花島タケシです。 本ドキュメントでは、次のメジャーリリースであると思われるZabbix 4.0に向けて、3.2、3.4のポイントリリースから順次機能紹介をしていきます。 今回は、Zabbix で使用される正規表現の移行について紹介します。

はじめに

当社MIRACLE ZBXサポートサービスでは、基本的にはZabbixのLTSリリースバージョンをターゲットとしています。
ポイントリリースバージョンのサポートは、別途相談の上でのサポートとなっています。

https://www.zabbix.com/jp/life_cycle_and_release_policy

しかしながら、ポイントリリースのバージョンを蔑ろにしているわけではありません。
ポイントリリースで追加された機能は、次のメジャーリリースでも当然取り込まれています。
そのため、当社ではポイントリリースされたものも、陰ながら研究・調査を行っています。

ここでは、次のメジャーリリースであると思われる4.0に向けて、3.2、3.4のポイントリリースから機能紹介をしていきます。単に機能を紹介するだけならばZabbix LLCのドキュメントを見れば充分ですので、ソースコードを用いた解説も行っていきます。

なお、そろそろZabbix 3.4がリリースされるとアナウンスされている時期ですが、まだリリースされていないため、3.2が話題の中心になっていくと思います。3.4がリリースされましたら、そちらに移行すると思います。

今回は、その第一回目として Zabbix 3.4以降で使用される正規表現が移行されることについて紹介します。

拡張POSIX正規表現からPCREへの移行 

Zabbixにて使用される正規表現が、拡張POSIX正規表現からPCREへ移行されます。

これは、まだ3.2では行われていませんが、3.4では行われます。
(開発リポジトリでは既にコミットが行われています。)

https://support.zabbix.com/browse/ZBX-3924

実は、既に一部(Webフロントエンドの正規表現テスト)でPCREが使用されていました。
ということで、PCREに統一されたことになります。
実際、当社のお客さまから「(PCREでマッチするが拡張POSIX正規表現でマッチしない)テスト文字列を入れてテストを行ったが、実際のログではマッチしない」という問い合わせを何度か受けました。

今後はこういった問題もなくなります。

また、あまり大きな声では言えませんが、Zabbixで使用されている、GNUの拡張POSIX正規表現には実装に問題があります。

実装を見てみる

とタイトルに書きましたが、実際は紹介するほどでもありません。

今までは、*nix環境ではOSが提供するPOSIX正規表現ライブラリ(実際にはCライブラリ)を使用していましたし、Windows環境ではそういったものがないため、GNU系のソースを丸飲みしていました。

それを、*nix, Windows共に下記より提供されるPCREライブラリを使用するように変更されています。(当然、GNU系のソースは削除されています。)

http://www.pcre.org/

なお、Zabbix LLCのドキュメントにはlibpcre3が必要と記載されていますが、おそらく上記からダウンロードできる、pcre-8.x で問題ないと修正からは判断します。
(Debianのパッケージが、pcre-8.xをベースとしたものをlibpcre3の名称でリリースしていることが原因のようですが。)

同様に、Windowsエージェントのコンパイルもここから作成されるpcre.lib, pcreposix.libの二つが必要となります。
既にWebフロントエンドにおいて以前から使用されているPCRE機能は、PHPに組み込まれているものです。

下記のPHPのドキュメントを読む限り、pcre-8.xをベースとしており、サーバサイドで使用するものと整合性があります。

Webフロントエンドとサーバサイドで動作の違いが生じにくいと思われます。

http://php.net/manual/ja/pcre.installation.php


また、実際の評価部分のソースコードの変更はありません。これは、GNU正規表現と同じく、regcomp(), regexec()というインターフェイスとなる関数をPCREも使用することになっているためです。

 

以上、今回は Zabbix 3.4以降で使用される正規表現の移行について紹介しました。

関連記事

注意事項

本ドキュメントの内容は、予告なしに変更される場合があります。
本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。

 

MIRACLE ZBX 製品・サポートサービス 詳しくはこちら

MIRACLE ZBX Virtual Appliance V3.0 評価版のお申し込み

製品・サービスについてのお問い合わせ

お問い合わせフォームMIRACLE ZBX製品やサポートサービスについてのご相談やご質問は、「お問い合わせフォーム」よりお気軽にお問い合わせください。