This is a translation of the original English documentation page. Help us make it better.
Table of Contents

8 既知の問題

参照: コンパイルの問題

Known issues in 7.4.4

It is not recommended to upgrade to this version due to:

  • sudden CPU spike issue if you are using the Zabbix agent 2 MySQL plugin (see 27156)
  • graph for Zabbix active agent items showing an "Undefined array key" warning due to an undefined index error (see ZBX-27153)

アップグレード

アップグレードを成功させるためのSQLモード設定

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

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

データベーステーブルがMariaDB 10.2.1以前で作成された場合、Zabbixのアップグレードが失敗することがあります。これは、これらのバージョンではデフォルトの行形式がコンパクトであるためです。行形式をダイナミックに変更することで、この問題を修正できます (参照: 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 Zabbixパッケージがインストールされます。

この場合、EPELからZabbixパッケージをアンインストールする、つまり、

dnf remove zabbix-server-mysql

EPELからZabbixパッケージをブロックします。 /etc/yum.confファイルに次の行を追加します。

exclude=zabbix7.0*

Zabbixサーバーをもう一度インストールします。

dnf install zabbix-server-mysql

公式Zabbixパッケージには、バージョン文字列にrelease という単語があることに注意してください。

7.0.0-release1.el8

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 9では次を実行します:

rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/rhel/9/noarch/zabbix-release-latest.el9.noarch.rpm

次に、リポジトリ情報を更新します:

dnf update

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

Timescale DB: 多数のパーティションでメモリ使用量が高くなる

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

この問題は、Zabbix 5.0.1以降のTimescaleDBを使用した新規インストールでは解決されていますが、それ以前にZabbixと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以前における数値データ型(float)の範囲

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 — untrusted hosts may crash OpenIPMI

There is a bug in the OpenIPMI library used by Zabbix for polling IPMI data that can be triggered by specially crafted responses from an untrusted device.
An untrusted IPMI device may send crafted data that causes the OpenIPMI library to crash, which in turn can cause Zabbix server process that performs IPMI polling to terminate.

SSHチェック

  • libssh2ライブラリがパッケージからインストールされている場合、Debian、Ubuntuなどの一部のLinuxディストリビューションは、暗号化された秘密鍵(パスフレーズ付き)をサポートしません。詳細については、ZBX-4850を参照してください。

  • OpenSSH 8を使用していくつかのLinuxディストリビューションでLIBSSH 0.9.xを使用する場合、SSHチェックは「SSH Serverからデータを読み取ることができない」と報告する場合があります。これは、libsshの問題 (詳細レポート)が原因です。このエラーは安定版のlibssh 0.9.5リリースで修正される予定です。詳細については、ZBX-17756を参照してください。

  • パイプ"|"を使用したSSHスクリプトで「SSH サーバーからデータを読み取れません」というエラーが発生する可能性があります。 この場合libsshライブラリのバージョンをアップグレードすることをお勧めします。 詳細については、ZBX-21337を参照してください。

ODBC チェック

  • MySQL unixODBC ドライバーは、MariaDB コネクタ ライブラリに対してコンパイルされた Zabbix サーバーまたは Zabbix プロキシと共に使用しないでください。アップストリームのバグ のため、可能であればドライバーと同じコネクタを使用しないこともお勧めします。推奨セットアップ:

    PostgreSQL, SQLite または Oracle connector → MariaDB または MySQL unixODBC driver MariaDB connector → MariaDB unixODBC driver MySQL connector → MySQL unixODBC driver

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

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

  • さまざまなバージョンの Linux 用 Oracle Instant Client を使用して Oracle データベースを監視するために ODBC チェックを使用すると、Zabbix サーバーがクラッシュすることが確認されています。[ZBX-18402](https://support.zabbix.com/browse/ZBX-18402)ZBX-20803も参照してください。

  • FreeTDS UnixODBC ドライバーを使用している場合は、'SET NOCOUNT ON' ステートメントを SQL クエリの先頭に追加する必要があります (例:`SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = .... `)。そうしないと、Zabbix のデータベース モニタ アイテムは"SQL クエリが空の結果を返しました"というエラーで情報の取得に失敗します。(https://support.zabbix.com/browse/ZBX-19917) を参照してください。

アイテム内のリクエストメソッドパラメーターが正しくない

HTTPチェックでのみ使用されるリクエストメソッドパラメーターが、4.0以前のZabbixからアップグレードした結果、 すべてのアイテムにデフォルト値ではない'1'が設定されることがあります。 この問題の解決方法の詳細については、ZBX-19308を参照してください。

Web監視とHTTPエージェント

いくつかのLinuxディストリビューション上で、WebシナリオやHTTPエージェント内で「SSLピア検証」を有効にしていた時にupstream bugによってメモリリークが発生します。 ZBX-10486を参照してより詳細な情報と回避策を確認してください。

シンプルチェック

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

rootlessコンテナでのfping実行に関するエラー

コンテナがrootlessモードまたは特定の制限のある環境で実行されている状態でICMPチェックを実行する際に、fping: Operation not permitted やすべてのリソースへのすべてのパケットが失われるなど、fping実行に関連するエラーが発生する可能性があります。

この問題を解決するには、"docker run"または"podman run"コマンドに--cap-add=net_rawを追加します。

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

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

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

SNMPチェック

OpenBSDオペレーティングシステムをご利用の場合、バージョン5.7.3までのNet-SNMPライブラリに存在するUAF(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でのalerterプロセスのクラッシュ

RHEL 7上でZabbixサーバーのalerterプロセスがクラッシュすることが確認されています。 詳細はZBX-10461を参照してください。

Zabbixエージェント2 (6.0.5以前)のアップグレード

Zabbixエージェント2 (バージョン6.0.5以前)をパッケージからアップグレードすると、プラグイン関連のファイル競合エラーが発生する場合があります。 エラーを修正するには、(必要に応じて)エージェント2の構成をバックアップし、エージェント2をアンインストールして、新たにインストールします。

RHELベースのシステムでは、次を実行します:

dnf remove zabbix-agent2
       dnf install zabbix-agent2

Debianベースのシステムでは、次のコマンドを実行します:

apt remove zabbix-agent2
       apt install zabbix-agent2

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

Webインターフェースの言語設定の切り替え

Webインターフェースの言語設定が、明確なロジックなしに切り替わる場合があることが確認されています。例えば、一部のページ(またはページの一部)がある言語で表示され、他のページ(またはページの一部)が別の言語で表示されることがあります。 この問題は、複数のユーザーがいて、一部のユーザーがあるロケールを使用し、他のユーザーが別のロケールを使用している場合に発生する可能性があります。

この問題の既知の回避策として、PHPとApacheのマルチスレッドを無効にすることが挙げられます。

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

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

  • ZBX-10911 (Webインターフェースのロケール切り替えに関する問題)
  • ZBX-16297 (BC Math関数のbcdiv関数を使用したグラフ内の数値処理に関する問題)

グラフ

夏時間

夏時間(DST)への変更により、X軸ラベルの表示が不規則になります (日付の重複、日付の欠落など)。

合計集計

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

テキストの重なり

一部のフロントエンド言語(日本語など)の場合、ローカルフォントはグラフ凡例でテキストが重なる可能性があります。これを避けるために、PHP GD拡張のバージョン2.3.0(以降)を使用します。

ログファイルの監視

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

MySQLのスロークエリ

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

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

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

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

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

ログイン失敗情報の長いIPv6 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使用時のセットアップウィザード

SUSEでNGINX + php-fpmを使用している場合、フロントエンドのセットアップウィザードは設定ファイルを保存できません。これは、/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.

このエラーは、/var/lib/zabbixがユーザー'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を使用している場合、不明瞭なエラーメッセージ[9002] Some errors occurredがZabbixログに表示されることがあります。この一般的なエラーテキストは、データベースからZabbixサーバーまたはプロキシに送信されます。エラーの原因について詳しくは、Azureログを確認してください。

PCRE2への移行後の無効な正規表現

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

Geomapウィジェットエラー

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

この問題を解決するには、古い設定ファイルを破棄し、現在のバージョンのパッケージの設定ファイルを使用し、e. ZabbixフロントエンドのPHPの設定セクションのdownload instructionsに記載されている方法で再設定することができます。

または、既存の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;
       }

Webhook呼び出し間で共有されるグローバル変数の使用例

グローバル変数(例: varletまたはconst宣言なしでglobal = 1を実行する) は異なるWebhook呼び出し間で共有されるため、次のコードを実行すると、タグ値カウンターが徐々に増加します:

try 
       {
          aa = aa + 1;
       }
       catch(e)
       {
          aa = 0;
       }

       result = {
               'tags': {
                   'endpoint': aa
               }
           };
       return JSON.stringify(result);

各スクリプトが独自のデータで動作し、同時呼び出し間での競合を抑止する為には、グローバル変数ではなくローカル変数を使用ください。

Windowsのプロセッサグループ

Microsoftのドキュメントでは、64個未満の論理プロセッサを持つシステムでは常に1つのプロセッサグループ、Group 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 Webフロントエンドにアクセスすると、"システムエラーが発生しました。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"

Zabbixサーバー、Zabbixプロキシ、またはZabbixエージェントをビルドするには、-std=gnu99フラグが必要です。 -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がほぼすべてのメモリ割り当てを担当しています。

参照:

マルチプライマリモードでのMySQL 8.0グループレプリケーション

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

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;]

このエラーは、外部キー制約を含むロールバック操作の問題によって発生しているようです。

参照: