You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.
Table of Contents

既知の問題

参考: コンパイルの問題

アップグレード

正常なアップグレードのためのSQLモード設定

MySQL/MariaDBのsql_mode設定には、"STRICT_TRANS_TABLES"モードが設定されている必要があります。 これが設定されていない場合、Zabbixデータベースのアップグレードは失敗します(ZBX-19435も参照してください)。

MariaDB 10.2.1以前でのアップグレード

MariaDB 10.2.1以前でデータベーステーブルが作成された場合、Zabbixのアップグレードが失敗することがあります。これらのバージョンではデフォルトの行フォーマットがcompactであるためです。 この問題は、行フォーマットをdynamicに変更することで修正できます(ZBX-17690も参照)。

テンプレート

デュアルスタック(IPv4/IPv6)環境におけるテンプレートの互換性

デュアルスタック環境(IPv4とIPv6の両方をサポートするように構成されたシステム)では、ホスト名 localhost は通常、IPv4アドレスとIPv6アドレスの両方に解決されます。 多くのオペレーティングシステムやDNSリゾルバがIPv4よりもIPv6を優先するという一般的な優先順位付けのため、監視対象のサービスがIPv4のみでリッスンするように構成されている場合、Zabbixテンプレートが正しく動作しないことがあります。

IPv6アドレスでリッスンするように構成されていないサービスはアクセスできなくなり、監視が失敗する可能性があります。 ユーザーはIPv4で正しくアクセスを構成していても、IPv6がデフォルトで優先される動作により接続の問題に直面することがあります。

この回避策としては、サービス(Nginx、Apache、PostgreSQLなど)がIPv4とIPv6の両方のアドレスでリッスンするように構成されており、Zabbixサーバー/エージェントがIPv6経由でアクセスできるようにすることです。 さらに、Zabbixのテンプレートや設定では、127.0.0.1 の代わりに localhost を明示的に使用して、IPv4とIPv6の両方との互換性を確保してください。

例えばPostgreSQL by Zabbix agent 2 テンプレートでPostgreSQLを監視する場合、zbx_monitor ユーザーの接続を許可するために pg_hba.conf ファイルを編集する必要があるかもしれません。 デュアルスタック環境でIPv6が優先されている場合(システムがlocalhostを ::1 に解決する)に localhost を構成し、IPv4エントリ(127.0.0.1/32)のみを追加した場合、対応するIPv6エントリがないため接続は失敗します。

次の pg_hba.conf ファイルの例は、zbx_monitor ユーザーがローカルマシンからIPv4およびIPv6アドレスの両方を使用して、異なる認証方式で任意のデータベースに接続できることを保証します。

# TYPE     DATABASE     USER            ADDRESS          METHOD
         host     all          zbx_monitor     localhost        trust
         host     all          zbx_monitor     127.0.0.1/32     md5
         host     all          zbx_monitor     ::1/128          scram-sha-256

必要に応じて、接続文字列のテンプレートマクロを構成する際に、PostgreSQL by Zabbix agent 2 テンプレートでIPv4アドレス(127.0.0.1)を直接使用することもできます。

EPEL Zabbixパッケージの誤インストール

EPELリポジトリがインストールされ有効になっている場合、Zabbixパッケージのインストール時に公式のZabbixパッケージではなくEPELバージョンがインストールされることがあります。 これを解決するには:

1. EPELからインストールされたZabbixパッケージを削除します:

dnf remove zabbix-server-mysql

2. /etc/yum.repos.d/epel.repoファイルに以下の行を追加して、EPELからZabbixパッケージを除外します:

[epel]
       ...
       excludepkgs=zabbix*

3. 公式のZabbixサーバーパッケージを再インストールします:

dnf install zabbix-server-mysql

インストール時、公式のZabbixパッケージはバージョン文字列にreleaseという単語が含まれており(例: 7.0.0-release1.el8)、EPELパッケージと区別できます。

Red Hat UBI環境のRHEL用Zabbixパッケージ

Red Hat Universal Base Image環境でRed Hat Enterprise LinuxパッケージからZabbixをインストールする場合は、必要なリポジトリと依存関係にアクセスできることを確認してください。Zabbix パッケージはlibOpenIPMI.soおよびlibOpenIPMIposix.soライブラリに依存していますが、これらはUBIシステムで有効になっているデフォルトのパッケージマネージャーリポジトリのどのパッケージでも提供されていないため、インストールが失敗します。

libOpenIPMI.soおよびlibOpenIPMIposix.soライブラリは、redhat-#-for-<arch>-appstream-rpmsリポジトリによって提供されるOpenIPMI-libsパッケージで使用できます。このリポジトリへのアクセスはサブスクリプションによって管理されUBI環境の場合、RHELホストのリポジトリ構成およびシークレットディレクトリをコンテナーファイルシステムの名前空間にマウントすることによって伝播されます。

詳細についてはZBX-24291を参照してください。

RHELパッケージの署名鍵の有効期限切れ

Red Hat Enterprise Linuxまたはその派生ディストリビューションでZabbixをアップグレードする際、Zabbixリポジトリのパッケージに対して署名鍵の有効期限切れの問題が発生する場合があります。 署名鍵が有効期限切れになると、パッケージ署名の検証を試みても、証明書または鍵が有効でないことを示すエラーが発生します。 例:

error: Verifying a signature using certificate D9AA84C2B617479C6E4FCF4D19F2475308EFA7DD (Zabbix LLC (Jul 2022) <[email protected]>):
         1. Certificate 19F2475308EFA7DD invalid: certificate is not alive
             because: The primary key is not live
             because: Expired on 2024-07-04T11:41:23Z
         2. Key 19F2475308EFA7DD invalid: key is not alive
             because: The primary key is not live
             because: Expired on 2024-07-04T11:41:23Z

このような問題を解決するには、RHELのバリアントに合わせて最新のzabbix-releaseパッケージを手動で再インストールしてください(下記のリンクはZabbixリポジトリから正しいものに置き換えてください)。

例えば、RHEL 10の場合は次のコマンドを実行します:

rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/rhel/10/noarch/zabbix-release-latest.el10.noarch.rpm

その後、リポジトリ情報を更新します:

dnf update

詳細はZBX-24761を参照してください。

Timescale DB: パーティション数が多い場合のメモリ使用量の増加

PostgreSQLバージョン9.6-12では、多数のパーティションを持つテーブルを更新する際に過剰なメモリを使用します。 この問題は、ZabbixがTimescaleDBを使用しているシステムでトレンドを比較的小さなチャンク(例:1日)に分割している場合に発生します。 これにより、デフォルトのハウスキーピング設定ではトレンドテーブルに数百のチャンクが存在し、PostgreSQLがメモリ不足に陥る可能性があります。

この問題は、TimescaleDBを使用した新規インストールのZabbix 5.0.1以降で解決されていますが、それ以前にTimescaleDBをセットアップした場合は、ZBX-16347の移行手順をご参照ください。

Timescale DB 2.5.0: 整数を含むテーブルで圧縮ポリシーが失敗する可能性

この問題は、TimescaleDB 2.5.0/2.5.1を使用している場合に発生します。 TimescaleDB 2.5.2以降で解決されています。

詳細については、TimescaleDB Issue #3773をご参照ください。

MariaDBとのデータベースTLS接続

MariaDBを使用している場合、DBTLSConnect パラメータの'verify_ca'オプションによるデータベースTLS接続はサポートされていません。

MySQL/MariaDBで発生する可能性のあるデッドロック

高負荷で動作し、複数のLLDワーカーが関与している場合、行ロック戦略に関連するInnoDBエラーが原因でデッドロックが発生する可能性があります(上流バグを参照)。 このエラーはMySQL 8.0.29以降で修正されていますが、MariaDBでは修正されていません。 詳細はZBX-21506を参照してください。

グローバルイベントの相関

最初のイベントと2番目のイベントの間隔が非常に短い場合、つまり0.5秒以下の場合、イベントが正しく相関されないことがあります。

PostgreSQL 11以前の数値(浮動小数点)データ型の範囲

PostgreSQL 11以前のバージョンでは、約-1.34E-154から1.34E+154までの浮動小数点値の範囲のみがサポートされています。

NetBSD 8.0以降

NetBSD 8.Xおよび9.Xバージョンでは、さまざまなZabbixプロセスが起動時にランダムにクラッシュすることがあります。 これは、デフォルトのスタックサイズ(4MB)が小さすぎるためであり、次のコマンドを実行して増やす必要があります。

ulimit -s 10240

詳細については、関連する問題レポートをご覧ください: ZBX-18275

Zabbixエージェント2の正規表現の制限

Zabbixエージェント2は、標準のGo正規表現ライブラリの制限により、正規表現の先読みと後読みをサポートしていません。

IPMIチェック

Debian 9(stretch)以前およびUbuntu 16.04(xenial)以前の標準OpenIPMIライブラリパッケージでは、IPMIチェックは動作しません。 これを修正するには、ZBX-6139で説明されているように、OpenSSLを有効にしてOpenIPMIライブラリを再コンパイルしてください。

IPMI — 信頼できないホストがOpenIPMIをクラッシュさせる可能性がある

ZabbixがIPMIデータのポーリングに使用するOpenIPMIライブラリには、信頼できないデバイスからの細工された応答によってトリガーされるバグがあります。
信頼できないIPMIデバイスが細工されたデータを送信すると、OpenIPMIライブラリがクラッシュし、結果としてIPMIポーリングを実行するZabbixサーバープロセスが終了する可能性があります。

SSHチェック

  • Debian、Ubuntuなどの一部のLinuxディストリビューションでは、libssh2ライブラリがパッケージからインストールされている場合、暗号化された秘密鍵(パスフレーズ付き)はサポートされません。 詳細については、ZBX-4850をご覧ください。
  • 一部のLinuxディストリビューションでOpenSSH 8とlibssh 0.9.xを使用している場合、SSHチェックで「Cannot read data from SSH server」と報告されることがあります。 これはlibsshの問題詳細なレポート)が原因です。 このエラーは、安定版libssh 0.9.5リリースで修正されているはずです。 詳細については、ZBX-17756もご覧ください。
  • SSHスクリプトでパイプ「|」を使用すると、「Cannot read data from SSH server」エラーが発生する場合があります。 この場合は、libsshライブラリのバージョンアップを推奨します。 詳細については、ZBX-21337もご覧ください。

ODBCチェック

  • MySQL unixODBCドライバは、MariaDBコネクタライブラリでコンパイルされたZabbixサーバーまたはZabbixプロキシと一緒に使用しないでください。また、その逆も同様です。可能であれば、上流のバグのため、ドライバと同じコネクタの使用も避けるのが望ましいです。 推奨されるセットアップ:

PostgreSQL、SQLite、またはOracleコネクタ → MariaDBまたはMySQL unixODBCドライバ MariaDBコネクタ → MariaDB unixODBCドライバ MySQLコネクタ → MySQL unixODBCドライバ

詳細および利用可能な回避策については、ZBX-7665を参照してください。

  • Microsoft SQL ServerからクエリされたXMLデータは、LinuxおよびUNIXシステム上でさまざまな方法で切り捨てられる場合があります。

  • Linux用のさまざまなバージョンのOracle Instant Clientを使用してOracleデータベースを監視するためにODBCチェックを使用すると、Zabbixサーバーがクラッシュすることが観察されています。
    詳細はZBX-18402ZBX-20803も参照してください。

  • FreeTDS UnixODBCドライバを使用する場合、SQLクエリの先頭に「SET NOCOUNT ON」ステートメントを追加する必要があります(例: SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = ....)。 そうしないと、Zabbixのデータベース監視アイテムが「SQL query returned empty result」というエラーで情報の取得に失敗します。
    詳細についてはZBX-19917を参照してください。

アイテムのリクエストメソッドパラメータが正しくありません

HTTPチェックでのみ使用されるリクエストメソッドパラメータが、Zabbix 4.0以前のバージョンからのアップグレードの結果として、すべてのアイテムでデフォルト以外の値「1」に誤って設定されている場合があります。 この状況を修正する方法の詳細については、ZBX-19308を参照してください。

Web監視とHTTPエージェント

Zabbixサーバーは、WebシナリオまたはHTTPエージェントで「SSL verify peer」が有効になっている場合、一部のLinuxディストリビューションで上流のバグによりメモリリークが発生します。 詳細および利用可能な回避策については、ZBX-10486を参照してください。

シンプルチェック

fping v3.10より前のバージョンには、重複したエコーリプレイパケットを誤って処理するバグがあります。 これにより、icmppingicmppinglossicmppingsecアイテムで予期しない結果が発生する可能性があります。 fpingの最新バージョンを使用することを推奨します。 詳細はZBX-11726をご覧ください。

rootlessコンテナでのfping実行時のエラー

コンテナがrootlessモードまたは特定の制限環境で実行されている場合、ICMPチェックを実行する際にfpingの実行に関連するエラー(例:fping: Operation not permittedや、すべてのリソースへのパケットが失われる)に直面することがあります。

この問題を修正するには、"docker run"または"podman run"コマンドに--cap-add=net_rawを追加してください。

さらに、非root環境でfpingを実行するにはsysctlの変更が必要な場合があります。例:

sudo sysctl -w "net.ipv4.ping_group_range=0 1995"

ここで"1995"はzabbixのGIDです。 詳細については、ZBX-22833を参照してください。

SNMPチェック

OpenBSDオペレーティングシステムを使用している場合、Net-SNMPライブラリの5.7.3バージョンまでのuse-after-freeバグにより、Zabbixサーバーの設定ファイルでSourceIPパラメータが設定されていると、Zabbixサーバーがクラッシュする可能性があります。 回避策として、SourceIPパラメータを設定しないでください。 同じ問題はLinuxにも当てはまりますが、Zabbixサーバーの動作停止は引き起こしません。 OpenBSDでは、net-snmpパッケージにローカルパッチが適用されており、OpenBSD 6.3でリリースされる予定です。

SNMPデータのスパイク

SNMPデータにスパイクが発生することがあり、これは主電源の電圧スパイクなどの物理的要因に関連している可能性があります。 詳細はZBX-14318を参照してください。

SNMPトラップ

SNMPトラップに必要な "net-snmp-perl" パッケージは、RHEL 8.0-8.2 で削除され、RHEL 8.3 で再追加されました。

そのため、RHEL 8.0-8.2 を使用している場合は、RHEL 8.3 へのアップグレードが最善の解決策です。

詳細については、ZBX-17192 も参照してください。

RHEL 7でのアラートプロセスのクラッシュ

RHEL 7でZabbixサーバーのアラートプロセスがクラッシュする事例が報告されています。 詳細については、ZBX-10461 を参照してください。

Zabbix agent 2 (6.0.5以前)のアップグレード

パッケージからZabbix agent 2 (バージョン6.0.5以前)をアップグレードする際、プラグイン関連のファイル競合エラーが発生する場合があります。 このエラーを修正するには、必要に応じてagent 2の設定をバックアップし、agent 2をアンインストールして再インストールしてください。

RHEL系システムでは、以下を実行します:

dnf remove zabbix-agent2
       dnf install zabbix-agent2

Debian系システムでは、以下を実行します:

apt remove zabbix-agent2
       apt install zabbix-agent2

詳細はZBX-23250を参照してください。

フロントエンドのロケールが切り替わる

フロントエンドのロケールが明確な理由もなく切り替わる、つまり、あるページ(またはページの一部)がある言語で表示され、他のページ(またはページの一部)が別の言語で表示されることがあることが確認されています。 この問題は、複数のユーザーがいて、そのうちの一部があるロケールを使用し、他のユーザーが別のロケールを使用している場合によく発生します。

この問題の既知の回避策は、PHPおよびApacheでマルチスレッドを無効にすることです。

この問題は、PHPでのロケールの設定の仕組みに関連しています。ロケール情報はスレッドごとではなく、プロセスごとに保持されます。 したがって、マルチスレッド環境では、同じApacheプロセスで複数のプロジェクトが実行されている場合、別のスレッドでロケールが変更され、その結果Zabbixのスレッドでデータの処理方法が変わる可能性があります。

詳細については、関連する問題レポートを参照してください:

  • ZBX-10911(フロントエンドのロケールが切り替わる問題)
  • ZBX-16297(BC Math関数のbcdiv関数を使用したグラフでの数値処理の問題)

グラフ

サマータイム

サマータイム(DST)の変更により、X軸ラベルの表示に不規則性(日付の重複、日付の欠落など)が発生します。

合計集計

グラフで合計集計を1時間未満の期間で使用する場合、トレンドからデータが取得されると、グラフに不正な(乗算された)値が表示されます。

テキストの重なり

一部のフロントエンド言語(例:日本語)では、ローカルフォントによりグラフの凡例でテキストが重なる場合があります。 これを回避するには、PHP GD拡張モジュールのバージョン2.3.0(またはそれ以降)を使用してください。

ログファイルの監視

ファイルシステムが100%フルで、ログファイルが追記されている場合、log[] および logrt[] アイテムはログファイルの先頭から繰り返し再読み込みします(詳細は ZBX-10884 を参照してください)。

遅いMySQLクエリ

Zabbixサーバーは、アイテムの値が存在しない場合に遅いSELECTクエリを生成します。 この問題はMySQL 5.6/5.7バージョンで発生することが知られています(詳細な議論についてはZBX-10652を参照)。また、特定の場合にはそれ以降のMySQLバージョンでも発生する可能性があります。 これに対する回避策としては、MySQLでindex_condition_pushdownまたはprefer_ordering_indexオプティマイザを無効にすることです。 ただし、この回避策ですべての遅いクエリに関連する問題が解決するわけではないことに注意してください。

リンクからのフィルター設定の永続化

フィルター設定(時間セレクターを含む)を含むZabbixフロントエンドページへのリンクを開くと、そのフィルターは自動的にデータベースにユーザーごとに保存され、そのページの以前に保存されたフィルターや時間セレクターの設定が置き換えられます。 これらの設定は、ユーザーが手動で更新またはリセットするまで有効です。

SNMPv3トラップにおけるIPv6アドレスの問題

net-snmpのバグにより、SNMPトラップでSNMPv3を使用する場合、IPv6アドレスが正しく表示されないことがあります。 詳細および回避策については、ZBX-14541を参照してください。

失敗したログイン情報での長いIPv6 IPアドレスの切り捨て

失敗したログイン試行メッセージでは、データベースフィールドの文字数制限が39文字のため、格納されたIPアドレスの最初の39文字のみが表示されます。 つまり、39文字を超えるIPv6 IPアドレスは不完全に表示されます。

WindowsでのZabbixエージェントチェック

Zabbixエージェントの設定ファイル(zabbix_agentd.conf)のServerパラメータに存在しないDNSエントリがあると、Windows上でZabbixエージェントの応答時間が長くなる場合があります。 これは、WindowsのDNSキャッシュデーモンがIPv4アドレスの否定的な応答をキャッシュしないために発生します。 ただし、IPv6アドレスの場合は否定的な応答がキャッシュされるため、これに対する回避策としては、ホストでIPv4を無効にすることが考えられます。

YAMLエクスポート/インポート

YAMLのエクスポート/インポートには、いくつか既知の問題があります。

  • エラーメッセージが翻訳できません。
  • .yamlファイル拡張子の有効なJSONがインポートできない場合があります。
  • クォートされていない人間が読める日付が自動的にUnixタイムスタンプに変換されます。

SUSEでNGINXとphp-fpmを使用したセットアップウィザード

フロントエンドのセットアップウィザードは、NGINX + php-fpmを使用したSUSEで設定ファイルを保存できません。 これは、/usr/lib/systemd/system/php-fpm.serviceユニットの設定によるもので、Zabbixが/etcに書き込むことを防ぎます。(PHP 7.4で導入)

回避策としては、以下の2つのオプションがあります。

  • php-fpmのsystemdユニットのProtectSystemオプションを'full'ではなく'true'に設定する。
  • /etc/zabbix/web/zabbix.conf.phpファイルを手動で保存する。

認証ヘッダーの転送

ApacheまたはNGINXが、APIリクエスト内の認証ヘッダーをZabbixに転送できない場合があります。 これにより、Zabbix APIやOktaを使用したSAMLといったシングルサインオン(SSO)サービスの使用時に認証の問題が発生する可能性があります。

この問題を解決するには、Webサーバーの設定を更新してください。

Apacheをリバースプロキシ(CGI以外の設定)として使用する場合は、(RHELベースシステムの場合) /etc/httpd/conf/httpd.confまたは(Debian/Ubuntuの場合) /etc/apache2/apache2.confに次のディレクティブを追加してください。

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

Apacheがリクエストを処理するためにスクリプトを直接実行する場合(例: mod_cgiを使用)、代わりに次のディレクティブを追加してください。

CGIPassAuth On

一方、NGINXはAuthorizationヘッダーを自動的に処理します。 ただし、NGINXがリバースプロキシとして動作している場合は、/etc/nginx/nginx.conf (Zabbixフロントエンドの場所)に以下のディレクティブを追加することで、Authorizationヘッダーを明示的に転送できます。

...
       location / {
       ...
           proxy_set_header Authorization $http_authorization;
           proxy_pass http://backend_server;
       ...
       }

設定を更新したら、Webサーバーを再起動してください。

詳細については、以下を参照してください:

Ubuntu 20でのZabbix Webサービス用Chromium

ほとんどの場合、Zabbix WebサービスはChromiumで動作しますが、Ubuntu 20.04でChromiumを使用すると、次のエラーが発生します。

Cannot fetch data: chrome failed to start:cmd_run.go:994:
       WARNING: cannot create user data directory: cannot create 
       "/var/lib/zabbix/snap/chromium/1564": mkdir /var/lib/zabbix: permission denied
       Sorry, home directories outside of /home are not currently supported. See https://forum.snapcraft.io/t/11209 for details.

このエラーは、ユーザー'zabbix'のホームディレクトリとして/var/lib/zabbixが使用されているために発生します。

MySQLのカスタムエラーコード

Zabbixはバックエンドデータベースにアクセスできないことを検出すると、通知を送信し、接続を試み続けます。 特定のデータベースエンジンでは、特定のエラーコードが認識されます。 MySQLでは、これらの認識されるエラーコードには以下が含まれます:

  • CR_CONN_HOST_ERROR
  • CR_SERVER_GONE_ERROR
  • CR_CONNECTION_ERROR
  • CR_SERVER_LOST
  • CR_UNKNOWN_HOST
  • ER_SERVER_SHUTDOWN
  • ER_ACCESS_DENIED_ERROR
  • ER_ILLEGAL_GRANT_FOR_TABLE
  • ER_TABLEACCESS_DENIED_ERROR
  • ER_UNKNOWN_ERROR

さらに、Azure上のMySQLインストールでZabbixを使用している場合、Zabbixログに一般的なエラーメッセージ [9002] Some errors occurred が表示されることがあります。 このメッセージは、データベースからZabbixサーバーまたはプロキシに送信されます。 エラーの原因を特定するには、Azureのログを参照してください。

PCRE2への切り替え後の無効な正規表現

Zabbix 6.0でPCRE2のサポートが追加されました。 PCREも引き続きサポートされていますが、RHEL 7以降、SLES(全バージョン)、Debian 9以降、Ubuntu 16.04以降のZabbixインストールパッケージはPCRE2を使用するように更新されています。 多くの利点がある一方で、PCRE2への切り替えにより、既存のPCRE正規表現パターンの一部が無効になったり、異なる動作をする場合があります。 特に、パターン ^[\w-\.] に影響します。 この正規表現を意味を変えずに再び有効にするには、式を ^[-\w\.] に変更してください。 これは、PCRE2がダッシュ記号を区切り文字として扱い、文字クラス内で範囲を作成するために発生します。

Geomapウィジェットのエラー

NGINXを使用している古いZabbixバージョンからアップグレードし、アップグレード時に新しいNGINX設定ファイルに切り替えなかった場合、Geomapウィジェットの地図が正しく読み込まれないことがあります。

この問題を解決するには、古い設定ファイルを破棄し、現在のバージョンパッケージの設定ファイルを使用し、ダウンロード手順e. Zabbixフロントエンド用のPHPの設定セクションに記載されているように再設定してください。

または、既存のNGINX設定ファイル(通常は/etc/zabbix/nginx.conf)を手動で編集することもできます。 その場合は、ファイルを開き、次のブロックを探します。

location ~ /(api\/|conf[^\.]|include|locale|vendor) {
               deny            all;
               return          404;
       }

次に、このブロックを以下のように置き換えます。

location ~ /(api\/|conf[^\.]|include|locale) {
               deny            all;
               return          404;
       }
       
       location /vendor {
               deny            all;
               return          404;
       }

前処理 — グローバル変数は安全ではありません

前処理のJavaScriptはリクエストごとに実行されますが、宣言されていない識別子への代入(例: secret = value)は暗黙的なグローバル変数を作成し、現在の実行を超えて持続する可能性があります。 暗黙的なグローバル変数に機密データ(トークン、パスワードなど)を保存すると、後続の前処理実行や同じ環境で実行される他の統合によって、偶発的な漏洩や再利用のリスクが高まります。

暗黙的なグローバル変数に依存しないでください。 常にvarconstで変数を宣言し、グローバルオブジェクト(例: globalThiswindow)に秘密情報を付与しないでください。 前処理内から組み込みのグローバルオブジェクトを上書きするサポートされた方法はありません。

安全な例:

var apiToken = payload.token;
       var count = 1;
       return JSON.stringify({ token: apiToken, calls: count });

Windowsのプロセッサグループ

Microsoftのドキュメントによると、64個未満の論理プロセッサを持つシステムには常に1つのプロセッサグループ(グループ0)しかありません。 しかし、Zabbixユーザーからは、64個以下の論理プロセッサを持つシステムで2つのプロセッサグループが存在するという稀なバグZBX-20260が報告されています。 この結果、2つのプロセッサグループのうち1つのプロセッサグループに対してのみ"(n)"パフォーマンスカウンタが存在することになります。 このバグの実際の根本原因は不明です。 しかし、stackoverflow.comで同様のケースが説明されており、そこではBIOSとWindowsの相互運用に根本原因がありました。

utf8mb4照合順序によるフィルタリングの制限

フィルタ(例:データ収集 > メンテナンス)は、特定のUnicode文字(例:ȼ、ɇ)を含むエンティティに適用した場合、正しく機能しないことがあります。 この問題は、MySQLまたはMariaDBデータベースのデフォルトのutf8mb4_bin照合順序が、Unicode文字のソートや比較をどのように処理するかによって発生します。

この制限に対処するには、データベースのカラムの照合順序をutf8mb4_0900_bin、utf8mb4_0900_ai_ci、utf8mb4_unicode_520_ciなどの代替案に変更することができます。 ただし、照合順序を変更すると、空白の扱いや他の文字のソートやフィルタリングで予期しない動作が発生する可能性があることに注意してください。

照合順序の変更についての詳細は、MySQLドキュメントまたはMariaDBドキュメントを参照してください。 照合順序の違いについては、MySQLドキュメントのUnicode文字セットを参照してください。

MariaDB 10.5.1–10.5.9でのUI要素へのアクセス

Super Admin以外のロールでZabbixウェブフロントエンドにアクセスすると、「システムエラーが発生しました。Zabbix管理者に連絡してください。」というメッセージが表示される場合があります。 この問題は、MariaDBのバージョン 10.5.1から10.5.9を使用しているインストールに影響します。

この問題を回避するには、MariaDBを10.5.9以降のバージョンにアップデートしてください。詳細はZBX-25746を参照してください。

tcmallocによる過剰なメモリ使用量のプロファイリング

Zabbixのインストールでメモリ使用量が多すぎると疑われる場合は、tcmallocのメモリプロファイリング機能を使用して、Zabbixサーバー/プロキシのメモリ消費を調査できます。

1. Zabbixをソースからインストールする際に、追加のフラグを設定します:

export CFLAGS="-std=gnu99 -g -O0"

-std=gnu99フラグは、Zabbixサーバー、Zabbixプロキシ、またはZabbixエージェントのビルドに必要です。 -gフラグは追加のデバッグ情報を付加し、-O0は最適化を無効にします。最適化はtcmallocのプロファイリングに干渉する可能性があります。

2. Zabbixサーバーを起動する前に、以下の環境変数を設定します。 これらの変数は、tcmallocにメモリ使用量の追跡とレポート方法を指示します:

LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libtcmalloc.so" \
       HEAPPROFILE=./heap_profile \
       HEAP_PROFILE_ALLOCATION_INTERVAL=0 \
       HEAP_PROFILE_INUSE_INTERVAL=4294967296 \
       HEAPPROFILESIGNAL=5 \
       MALLOCSTATS=1 \
       ./sbin/zabbix_server -f -c /etc/zabbix/zabbix_server.conf

3. シグナル5を対象プロセスに送信してプロファイルダンプをトリガーします。 1234を実際のプロセスID(PID)に置き換えてください:

kill -5 1234

4. 生成されたプロファイルを表示します:

pprof-symbolize -text ./sbin/zabbix_server ./heap_profile.0001.heap
       
       Using local file ./sbin/zabbix_server.
       Using local file ./heap_profile.0001.heap.
       Total: 1078.1 MB
         1076.8  99.9%  99.9%   1076.8  99.9% zbx_malloc2
            1.0   0.1% 100.0%      1.0   0.1% __GI___strdup
            0.2   0.0% 100.0%      0.2   0.0% CRYPTO_zalloc@@OPENSSL_3.0.0
            0.1   0.0% 100.0%      0.1   0.0% OPENSSL_LH_insert@@OPENSSL_3.0.0
            0.0   0.0% 100.0%      0.0   0.0% zbx_realloc2
            0.0   0.0% 100.0%      0.1   0.0% PKCS7_decrypt@@OPENSSL_3.0.0
            0.0   0.0% 100.0%      0.0   0.0% find_best_tree_node
            0.0   0.0% 100.0%      0.0   0.0% CRYPTO_strndup@@OPENSSL_3.0.0
            ...
            0.0   0.0% 100.0%      0.0   0.0% preprocessing_flush_value
            0.0   0.0% 100.0%   1074.0  99.6% preprocessor_add_request

この例では、zbx_malloc2がほぼすべてのメモリアロケーションの原因となっています。

関連情報:

  • 関連する問題報告については、ZBX-25050およびZBX-25584を参照してください。
  • コンパイルオプション(-std=gnu99-g-O0など)については、GCC Option Summaryを参照してください。
  • tcmallocプロファイリング用の環境変数については、Gperftools Heap Profilerのドキュメントを参照してください。

マルチプライマリモードでのMySQL 8.0 Group Replication

マルチプライマリモードでMySQL 8.0 Group Replicationを使用している場合、トランザクションコミット時に次のようなエラーが発生することがあります。

1531697:20250128:064734.697 query [txnlev:1] [update alerts set status=1,retries=0,error='' where alertid=154618;
       1531697:20250128:064734.713 query [txnlev:1] [commit;]
       1531697:20250128:064734.753 [Z3005] query failed: [3101] Plugin instructed the server to rollback the current transaction. [commit;]

このエラーは、外部キー制約を含むロールバック操作の問題によって引き起こされるようです。

関連情報: