Zabbix 4.2の紹介

本記事では、 Zabbix 4.2 で追加される機能や変更点について解説します。

Zabbix 4.2 (beta1) の変更点は以下のページに記載されています。

5 What’s new in Zabbix 4.2.0
Release Notes for Zabbix 4.2.0beta1

なお、現在 beta 版リリースの状態のため、4.2 正式リリースまでに仕様変更が行われる可能性があります。また、 Zabbix 4.2 はポイントリリースとなり、サポート期間が短いため、実運用では LTS バージョンの利用を推奨します。

Zabbix 4.2 (beta1) の主な変更点を以下に挙げます。

1. アイテム値の保存前処理の拡張

JavaScript

アイテムの値やローレベルディスカバリの値の保存前処理にJavaScriptを使用できるようになりました。これにより、さらなる柔軟なデータの加工処理が可能になりました。なお、JavaScriptエンジンには組み込み向けのDuktapeが採用されています。

本機能を利用して、例えば以下のような処理が可能です。

  1. HTTPエージェントアイテムで特定のURLの内容の文字列を取得
  2. 保存前処理でJavaScriptを用いて1.で取得したデータを解析し、複数の値をまとめてJSONデータとして出力
  3. 上記をマスターアイテムとする依存アイテムでJSON Pathにより必要な値を取得

保存前処理(JavaScript)

JavaScriptコード入力欄

バリデーションとスロットリングルール

アイテムの値が有効な範囲であるかのチェック、JSON データからのエラーメッセージの抽出といった機能が追加されました。

たまにしか更新されない値について、値が変化した場合のみ処理することができるようになりました。

カスタムエラー処理

保存前処理が失敗した場合に、取得不可となる代わりに指定の値やエラーメッセージなど、独自のエラー処理が可能になりました。

2. ローレベルディスカバリ

ローレベルディスカバリが別プロセスに分離され、データ収集プロセスへの影響が減りました。

拡張のためJSON フォーマットが変更されました(互換性のため旧形式も受け付けられます)。

3. ローレベルディスカバリにおける保存前処理とカスタムマクロの利用

ローレベルディスカバリで保存前処理とマクロのJSON Pathによる展開ができるようになりました。

4. TimescaleDB のサポート

PostgreSQLのTimescaleDB拡張のサポートが追加されました。

TimescaleDBは、PostgreSQLのテーブルを時間を表すカラムを元に自動的にパーティショニングを行い、性能を向上させるPostgreSQLの拡張機能です。Zabbixのヒストリ、トレンドのテーブルにTimescaleDBを適用することで、蓄積されたヒストリ、トレンドデータが増えた場合のDBの性能向上が期待できます。

PostgreSQLにTimescaleDBをインストールし、Zabbix 4.2に付属のSQLスクリプトを実行することで移行が行えます。これを適用すると、1日単位で自動的にヒストリ、トレンドテーブルのパーティショニングが行われるようになります。なお、Zabbixプロキシについては現在未対応となっています。

移行方法の詳細は「4 Migration to TimescaleDB」も参照ください。

RHEL 7/CentOS 7 + PostgreSQL 10.xの場合の移行方法

zabbix 4.2パッケージおよびPGDGリポジトリのpostgresql10パッケージをインストールし、Zabbixの初期設定が完了しているものとします。

yumリポジトリを設定します。

# cat > /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
> [timescale_timescaledb]
> name=timescale_timescaledb
> baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch
> repo_gpgcheck=1
> gpgcheck=0
> enabled=1
> gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
> sslverify=1
> sslcacert=/etc/pki/tls/certs/ca-bundle.crt
> metadata_expire=300
> EOL

インストール、設定、SQLスクリプトの実行を行います。

# yum install timescaledb-postgresql-10

/var/lib/pgsql/10/data/postgresql.conf を以下のように修正
#shared_preload_libraries = ''
↓
shared_preload_libraries = 'timescaledb'

# systemctl restart postgresql-10

# echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
...
CREATE EXTENSION

# zcat /usr/share/doc/zabbix-server-pgsql-4.2.0/timescaledb.sql.gz | sudo -u zabbix psql zabbix
...

5. テンプレートとホストレベルのタグ

テンプレートおよびホストのレベルでタグを指定できるようになりました。

テンプレートを適用したホストもしくはホストのすべての障害に共通のタグが付けられるようになります。

6. Zabbixの統計情報の外部からの監視

Zabbixサーバの内部メトリックの一部を外部のZabbixサーバやサードパーティツールから参照できるようになりました。以下のアイテムが利用できます。

  • 内部アイテム: zabbix[stats,<ip>,<port>]
  • エージェントアイテム: zabbix.stats[<ip>,<port>]

7. より直感的なダッシュボードの編集

ウィジェットの拡大縮小、移動などを行った場合のウィジェットの挙動が改善されました。

8. マップのアニメーションGIF対応

マップでアニメーションGIFが利用できるようになりました。

9. HTML メールでの通知

メール通知をHTMLメールで送信することができるようになりました。

10. 自動登録アクションの条件の正規表現マッチング

アクティブエージェントの自動登録アクションの条件に正規表現マッチングが使用できるようになりました。

11. Web監視

HTTPヘッダから正規表現でマッチングできるようになりました。また、ヘッダのみ、ボディのみ、ヘッダとボディの両方を取得するオプションが追加されました。

12. フロントエンド

一括更新

ローレベルディスカバリのアイテムプロトタイプ、テンプレートのリストの一括更新ができるようになりました。

フィルター

トリガーおよびアイテムのリストで複数のホスト、ホストグループ、複数の重要度でフィルタリングで切るようになりました。