Table of Contents

11 7.0.0へアップグレード時の注意点

Zabbix 6.4.xからZabbix 7.0.0へのアップグレードに関する注意点です。

すべての注意点は以下のように分類されています。

  • 重大な変更 - 既存の環境を壊す可能性のある変更、およびアップグレードプロセスに関連する重要な情報
  • その他 - Zabbixの機能の変更に関する残りのすべての情報

参照 :

アップグレードプロセス

MySQL/MariaDBでZabbixサーバーのアップグレードを正常に完了するには、バイナリロギングが有効で、スーパーユーザー権限がなく、MySQL構成ファイルにlog_bin_trust_function_creators = 1が設定されていない場合、MySQLでGLOBAL log_bin_trust_function_creators = 1を設定する必要がある場合があります。

MySQLコンソールを使用して変数を設定するには、次を実行します。

mysql> SET GLOBAL log_bin_trust_function_creators = 1;

アップグレードが正常に完了したら、このオプションを無効にすることができます。

mysql> SET GLOBAL log_bin_trust_function_creators = 0;

重大な変更

7.0.0から7.0.1へのアップグレード後にPostgreSQL/TimescaleDBでサーバーがクラッシュする

PostgreSQL/TimescaleDBを備えたZabbixを7.0.0から7.0.1(またはそれ以降)にアップグレードすると、サーバーがクラッシュします。この問題は、監査ログテーブルの圧縮ポリシーが不可逆的に変更する、Zabbix 7.0の監査ログテーブルにおける圧縮ジョブの問題に対する回避策によって発生します。

監査ログテーブルを手動で修正する方法の詳細については、既知の問題を参照してください。

まだZabbix 7.0.0にアップグレードしていない場合は、7.0より前のZabbixバージョンから7.0.1にアップグレードしてもこのような問題は発生しないことに注意してください。アップグレード手順については、TimescaleDBスキーマのアップグレードを参照してください。

7.0.0-7.0.4からアップグレード後のPostgreSQL/TimescaleDBでのデータベース復元エラー

pg_restoreを使用してZabbix 7.0.0から7.0.4で作成されたPostgreSQL/TimescaleDBバックアップを復元すると、base36_decode関数が見つからないというエラーが発生し、復元が失敗します。 このエラーは、pg_dumpを使用して作成されたバックアップを復元するときに発生します。

バックアップを作成する前にこの問題を手動で修正する方法の詳細については、既知の問題を参照してください。

まだZabbix 7.0.0にアップグレードしていない場合は、7.0より前のZabbixバージョンから7.0.5へのアップグレードではこのような問題は発生しないことに注意してください。 アップグレード手順については、TimescaleDBスキーマのアップグレードを参照してください。

ヒストリ関数パラメーターのバックスラッシュのエスケープ

ヒストリ関数の文字列パラメータに、バックスラッシュの適切なエスケープが追加されました。

7.0より前のZabbixバージョンからのアップグレード中にバックスラッシュが追加されると、パラメーターが長くなり、パラメーターの長さが最大データサイズの255文字を超えるとトリガー関数が壊れる可能性があります。

この問題を回避するには、アップグレード前に長いパラメーターを手動でユーザーマクロに移動することをお勧めします。

Zabbix 7.0.11以降、7.0より前のZabbixバージョンからのアップグレードでは、結果のパラメーターの長さに対する追加のチェックが追加されていることに注意してください。結果の長さが最大サイズを超える場合、そのようなパラメーターはアップグレードされませんが、リストされているパラメーターを手動で修正するようにユーザーに求める警告がログに出力されます。

エスケープ関連のアップグレードの問題も参照してください。

PHPの必須バージョン

PHPの必須バージョンが7.4.0から8.0.0に引き上げられました。

Windowsエージェント設定ファイルのデフォルトの場所

Windows上のZabbixエージェントが設定ファイルを探すデフォルトの場所が変更されました。エージェントは、エージェントバイナリzabbix_agentd.exeがあるディレクトリ(以前のC:\zabbix_agentd.confではなく)で設定ファイルを検索するようになりました。

Windows上のZabbixエージェント2は、バイナリzabbix_agent2.exeがあるディレクトリでデフォルトの設定ファイルを既に検索していました。ただし、新しいバージョンでは、エージェント2は設定ファイルの名前がzabbix_agent2.conf (zabbix_agent2.win.confではなく)であると想定します。

WindowsへのZabbixエージェントのインストールも参照してください。

エージェント2プラグイン設定で空の値の許可

Zabbixエージェント2のプラグイン関連設定パラメーターで空の値が許可されるようになりました。

TimescaleDB 1.xはサポートされなくなりました

TimescaleDB 1.x のサポートは削除されました。

TimescaleDBの倍精度データ型

Zabbix 7.0.0にアップグレードする前に、TimescaleDBが圧縮で使用されている場合は、倍精度データ型を使用するように手動でTimescaleDBをアップグレードする必要があります。

TimescaleDBが倍精度データ型を使用していないかどうかは、システム情報フロントエンドセクションまたはZabbixサーバーログの警告でわかります: "Database is not upgraded to use double precision values. Support for the old numeric type will be removed in future versions." (データベースは倍精度値を使用するようにアップグレードされていません。古い数値型のサポートは将来のバージョンで削除されます。)

詳細については、拡張範囲の数値へのアップグレードを参照してください。

TimescaleDB上のハイパーテーブルに変換された監査ログ

新規インストールではauditlogテーブルは、時間通りの自動パーティショニング (デフォルトでは7日) とパフォーマンスの向上の恩恵を受けるために、TimescaleDB上のハイパーテーブルに変換されました。

既存のインストールを正常にアップグレードするには、TimescaleDBスキーマのアップグレードを参照してください。

参照: TimescaleDBのサポートバージョン

プロキシ用の別のデータベーステーブル

プロキシレコードはhostsテーブルから移動され、新しいproxyテーブルに保存されるようになりました。

また、プロキシの運用データ(最終アクセス、バージョン、互換性など)はhost_rtdataテーブルから移動され、新しいproxy_rtdataテーブルに保存されるようになりました。

API には新しいproxyオブジェクトもあります。プロキシを使用したすべての操作は、この新しいプロキシオブジェクトを介して実行されるように更新する必要があります。

データベースモニターアイテムのクエリ実行タイムアウト

アイテムタイムアウト設定 の変更に基づいて、データベースモニターアイテムのODBCログインタイムアウトとクエリ実行タイムアウトの両方が、アイテム設定フォームで設定されたTimeoutパラメーター値に制限されるようになりました。

エージェント/エージェント2アイテムの更新

  • wmi.getおよびwmi.getallは、Zabbixエージェント2で使用する場合、Zabbix エージェント上のこれらのアイテムの出力形式と一致するように、文字列として表現されたブール値を含むJSONを返すようになりました (たとえば、以前は"RealTimeProtectionEnabled": trueを返していましたが、"RealTimeProtectionEnabled": "True"を返します)。
  • oracle.ts.statsには、ターゲットコンテナ名を指定するための新しいconnameパラメーターがあります。返されるデータのJSON形式が更新されました。キーパラメーターでtablespacetype、またはconnameが指定されていない場合、返されるデータには、コンテナ名を含む追加のJSONレベルが含まれ、コンテナを区別できるようになります。
  • net.dns.*アイテムは、nameパラメーターなしでは設定できなくなりました。 以前はnameパラメーターを省略するとデフォルト値(zabbix.com)に解決されていましたが、現在は常に必須で省略できません。

互換性を損なわないアイテムの変更の一覧については、Zabbix 7.0.0の新機能を参照してください。

Zabbixの高可用性によるSNMPトラップ

Zabbixは、高可用性設定でアクティブノードが切り替えられた場合に、正しい場所からSNMPトラップファイルを読み取ることができるようになりました。

ただし、この機能が動作するには、bash、perl、およびSNMPTTスクリプトの時刻形式を"%Y-%m-%dT%H:%M:%S%z" (例: 2024-01-10T11:56:14+0300)に更新する必要があります。

ダッシュボードウィジェットの最大サイズと数の増加

すべてのウィジェットのデフォルトの幅が3倍に増加しました。カスタムウィジェットを使用している場合は、manifest.jsonファイルのそれぞれのパラメーターを更新する必要がある場合があります (たとえば、カスタマイズされた時計ウィジェットを設定する場合、width4から12に変更する必要があります)。

ウィジェットの幅は最大72列 (以前は24)、高さは1 ~ 64行 (以前は2 ~ 32)になりました。そのため、ダッシュボードには水平方向に最大72個のウィジェットを配置できるようになりました。

アイテムヒストリとプレーンテキストウィジェット

新しいアイテムヒストリダッシュボードウィジェットがプレーンテキストウィジェットに取って代わり、いくつかの改善が行われました。

プレーンテキストで最新のアイテムデータのみを表示するプレーンテキストウィジェットとは異なり、アイテムヒストリウィジェットは複数のアイテムタイプ(数値、文字、ログ、テキスト、バイナリ)のさまざまな表示オプションをサポートしています。 たとえば、進行状況バーまたはインジケーター、バイナリデータタイプのイメージ (ブラウザアイテムに便利)、およびテキスト値のハイライト表示 (ログファイル監視に便利) を表示できます。

アップグレード後、以前に構成されたすべてのプレーンテキストウィジェットは、同じ構成設定を保持したまま、アイテムヒストリウィジェットに自動的に置き換えられます。 ただし、プレーンテキストウィジェットを参照するAPIスクリプトは手動で更新する必要があります。

7.0.4へのアップグレード後の特定の組み込みマクロの解決の変更

Zabbix 7.0.4では、マクロ{HOST.CONN}{HOST.DNS}{HOST.IP}{EVENT.CAUSE.*}{EVENT.TAGS.*}、および{EVENT.SYMPTOMS}の解決動作が、他の組み込みマクロとの一貫性を保つために修正されました。現在、値の評価中にエラーが発生した場合、これらのマクロは*UNKNOWN*に解決されます。

この変更の結果、適切な機能を確保するには、次の統合のメディア タイプを更新する必要があります: iTopJira Service DeskManageEngine ServiceDeskSolarWinds Service Desk

この変更は、上記のマクロを使用するカスタムスクリプトや統合にも影響する可能性があります。

API変更点

Zabbix 7.0.0のAPI changesの一覧を参照してください。

その他

Oracle DBが非推奨に

バックエンドデータベースとしてのOracleのサポートはZabbix 7.0以降非推奨となり、将来のバージョンでは完全に削除される予定です。

ソフトウェア更新チェック

新規および既存のインストールにソフトウェア更新チェックがデフォルトで追加されました。Zabbixフロントエンドは、パブリックZabbixエンドポイントと通信して更新をチェックします。

このチェックを無効にするには、サーバーの設定でAllowSoftwareUpdateCheck=0を設定します。

浮動小数点値が整数アイテム用に切り詰められる

現在、符号なし整数アイテムに浮動小数点値が受信されると、値は小数部から切り詰められ、整数として保存されます。 以前は、浮動小数点値があると整数アイテムがサポートされませんでした。

米国時間形式

デフォルト(en_US)フロントエンド言語が使用されている場合、フロントエンドの時刻と日付の表示は、米国標準の時刻/日付表示に準拠するようになりました。

以前

非同期ポーラー

アップグレード後、すべてのエージェント、HTTPエージェント、およびwalk[OID]SNMPチェックは非同期ポーラーに移動されます。

実行時にcURLライブラリ機能を検出

以前は、cURLライブラリ機能はZabbixサーバー、プロキシ、またはエージェントのビルド時に検出されていました。cURL機能がアップグレードされた場合、それぞれのZabbixコンポーネントを再コンパイルする必要がありました。

現在、アップグレードされたcURLライブラリ機能をZabbixで使用するのに必要なことは、再起動のみです。再コンパイルは不要になりました。これは、Zabbixサーバー、プロキシ、またはエージェントに当てはまります。

さらに、次の点も変更されました:

  • ビルド時の必須cURLバージョンが7.19.1に引き上げられました。
  • Zabbixのビルド時に、cURLライブラリが使用可能かどうか (要求された場合) とバージョン要件を満たしているかどうかのみが確認されます。
  • ランタイムcURLライブラリエラーを発行すると、使用中のバージョンが追加されます (例: "cURLライブラリはSSL/TLSをサポートしていません (バージョン 7.88.1 を使用)")。
  • Zabbixサーバーが起動され、SMTP認証がログに記録されると、使用されているcURLライブラリのSMTP認証の可用性が書き込まれます。

アイテムのタイムアウト設定の変更

アップグレードすると、サポートされているすべてのアイテムタイプのグローバルタイムアウトが、サーバー設定ファイルの Timeout パラメーター値に基づいて設定されます。 プロキシが設定されている場合は、デフォルトでサーバーのグローバルタイムアウト設定が使用されます。

アップグレードされたサーバー(バージョン7.0.0以降)を古いプロキシまたはエージェントで使用する場合、プロキシまたはエージェントは以前と同じように動作します。

  • プロキシはプロキシ設定ファイルのTimeoutパラメーターを使用します。
  • エージェントはエージェント設定ファイルのTimeoutパラメーターを使用します。

ModbusおよびMQTTプラグインの設定ファイルからタイムアウトパラメーターが削除されました。 リクエスト実行タイムアウトは、アイテム設定フォームを使用して設定できるようになりました。

ブラウザアイテム

新しいアイテムタイプであるブラウザアイテムがZabbixに追加され、ブラウザを使用して複雑なWebサイトやWebアプリケーションを監視できるようになりました。 ブラウザアイテムを使用すると、ユーザー定義のJavaScriptコードを実行して、クリック、テキストの入力、Webページのナビゲーションなどのブラウザ関連のアクションをシミュレートできます。

さらに、この機能により、次の変更も追加されます:

ネットワークディスカバリの同時実行

新しいバージョンでは、ネットワークディスカバリプロセスが改良され、サービスチェック間の同時実行が可能になりました。 新しいディスカバリマネージャープロセスが、設定可能な数の検出ワーカー(またはスレッド)とともに追加されました。ディスカバリマネージャーは、ディスカバリルールを処理し、タスク(サービスチェック)を含む各ルールごとにディスカバリジョブを作成します。サービスチェックは、ディスカバリワーカーによって取得され、実行されます。

StartDiscoverersパラメーターによって、ディスカバリに使用できるディスカバリワーカーの合計数が決定されます。 StartDiscoverersのデフォルトの数は1から5に、範囲は0 ~ 250から0 ~ 1000に増加されました。以前のZabbixバージョンのdiscovererプロセスは削除されました。

さらに、各ルールごとに使用できるワーカーの数は、フロントエンドで設定できるようになりました。このパラメーターはオプションです。 アップグレード中は、以前のZabbixバージョンと同様に"1"に設定されます。

アイコンがフォントに置き換えられました

フロントエンドのすべてのアイコンがアイコン画像シートからフォントに切り替わりました。

最新データフィルター

データ監視最新データでは、フィルターが設定されていない場合、サブフィルターとデータはデフォルトで表示されなくなりました。 ただし、サブフィルターのみを使用して設定された以前の保存されたフィルターは影響を受けません。 このような場合、サブフィルターは表示されたままになり、メインフィルターが設定されていなくてもデータが表示されます。

設定パラメーター

いくつかの設定パラメーターのデフォルト値が変更されました:

  • Zabbixエージェント2のBufferSize設定パラメーターが100から1000に増加しました。
  • Zabbixエージェント2の Plugins.<PluginName>.System.Capacity設定パラメーターが100から1000(最大値)に増加しました。Zabbix 6.0で非推奨となったパラメーターPlugins.<PluginName>.Capacityは完全に削除されていることに注意してください。
  • ZabbixエージェントのStartAgents設定パラメーターが3 から10に増加されました。パッケージングでは、小規模なシステム(Raspberry Piなど)の場合、デフォルト値は3のままになる可能性があることに注意してください。

これらの変更は、これらのパラメーターが明示的に設定されている既存のインストールには影響しません。

集計計算

いくつかの集計関数が更新されました。

  • 集計関数は、計算に数値以外の型もサポートするようになりました。これは、たとえばcount関数やcount_foreach関数で役立ちます。
  • count関数やcount_foreach集計関数は、オプションのパラメーターoperatorpatternをサポートします。これらを使用して、アイテムのフィルタリングを微調整し、指定された条件に一致する値のみをカウントできます。
  • すべてのforeach関数で、サポートされていないアイテムがカウントに含まれなくなりました。
  • 以前は期間引数を無視するように構成されていた関数last_foreachは、これをオプションのパラメーターとして受け入れます。

古い数値タイプ(浮動小数点)は削除されました

Zabbix 5.0以降、数値データ(浮動小数点)型は約15桁の精度と約-1.79E+308から1.79E+308 の範囲をサポートします。 古い数値タイプは無効でしたが、引き続きサポートされていました。Zabbix 6.4では非推奨となり、Zabbix 7.0以降では完全に削除されました。

インストールが拡張範囲の数値を使用するようにアップグレードされていない場合は、レポートシステム情報に次の警告が表示されます: "Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to numeric values of extended range. (データベースヒストリテーブルがアップグレードされました: いいえ。古い数値タイプのサポートは非推奨です。拡張範囲の数値にアップグレードしてください。)"

Zabbix 7.0にアップグレードすると、次のデータベースが自動的にアップグレードされます:

  • MySQL
  • PostgreSQL/TimescaleDB (圧縮なし)
  • Oracle

ただし、Oracle、古いバージョンのMySQL、および大規模なインストールの場合は、Zabbix 7.0にアップグレードする前に、データタイプを手動でアップグレードすることをお勧めします。

圧縮されたTimescaleDBの場合、データベースは手動でアップグレードする必要があります。

アップグレードの詳細については、拡張範囲の数値へのアップグレードを参照してください。

Windowsエージェントサービスのスタートアップタイプの設定

Zabbixエージェント/エージェント2のWindowsサービスのスタートアップの種類を設定するオプション(-S --startup-type)が追加されました。 このオプションを使用すると、エージェント/エージェント2 サービスをWindowsの起動時に自動的に開始(automatic)、自動的に開始されたサービスの起動が完了した後に開始(delayed)、ユーザーまたはアプリケーションによって手動で開始(manual)、またはサービスを完全に無効にする(disabled)のように設定できます。

MSIからのWindowsエージェントのインストールを実行する場合、Windows Server 2008/Vista以降のバージョンでは、[コマンドラインパラメーター]((/manual/installation/install_from_packages/win_msi#installation-from-command-line)STARTUPTYPEで特に指定しない限り、デフォルトのスタートアップタイプがdelayedになります。 これにより、特にシステムの再起動時に、Zabbixエージェント/エージェント2のWindowsサービスの信頼性とパフォーマンスが向上します。

テンプレート

新しいテンプレートと既存のテンプレートの変更については、テンプレートの変更を参照してください。

データベース関連ファイルの新しいディレクトリ構造

パッケージからZabbixをインストールしてデータベーススキーマを準備するときに、データベース関連ファイルの場所が、ソース内のファイル構造とより適切に対応するように変更されました。

  • 基本初期化ファイル (schema.sqldata.sqlimages.sql)はデータベース ディレクトリのルートにあります。
  • データベーステーブルのアップグレードオプションファイル/パッチは、option-patchesディレクトリにあります。
  • データベース拡張機能とアドオンはサブディレクトリになり、拡張機能にちなんで名前が付けられ、それぞれのデータベースディレクトリに配置されます。
  • TimescaleDB固有の変更:
    • 略語tsdbtimescaledbに置き換えられました。
    • option-patchesディレクトリには、with-compressionサブディレクトリとwithout-compression サブディレクトリが含まれています。 これらには、TimescaleDB圧縮設定に応じて、データベーステーブルのアップグレードのオプションファイル/パッチが含まれています。
    • TimescaleDBのハイパーテーブルスキーマ作成ファイルはdatabase/postgresql/timescaledb/schema.sqlに移動されました。

さらに、次の変更点にも注意してください。

  • すべてのhistory_pk_*.sqlファイルの名前がhistory_upgrade_*.sqlに変更され、データベースアップグレードスクリプトを改善するためにtrends_upgrade.sqlファイルが追加されました。
  • double.sqlファイルは、古い数値型(float)の削除により削除されました。

以下は、MySQLデータベースとPostgreSQ データベースの以前のディレクトリ構造と現在のディレクトリ構造の比較です。

# 以前:                                         # 現在:
       
       database                                            database
       ├── mysql                                           ├── mysql
       │  ├── data.sql                                     │  ├── option-patches
       │  ├── double.sql                                   │  │  └── history_upgrade_prepare.sql
       │  ├── history_pk_prepare.sql                       │  ├── data.sql
       │  ├── images.sql                                   │  ├── images.sql
       │  └── schema.sql                                   │  └── schema.sql
       │                                                   │
       │                                                   │
       ├── postgresql                                      ├── postgresql
       │  ├── tsdb_history_pk_upgrade_no_compression       │  ├── option-patches
       │  │  ├── history_pk.sql                            │  │  └── history_upgrade_prepare.sql
       │  │  ├── history_pk_log.sql                        │  ├── timescaledb
       │  │  ├── history_pk_str.sql                        │  │  ├── option-patches
       │  │  ├── history_pk_text.sql                       │  │  │  ├── with-compression
       │  │  └── history_pk_uint.sql                       │  │  │  │  ├── history_upgrade.sql
       │  ├── tsdb_history_pk_upgrade_with_compression     │  │  │  │  ├── history_upgrade_log.sql
       │  │  ├── history_pk.sql                            │  │  │  │  ├── history_upgrade_str.sql
       │  │  ├── history_pk_log.sql                        │  │  │  │  ├── history_upgrade_text.sql
       │  │  ├── history_pk_str.sql                        │  │  │  │  ├── history_upgrade_uint.sql
       │  │  ├── history_pk_text.sql                       │  │  │  │  └── trends_upgrade.sql
       │  │  └── history_pk_uint.sql                       │  │  │  └── without-compression
       │  ├── data.sql                                     │  │  │     ├── history_upgrade.sql
       │  ├── double.sql                                   │  │  │     ├── history_upgrade_log.sql
       │  ├── history_pk_prepare.sql                       │  │  │     ├── history_upgrade_str.sql
       │  ├── images.sql                                   │  │  │     ├── history_upgrade_text.sql
       │  ├── schema.sql                                   │  │  │     ├── history_upgrade_uint.sql
       │  └── timescaledb.sql                              │  │  │     └── trends_upgrade.sql
       │                                                   │  │  └── schema.sql
       │                                                   │  ├── data.sql
       │                                                   │  ├── images.sql
       │                                                   │  └── schema.sql
       ├── ...                                             ├── ...

以前のディレクトリ構造またはファイルへの参照を含むスクリプトがあれば、更新してください。

パッシブエージェントチェック用のJSONプロトコル

パッシブエージェントチェック用のJSONベースのプロトコルが実装されました。

古いエージェントとの互換性のために、古いプレーンテキストプロトコルへのフェイルオーバーが追加されました。エージェントが"ZBX_NOTSUPPORTED"を返す場合、Zabbixはインターフェースを古いプロトコルとしてキャッシュし、プレーンテキストのアイテムキーのみを送信してチェックを再試行します。

Zabbix getは、新しいオプション-P --protocol <value>で実行できるようになりました。"value"は次のいずれかです。

  • auto - JSONプロトコルを使用して接続し、フォールバックしてプレーンテキストプロトコルで再試行します (デフォルト)。
  • json - JSONプロトコルキーを使用して接続します。
  • plaintext - アイテムキーのみが送信されるプレーンテキストプロトコルを使用して接続します。

アイテムキーがサポートされていない場合、Zabbix getは終了コード0ではなく1を返すようになりました。