採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

2017 年 07 月 18 日

Zabbix 3.2以降の新機能解説(Zabbix 4.0を見据えて) その1 - Zabbixで使用される正規表現の移行

こんにちは、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 以降で使用される正規表現の移行について紹介しました。

関連記事

Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 1
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 2
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 3
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 4
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 5
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 6
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 7
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 8
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 9
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 10
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 11
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 12
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 13
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 14
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 15
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 16
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 17
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 18
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 19
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 20
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 21

注意事項

  • 本ドキュメントの内容は、予告なしに変更される場合があります。
  • 本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
  • 本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime