Zabbix 7.4 の紹介

本記事では、2025/7/1 にリリースされた Zabbix 7.4.0 で追加された機能や変更点について解説します。

Zabbix 7.4 の変更点は Zabbix 公式サイトの以下のページに記載されています。

Zababix 7.0 および 7.2 の変更点の詳細については以下の記事をご参照ください。

Zabbix 7.0 の紹介
Zabbix 7.2 の紹介

Zabbix 7.4 の主な機能追加・変更点を以下に挙げます。

マルチレベル・ローレベルディスカバリ

ローレベルディスカバリルールにディスカバリのプロトタイプが実装され、多段階のディスカバリが可能になりました。この機能を利用することで例えば、データベースサーバ上のすべてのデータベースインスタンスをディスカバリした後、ディスカバリされた各インスタンスのテーブルスペースをディスカバリ、さらに各テーブルスペースのテーブルをディスカバリするといったことが可能になります。

ディスカバリのプロトタイプには、親となるディスカバリルールとは別に独自のアイテム、トリガー、グラフ、ホスト、およびディスカバリのプロトタイプが設定可能です。

ディスカバリのプロトタイプでは親となるディスカバリルールで取得された JSON 値を使用できますが、その JSON 値から切り出された一部のデータを使用してディスカバリを行います。

また、設定できるディスカバリのプロトタイプの段階に制限はありません。

ディスカバリされたホストに対するホストのプロトタイプのサポート

ディスカバリされたホスト上でホストのプロトタイプがサポートされるようになりました。これにより、Zabbix は他の検出されたエンティティ(ハイパーバイザやその仮想マシン、およびそれらの仮想マシン内のコンテナ)内のエンティティを自動的に検出・監視できるようになります。

ホストのプロトタイプをディスカバリされたホストに作成するには、ホストのプロトタイプを含むローレベルディスカバリルールを作成するか、ホストのプロトタイプを含むテンプレートをリンクします。または、ディスカバリに使用されるホストのプロトタイプにテンプレートをリンクすると、ディスカバリされたホストがテンプレートからホストのプロトタイプを継承します。

現在ホストのプロトタイプが設定されており、それが他のホストのプロトタイプを含むテンプレートを使用している場合には、Zabbix 7.4 へのアップグレードにより、検出されたすべてのホストがそれらのテンプレートで定義されたホストのプロトタイプを継承します。これを避けたい場合は、アップグレード前に該当するテンプレートからホストのプロトタイプを手動で削除してください。

該当するホストを特定するには、Zabbix データベースで以下の SQL を実行してください。

SELECT h.hostid,ht.templateid
FROM hosts_templates ht
JOIN hosts h ON ht.hostid=h.hostid
WHERE h.flags=4
  AND EXISTS (
    SELECT NULL
    FROM items i,host_discovery hd
    WHERE i.hostid=ht.templateid
    AND hd.parent_itemid=i.itemid
    )
ORDER BY hostid;

OAuth 2.0 認証

SMTP プロトコルで 「OAuth 2.0 認証」がサポートされるようになりました。OAuth 認証を設定するには、メールメディアタイプの設定時に認証パラメータで「OAuth」を選択し、「OAuth トークン」のパラメータを指定します。

Gmail、Gmail リレー、Office 365 のメールプロバイダーでは、OAuth トークンの自動取得機能が利用できます。必要な設定値は、リダイレクトエンドポイント、クライアント ID、クライアントシークレットのパラメータ値のみです。その他の必須パラメータは Zabbix が自動的に入力します。

プロバイダー別の OAuth URL のデフォルト設定の詳細については以下をご参照ください。
OAuth URL defaults by provider

ホストウィザード

新しいホストウィザードは、Zabbix で監視対象(デバイス、アプリケーション、サービスなど)を設定するための、ガイド付きのステップバイステップのインターフェースを導入しています。テンプレートの選択、Zabbix エージェントのインストール、ホストインターフェースの追加など、主要な手順をガイドすることで、新規ホストまたは既存ホストの設定を簡素化します。

ホストウィザードは、「データ収集」⇒「ホスト」、またはフロントエンドの各種セクションのホストメニューからアクセスできます。 

前のバージョンの Zabbix からアップグレードする場合、ホストウィザードで動作させるにはテンプレートをアップグレードする必要があります。

テンプレートのアップグレード手順についての詳細は以下をご参照ください。
Template upgrade

ウィジェット

アイテムカード

ダッシュボードにアイテムカードウィジェットが追加されました。
アイテムに関するさまざまな情報を見やすくまとめて表示することができます。

リアルタイムのウィジェット編集

ウィジェットの編集時に設定の変更をリアルタイムにプレビューすることができるようになりました。
さらに、ウィジェットの設定ダイアログをドラッグで場所を自由に移動することができます。

アイテム

ICMP ping アイテムにリトライ機能が追加された icmppingretry キーが使えるようになりました。icmpping キーでは複数パケットを応答があるまで複数回送っていましたが、icmppingretry キーでは、1 パケットを送り応答がなければ次の 1 パケットを送ることで、ネットワークに流れるパケット数を下げることができます。

  • 書式:icmppingretry[<target>,<retries>,<backoff>,<size>,<timeout>,<options>]
    • target – 監視対象の IP アドレスやホスト名
    • retries – リトライ回数(最初の試行は含まず)
    • backoff – リトライ時に backoff に指定した数値を掛けた数だけ施行を遅らせる
    • size – パケットサイズ(byte 指定)
    • timeout – タイムアウト(ミリ秒)
    • options – allow_redirect を指定した場合には、リダイレクトされたレスポンスにより判定

関数

トリガー条件式、計算アイテムで利用できる次のヒストリ関数が追加されました。

  • firstclock – 評価時間内の最も古い値のタイムスタンプを取得
    • 書式:firstclock(/host/key,sec<:time shift>)
    • サポートタイプ: Float, Integer, String, Text, Log
  • lastclock – 評価時間内のN番目の最新値のタイムスタンプを取得
    • 書式:lastclock(/host/key,<#num<:time shift>>)
    • サポートタイプ: Float, Integer, String, Text, Log
  • logtimestamp – 評価時間内のN 番目のログメッセージのタイムスタンプを取得
    • 書式:logtimestamp(/host/key,<#num<:time shift>>)
    • サポートタイプ: Log

マクロ

監視値取得時間を取得できるマクロが追加されました。

マクロ 概要
{ITEM.LASTVALUE.AGE} 最新値取得時間とマクロ評価時間の差異
{ITEM.LASTVALUE.DATE} 最新値取得日時
{ITEM.LASTVALUE.TIME} 最新値取得時間
{ITEM.LASTVALUE.TIMESTAMP} 最新値取得タイムスタンプ
{ITEM.VALUE.AGE} 値取得時間とマクロ評価時間の差異
{ITEM.VALUE.DATE} 値取得日時
{ITEM.VALUE.TIME} 値取得時間
{ITEM.VALUE.TIMESTAMP} 値取得タイムスタンプ

通知

通知レポート

ユーザ設定メニューに「通知レポート」が追加されました。「通知レポート」からは利用できるメディアやポップアップ通知の設定ができるようになりました。

メディアの管理

「ユーザの役割」に「独自メディアの作成と変更」と「ユーザーメディアの作成と変更」が追加され、「ユーザの役割」からメディアの制御が可能になりました。

  • 「独自メディアの作成と変更」が有効
    • ユーザは自身が利用できるメディアの編集ができます。
  • 「ユーザメディアの作成と変更」が有効
    • 「通知」メニューから「メディアタイプ」の編集ができるようになります。
    • ユーザの種類として「特権管理者」の場合のみに有効が選択可

マップ

ラベルの自動非表示

マップの要素やリンクのラベルをマウスホバーや選択時のみ表示できるようになりました。
これによりマップに多数の要素が密集している場合の見やすさが向上しました。
本機能はグローバルもしくは個別に設定可能です。

背景画像の自動スケーリング

マップのサイズにあわせて背景画像を自動的にサイズ調整できるようになりました。

要素の順序

マップの重なった要素を右クリックして「前面へ/最前面へ」「後面へ/最後面へ」を選択して、要素を前面に出したり後ろに回したりすることができるようになりました。

アイテムの値に基づくリンク表示

以前のバージョンではトリガーの障害状態によってリンクのスタイルや色を変更できましたが、アイテムの値についても、しきい値を超えた場合(数値アイテム)、正規表現にマッチした場合(テキストアイテム)にリンクのスタイルや色を変更することが可能になりました。

 

プロセス

ヒストリキャッシュ管理機能の強化

Zabbix は、監視データを効率的に処理するために、受信データを一時的にヒストリキャッシュ (history cache) に保持し、そこからデータベースに書き出す仕組みを採用しています。しかし、特定の監視アイテムがヒストリキャッシュを長時間占有すると、ヒストリデータの書き込み遅延やシステム全体のパフォーマンス低下が発生する課題がありました。

この問題を解決するために以下の3つの新機能が導入されました。

手動ヒストリキャッシュクリア機能

Zabbix サーバまたはプロキシに対し、指定したアイテムのヒストリキャッシュ内の値を即座にクリアできるランタイムコマンド history_cache_clear=target が追加されました。

このコマンドを使用すると、指定されたアイテムのヒストリキャッシュに溜まっている値 (最初の値と最後の値を除く) を削除できます。

(Zabbix サーバでの実行例)
zabbix_server -R history_cache_clear=target

(Zabbix プロキシでの実行例)
zabbix_proxy -R history_cache_clear=target

Zabbix サーバまたはプロキシには、diaginfo=historycache というランタイムコマンドも用意されており、現在のヒストリキャッシュの診断情報を確認できます。

例えば、このコマンドを使って現在のヒストリキャッシュの診断情報を確認すると、以下の実行例のように、アイテムID 68638 の値が 1000 件溜まっている状態であることがわかります。

# zabbix_server -R diaginfo=historycache
== history cache diagnostic information ==
Items:1 values:1000 time:0.000007
...
Top.values:
itemid:68638 values:1000
==

この状態で、以下のコマンドを実行するとヒストリキャッシュ内のアイテムID 68638 の値をクリアできます。

# zabbix_server -R history_cache_clear=68638
Cleared 998 values from history cache

998 件の値がクリアされ、残りは 2 件となります。

# zabbix_server -R diaginfo=historycache
== history cache diagnostic information ==
Items:1 values:2 time:0.000008
...
Top.values:
itemid:68638 values:2
==

このように、特定のアイテムがヒストリキャッシュを専有してシステム負荷が高まる状況に対して、迅速に対応が可能となります。

アイテム・ホスト無効化時のヒストリキャッシュ自動除去

アイテムまたはホストを無効化すると、関連するヒストリキャッシュが自動的に削除されるようになりました。

これにより、キャッシュを圧迫している問題のあるアイテムに対しても、GUI ベースの簡単な操作 (例:一時的に無効化→再有効化) だけで滞留を解消でき、再起動や手動ランタイムコマンドに頼る必要がなくなります。

無効化操作により、以下のようにヒストリキャッシュから即時に除去されます。

  • アイテムの無効化
    該当アイテムのヒストリキャッシュが削除される (直近の1件の値はログ用途のため保持される)
  • ホストの無効化
    対象ホストの全アイテムのヒストリキャッシュが削除される (同様に、各アイテムの直近の1件は保持される)

ヒストリキャッシュ診断ログの出力強化

これまでは、ヒストリキャッシュがいっぱいになった際の診断ログは DebugLevel=4 に設定しないと出力されませんでしたが、Zabbix 7.4 以降では、デフォルトの DebugLevel=3 でも出力されるようになりました。

以下は、ログ出力の一例です。

62107:20250708:131948.066 == history cache diagnostic information ==
62107:20250708:131948.066 items:1 values:661 time:0.000016
62107:20250708:131948.066 memory.data:
62107:20250708:131948.066 size: free:19640 used:79320
62107:20250708:131948.066 chunks: free:1 used:1983 min:19640 max:19640
62107:20250708:131948.066 buckets:
62107:20250708:131948.066 256+:1
62107:20250708:131948.066 memory.index:
62107:20250708:131948.066 size: free:4176120 used:17688
62107:20250708:131948.066 chunks: free:1 used:6 min:4176120 max:4176120
62107:20250708:131948.066 buckets:
62107:20250708:131948.066 256+:1
62107:20250708:131948.066 top.values:
62107:20250708:131948.066 itemid:68638 values:661
62107:20250708:131948.066 ==
62120:20250708:131954.595 History cache is full. Sleeping for 1 second.
62120:20250708:131954.597 items with most values in history cache:
itemid:68638 values:778

これにより、どのアイテムがキャッシュを占有しているかをより迅速に特定できるようになり、不要なログ監視や収集頻度の高すぎるアイテムの見直しなど、チューニング作業が容易になりました。

history syncer プロセスの詳細統計情報の表示

Zabbix サーバおよびプロキシの history syncer プロセス情報に、詳細なトランザクション統計情報が表示されるようになりました。

これにより、ps コマンドなどでプロセスを確認するだけで、ヒストリデータの処理状況をリアルタイムに把握できます。

$ ps aux | grep "history syncer"
zabbix 34231 0.0 0.5 109804 10204 ? R 14:57 0:02 /usr/sbin/zabbix_server: history syncer #1 [processed 50 values, 0+0 triggers in 0.510467 (0.252,0.243,0.000,0.006,0.009) sec, idle 1 sec]
zabbix 34232 0.0 0.4 109804 7900 ? S 14:57 0:01 /usr/sbin/zabbix_server: history syncer #2 [processed 0 values, 0+0 triggers in 0.000021 (0.000,0.000,0.000,0.000,0.000) sec, idle 1 sec]
zabbix 34233 0.0 0.4 109804 8028 ? S 14:57 0:01 /usr/sbin/zabbix_server: history syncer #3 [processed 0 values, 0+0 triggers in 0.000045 (0.000,0.000,0.000,0.000,0.000) sec, idle 1 sec]
zabbix 34234 0.0 0.4 109804 8668 ? S 14:57 0:01 /usr/sbin/zabbix_server: history syncer #4 [processed 0 values, 0+0 triggers in 0.000033 (0.000,0.000,0.000,0.000,0.000) sec, idle 1 sec]

各フィールドの意味は以下の通りです。

  • processed N values
    この history syncer プロセスが処理したヒストリデータの件数。
  • A+B triggers
    トリガーの処理件数。
    A: ヒストリデータの到着によって評価されたトリガー数。
    B: タイマーによって評価されたトリガー数。
  • in x.xxxxx (内訳) sec
    ヒストリデータ処理にかかった合計時間とその内訳。括弧内の5つの値は、それぞれ以下の処理に要した時間 (秒)。
    1. ヒストリデータをデータベースへ書き込んだ時間
    2. アイテムの状態を更新する時間(例:エラー状態、インベントリ情報など)
    3. トレンドデータをデータベースにフラッシュした時間
    4. トリガーを評価した時間
    5. イベントおよびアクションを処理した時間

セキュリティ機能の強化

Zabbix フロントエンドとサーバ間の TLS 通信対応

Zabbix フロントエンドと Zabbix サーバ間の通信を TLS で暗号化できるようになりました。

Zabbix フロントエンドのセットアップ中に、以下のオプションを有効にし、必要な証明書情報などを入力することで、Zabbix フロントエンドと Zabbix サーバ間の TLS 通信を有効化できます。

  • Encrypt connections from Web interface
  • Verify server certificate issuer and subject (※必要に応じて)

設定方法などの詳細については、以下の公式ドキュメントを参照してください。

Secure connection to the frontend

Vault シークレットマクロの分離解決 (サーバ・プロキシ個別)

Vault に格納されたシークレットマクロの解決処理を、Zabbix サーバとプロキシで個別に実行できる新しいオプションが追加されました。

この設定は、Zabbix フロントエンドの「管理」⇒「一般設定」⇒「その他」タブ内の「Vaultシークレットマクロを解決する」で変更可能です。

選択肢は以下の通りです。

  • Zabbixサーバー (デフォルト)
    シークレットは Zabbix サーバによって Vault から取得され、必要に応じてプロキシに転送されます。
  • Zabbixサーバーとプロキシ
    シークレットは Zabbix サーバとプロキシの両方によって Vault から取得され、マクロを独立して解決できます。

プラグイン

Zabbix Agent 2 の各 DB プラグイン (MySQL、PostgreSQL、Oracle、MSSQL) において、カスタムクエリの検索パスを設定するパラメータにデフォルト値が追加されました。

各プラグインの設定ファイルには、以下のパラメータにデフォルト値が追加されました。

(MSSQL 向け)
Plugins.MSSQL.CustomQueriesDir

(MySQL、PostgreSQL、Oracle 向け)
Plugins.<Plugin>.CustomQueriesPath

なお、このカスタムクエリ機能はデフォルトで無効になっているため、利用する場合は以下のパラメータを設定して明示的に有効化する必要があります。

Plugins.<Plugin>.CustomQueriesEnabled=true

フロントエンド

フォームのインラインバリデーション

テンプレート、ホスト、アイテム、トリガーの設定フォームでインラインバリデーションに対応しました。入力項目にエラーがあると即座にエラーを表示します。

デフォルトのダッシュボードの更新

Zabbix の新規インストール時のデフォルトのダッシュボード画面が最新のウィジェットを含むように更新されました。

パレットに対応した新しいカラー選択ツール

グラフと円グラフウィジェットのカラー選択ツールが改良され、パレットタブに切り替えて定義済みの色のセットから選択できるようになりました。

保存前処理のテスト結果の簡単コピー

アイテムの保存前処理のテスト結果を「クリップボードにコピー」ボタンで簡単にコピーできるようになりました。

ドキュメント構成の変更

これまで各マイナーバージョン(例:7.4.1、7.4.2、7.4.3 など)ごとに分かれていた新機能アップグレード時の注意点の情報が、それぞれ1つの統合ページにまとめられるようになりました。