Zabbix 5.4の紹介

本記事では、2021/3/22時点でのZabbix 5.4beta2 で追加された機能や変更点について解説します。
なお、現在beta版リリースの状態のため、正式リリースまでに機能の追加・変更などが行われる可能性があります。

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

5 What’s new in Zabbix 5.4.0
Release Notes for Zabbix 5.4.0beta2

Zabbix 5.4 はポイントリリースとなり、サポート期間が短いため、実運用では LTS バージョンの利用を推奨します。

Zabbixのリリースポリシーについては、以下をご参照ください。
https://www.zabbix.com/jp/life_cycle_and_release_policy

Zabbix 5.4 の主な変更点を以下に挙げます。

スクリプトの集約

グローバルスクリプトには、アクション設定のスクリプトを含む、すべてのスクリプトが集約されます。

  • JavaScriptをサポートするようになりました。
  • スクリプトの最大長が65536バイトに増加しました。

アクションからグローバルスクリプトに移動したスクリプト

アクションのすべてのスクリプトは、グローバルスクリプトに移動されました。(以後、スクリプトはグローバルスクリプトの意味となります)
アクション別にスクリプトが保持されることはもうありません。
アクションの中でスクリプトを実行するには、Action operation にスコープ設定されたスクリプトの1つを選択するだけです。

スクリプトの管理画面で、様々な目的のスクリプトを保持できるようにするために、新しく「Scope」設定が追加されました。
スクリプトを構成する際、Scope を次のいずれかで設定できます。

Action operation
Manual host action
Manual event action

「Manual event action」は、イベントメニューからコマンドを実行できるようにするもう1つの新機能です。
この機能は、外部システムで障害のチケットを管理する際、スクリプト実行ができるなど便利な場合があります。
ダッシュボードの障害ウィジェットで障害名をクリックしても、イベントメニューを利用できるようになりました。

スクリプトの管理画面に、Scope フィルターが追加され、Scope でスクリプトをフィルターできるようになりました。

 

スクリプトに JavaScript 追加

スクリプトでは、外部HTTP サービスを呼び出す機能を備えた、JavaScript で記述されたカスタムロジックをサポートするようになりました。

JavaScript コードをスクリプトとして構成するには、[管理]-[スクリプト]より作成されるスクリプトタイプに、[Webhook] を選択します。

Webhook スクリプトタイプは、パラメータおよびスクリプト(JavaScript コード)、タイムアウトの3つのフィールドを提供します。

さらに、定義されたすべてのスクリプトを、イベントメニューから実行できるようになりました。

詳しくはこちらをご参照ください。

インターフェースでのホスト稼働状況

ホストの稼働状況について、ホストから個々のインターフェースへと変更になりました。
ホストに同じタイプの複数のインターフェースがあり、1つのインターフェースが使用できなくなった場合でも、同じタイプの他のインターフェースの状態には影響しません。

ホストの稼働状況の表示方法が以下のように変更されました。

  • エージェント状態アイコンは、ホストで構成されているインターフェース(Zabbixエージェント、SNMP、IPMI、JMX) のみ表示されるようになりました。
    以下の例では、Zabbix エージェントとJMX のインターフェースのみが存在します。
  • エージェント状態アイコンの上にマウスを置くと、同じタイプのすべてのインターフェイスのポップアップリストが表示され、各インターフェイスの詳細、ステータス、およびエラーが表示されます。
  • エージェント状態アイコンの新しいステータスカラーとして黄色が追加されました。
  • エージェント状態アイコンの色の意味が次のように更新されました。
    緑 :このタイプのすべてのインターフェースが使用可能です。
    黄色:このタイプのインターフェースが少なくとも1つが使用不可です。
    赤 :このタイプのインターフェースは使用できません。
    灰色:このタイプのインターフェースが少なくとも1つ不明(使用不可)です。

以下のインターナルアイテムは、指定タイプのエージェント状態を監視するようになりました。

zabbix[host,<type>,available]

 

ホスト稼働状況ダッシュボードウィジェットのカウントするロジックも更新されました。
詳細についてはこちらをご参照ください。

 

APIトークン

認証に利用できるAPIトークンのサポートが追加されました。

トークンまたはZabbix のユーザー名とパスワードを認証に使用してZabbix API にアクセスできます。

APIトークンの管理を許可/拒否する設定が[ユーザーの役割(ユーザーロール)]に追加されました。

十分な権限を持つスーパー管理者は、[管理]→[一般設定]の[APIトークン]セクションから、APIトークンを作成および管理ができます。
また、APIトークンは、新しく追加されたトークンAPIメソッド(token.*)を介して作成および管理することもできます。

APIトークンを管理する権限を持つ他のユーザーは、ユーザー設定またはAPI を介して、自分に割り当てられたトークンを確認できます。
トークンAPIメソッドについての詳細はこちらをご覧ください。

 

JAVASCRIPT オブジェクト

ネーミング

「CurlHttpRequest」オブジェクトの名前が、より分かりやすい「HttpRequest」に変更されました。
これまでのオブジェクト名は非推奨となり、Zabbix6.0 以降はサポートされません。

また、JavaScript との一貫性を高めるために、メソッド名も以下のように変更されました。
これまでのメソッド名は非推奨となり、Zabbix6.0 以降はサポートされません。

新しい名前 古い名前
log Log
addHeader AddHeader
clearHeader ClearHeader
getHeaders GetHeaders
get Get
put Put
post Post
delete Delete
setHttpAuth SetHttpAuth
setProxy SetProxy
getStatus Status

 

その他、ロギングメソッド用の新しいエイリアスが追加されました。

新しいエイリアス エイリアス先
console.log(object) Zabbix.log(4, JSON.stringify(object))
console.warn(object) Zabbix.log(3, JSON.stringify(object))
console.error(object) Zabbix.log(2, JSON.stringify(object))

XMLオブジェクト

新しいJavaScriptのXMLオブジェクトが追加されました。
XML XPath によってデータを抽出し、XMLをJavaScriptオブジェクト(JSON)に、またはその逆に変換する機能が提供されます。

追加のJavaScriptオブジェクトについての詳細はこちらをご覧ください。

 

XMLからJSONへの前処理オプション

アイテムの保存前処理ローレベルディスカバリの保存前処理に、「XMLからJSON」の新しいオプションが追加されました。

 

SNMPv3の強力な暗号化プロトコル

SNMPv3 の強力な認証プロトコルおよびプライバシープロトコルのサポートが実装されました。

認証プロトコル:

SHA224
SHA256
SHA384
SHA512

プライバシープロトコル:

AES192
AES256
AES192C (Cisco)
AES256C (Cisco)

また、アップグレード後、既存のSHAプロトコルとAESプロトコルの名前がそれぞれ[SHA1]と[AES128]に変更されます。

詳細については、こちらをご参照ください。

 

トレンド関数キャッシュ

これまでは、トレンドベースのトリガー関数(trendavg、trendcountなど)は常にデータベースクエリを使用して必要なデータを取得していました。
新しいバージョンでは、トレンド関数キャッシュが実装され、計算されたトレンド関数の結果をキャッシュできるようになりました。

トレンド関数を処理するとき、Zabbixサーバーは、キャッシュされた結果についてトレンドキャッシュをチェックします。
障害が発生した場合、Zabbixサーバーはデータベースからデータを読み取り、結果をキャッシュします。

トレンド関数キャッシュは、トリガーに履歴またはタイマーベースの関数と混合されたトレンド関数が含まれている場合に、
データベースサーバーの負荷を減らすのに役立つ場合があります。

トレンド関数のキャッシュサイズは、新しいTrendFunctionCacheSizeサーバーパラメーターを使用して調整できます。
トレンド関数のキャッシュの有効性を監視するために、以下の新しいインターナルアイテムが実装されました。

zabbix[tcache,cache,<parameter>]

 

新しいLLDルールフィルター条件オペレーター

ローレベルディスカバリにおいて、指定されたマクロの存在(または不在)によるフィルタリングを設定できるようになりました。

「存在する」と「存在しない」という2つの新しいフィルター条件演算子が追加されました。

 

データベース

サポートバージョン

さまざまな本番環境で最高のZabbix パフォーマンスを確保するために、一部の古いデータベースバージョンのサポートは廃止されました。

さらに、すべてのデータベースにおいて、サポートされるバージョンが新しくなりました。

Zabbixは最新のデータベースバージョンでも動作する可能性がありますが、サポートされているバージョンの最新バージョンは、Zabbixのテストにおいて安定したパフォーマンスを提供することが確認されたバージョンを示しています。

Zabbix 5.4以降、次のデータベースバージョンが正式にサポートされています。

データベース サポートバージョン
MySQL/Percona 5.7.28-8.0.X
MariaDB 10.0.37-10.5.X
PostgreSQL 10.9-13.X
Oracle 12.1.0.2 – 19c
TimescaleDB 1.5-2.1
SQLite 3.3.5-3.34.X

Poller プロセスからデータベースへの直接接続の排除

データベースへの直接接続は、Zabbix サーバー/プロキシ上の Poller、Unreachable poller、Java poller から削除されました。

これまでは、これらの直接接続は次の目的で利用していました。

  • アイテム計算やアグリゲートチェック、いくつかのインターナルアイテムに利用していました。
  • Zabbixエージェント、SNMP、JMXアイテムによってホスト稼働状況の更新する際に、Poller、Unreachable poller、Java poller、
    IPMIマネージャーは、ホストごとに個別のトランザクションを使用して、データベース内のホスト稼働状況を直接更新していました。
  • さらに、ホスト稼働状況は、Zabbixプロキシからホスト稼働状況を受信するときにproxy poller スレッドとトラッパーによって更新され、
    ホスト稼働状況をリセットするときにConfiguration syncer によって更新されていました。
    (ホストのステータスが変更され、ホストが新しいプロキシに移動され、Zabbixプロキシが長時間使用できません)

今回、計算、集計、および内部チェックを処理するために、新しくHistory poller が導入されました。
設定ファイルの[StartHistoryPollers]パラメーターを使用することで、History poller のインスタンス数をカスタマイズできます。
各History poller はデータベース接続が必要なため、インスタンス数をできるだけ少なくすることをお勧めします。

ホスト稼働状況の更新に対処するために、availability manager プロセスが導入されました。
すべてのプロセスは、ホスト稼働状況の更新をavailability manager にキューイングし、そのキューはavailability manager によって
5秒ごとにデータベースにフラッシュされます。

以下のインターナルアイテムを使用して、新しいプロセスを監視できます。

zabbix[process,<type>]

 

ORACLE SETUP

  • Oracleデータベースを作成するときに、イメージをOracleホストにコピーする必要がなくなりました。
  • Net Service Name 接続方式のサポートを追加しました。
    Zabbix は、Easy Connect とNet Service Name の2種類の接続識別子(接続方法)をサポートするようになりました。
    詳細は、Oracleデータベースのセットアップを参照してください。

 

アイテム

VMwareクラスターのパフォーマンスカウンター

以下の新しいアイテムで、VMwareクラスターのパフォーマンスカウンターを取得できるようになりました。
詳細については、こちらをご参照ください。

vmware.cl.perfcounter[<url>,<id>,<path>,<instance>]

 

JMXアイテム

以下のJMXの監視および検出アイテムに、3番目のパラメータ「unique short description」が追加されました。ホスト上で同じオブジェクト名と属性名を持つ複数のJMXアイテムに使用される一意の説明となります。

jmx[]
jmx.discovery[]
jmx.get[]

 

詳細については、JMXアイテムの追加およびJMXオブジェクトの検出をご参照ください。

 

マクロ

  • アイテムの値タイプを返す{ITEM.VALUETYPE}マクロが追加されました。
    (設定可能な値:0-数値フロート、1-文字、2-ログ、3-数値符号なし、4-テキスト)
    詳細については、こちらをご参照ください。
  • fmttimeマクロ関数の期間処理がより柔軟になりました。
    詳細については、こちらをご参照ください。

 

新しいテンプレート

次のテンプレートが、監視に使用できるようになりました。

Hikvision camera by HTTP

テンプレート入手は、それぞれ以下をご参照ください。

  • 新しくインストールした場合は、[設定]→[テンプレート]にあります。
  • 以前のバージョンからアップグレードする場合は、これらのテンプレートをZabbix Gitリポジトリからダウンロードするか、
    ダウンロードした最新のZabbixバージョンのテンプレートディレクトリで見つけることができます。
    次に、[設定]→[テンプレート]より、Zabbixに手動でインポートできます。

 

ユーザーエイリアスの名前が「ユーザー名」へ変更

これまでユーザー設定で「エイリアス」と表示されていたシステムユーザー名は、「ユーザー名」に名前が変更されました。

こちらの変更に伴い、{USER.ALIAS}マクロは非推奨になりました。代わりに、新しい{USER.USERNAME}マクロを使用してください。

 

フロントエンド

テンプレート/ホストレベルでの値のマッピング

値のマッピングは、テンプレート/ホスト単位で、それぞれ値のマッピングを設定するようになりました。
グローバル設定における、値のマッピングは削除されました。

  • アイテム設定の、値マップを選択するためのフィールドの名前が「値の表示」から「値のマッピング」に変更されました。
  • アイテム一覧より、使用されている「値のマッピング」を検索できます。

詳細については、値のマッピングをご参照ください。

 

タグによる否定されたフィルタリング

いくつかのフロントエンドフィルターで、エンティティをフィルター処理できるようになりました。

  • タグ名のみ
  • 特定の名前または値を持たないタグに基づく

これは、タグフィルター条件に「存在する」、「存在しない」、「等しくない」、「含まない」という新しい演算子を追加することで実装されます。

これらのフィルタリングの変更は、次の場所に実装されています。

監視データ:
・障害関連のダッシュボードウィジェット(グラフ、障害中のホスト、障害、深刻度ごとの障害数)
・障害
・ホスト
設定:
・テンプレート
・ホスト
–>・トリガー

 

統合されたイベント相関関係設定フォーム

これまでは、2つのタブに分かれていたイベント相関関係ための設定フォームが、結合されて単一のページになりました。

 

分離されたホストとテンプレートのエンティティ

テンプレートに属する、アイテム、トリガー、グラフ、ディスカバリ、Webシナリオは、
ホストに属する、アイテム、トリガー、グラフ、ディスカバリ、Webシナリオから分離されるようになりました。
この変更を反映するために、設定セクションが更新されました。

テンプレートエンティティの場合:

  • [ホスト]列と[ホスト]フィルターフィールドは、それぞれ[テンプレート]と[テンプレート]に名前が変更されます。
  • 情報列は表示されなくなりました。
  • テンプレートが更新され、テンプレートに関連するオプションのみが提供されるようになりました(状態、ディスカバリ、およびその他のセレクターが削除されました)。
  • [今すぐ実行]と[履歴をクリア]ボタンが削除されました。
  • ホストグループセレクターで、少なくとも1つのテンプレートを含むホストグループのみを選択できるようになりました。

ホストエンティティの場合:

  • 一部のドロップダウンフィルタセレクタはボタンに置き換えられています。機能に変更はありません。
  • ホストグループセレクターで、少なくとも1つのホストを含むホストグループのみを選択できるようになりました。
  • ホストセレクターでホストのみを選択できるようになりました。

 

第3階層のメニュー

Zabbixのメインメニューの一部のセクションに、マウスクリックで表示される追加のメニューが追加されました。
セクション名の横にある小さな右矢印は、このセクションに第3階層のメニューがあることを示しています。

監視データ → 概要
監視データ → スクリーン
設定    → アクション
管理    → 一般設定
管理    → キュー

第3階層のメニューは、ページ上部のタイトルドロップダウンメニューより見やすい代替手段として導入されています。
タイトルドロップダウンも引き続き使用できるため、いずれかを選択してページ間を移動できます。

  

 

ホストとプロキシの非表示のPSKデータ

ホストおよびプロキシ設定のPSKアイデンティティおよびPSKのフィールドは書き込み専用になりました。
保存すると、これらの値をフロントエンドで再度表示したり、APIを介して取得したりすることはできませんが、新しい値に置き換えることができます。
ホストの場合、PSKアイデンティティとPSKはエクスポートされなくなります。

 

その他

  • ホスト、テンプレート、アイテムなどの一括更新ページがポップアップウィンドウに置き換えられました。
  • テンプレート、ホスト、マップなどをインポートするためのインポートページは、インポートポップアップウィンドウに置き換えられました。
  • グローバル検索結果で、すべてのリンクが[構成]および[監視]見出しの下で視覚的に分離されるようになりました。