Table of Contents

8 已知问题

另请参阅: Compilation issues.

Proxy 启动与 MySQL 8.0.0-8.0.17

在MySQL 8.0.0-8.0.17版本上运行的zabbix_proxy会出现以下"访问被拒绝"错误:

[Z3001] connection to database 'zabbix' failed: [1227] Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

这是由于MySQL 8.0.0开始对设置会话变量强制执行特殊权限要求。不过在8.0.18版本中移除了这一行为: As of MySQL 8.0.18, setting the session value of this system variable is no longer a restricted operation.

临时解决方案是基于向zabbix用户授予额外权限:

对于MySQL 8.0.14 - 8.0.17版本:

grant SESSION_VARIABLES_ADMIN on *.* to 'zabbix'@'localhost';

对于MySQL 8.0.0 - 8.0.13版本:

grant SYSTEM_VARIABLES_ADMIN on . to 'zabbix'@'localhost';

Timescale DB: 大量分区时内存使用率高

PostgreSQL 9.6-12版本在更新包含大量分区的表时会消耗过多memory。 当Zabbix在TimescaleDB系统上更新趋势数据且趋势被分割为相对较小(例如1天)的块时, 该问题问题就会显现。在默认的housekeeping设置下,这会导致趋势表中存在数百个数据块, 这正是PostgreSQL容易出现run耗尽memory的情况。

自Zabbix 5.0.1起,该问题问题已在新安装的TimescaleDB系统中得到解决, 但如果TimescaleDB是在此之前与Zabbix一起部署的, 请参阅ZBX-16347查看迁移说明。

Timescale DB 2.5.0: 包含整数的表上压缩策略可能失败

当使用TimescaleDB 2.5.0版本时会出现该问题问题。 该问题已在TimescaleDB 2.5.1及后续版本中修复。

更多信息请参见TimescaleDB Issue #3773

升级

成功升级所需的 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解析器默认优先使用IPv6而非IPv4,如果被监控服务仅配置为监听IPv4地址,Zabbix模板可能无法正常工作。

未配置监听IPv6地址的服务可能变得不可访问,从而导致监控失败。 用户可能已正确配置IPv4访问权限,但仍会因系统默认优先使用IPv6的行为而遭遇连接问题。

解决方案是确保服务(nginx、Apache、PostgreSQL等)配置为同时监听IPv4和IPv6地址,并允许Zabbix server/agent通过IPv6访问。 此外,在Zabbix模板和配置中,显式使用localhost而非127.0.0.1以确保IPv4和IPv6兼容性。

例如,使用PostgreSQL by Zabbix agent 2模板监控PostgreSQL时,可能需要编辑pg_hba.conffile以允许zbx_monitor用户连接。 如果双栈环境优先使用IPv6(系统将localhost解析为::1),而您配置了localhost却仅添加IPv4条目(127.0.0.1/32),由于缺少匹配的IPv6条目,连接将会失败。

以下pg_hba.conffile示例确保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模板宏的string时,也可直接使用IPv4地址(127.0.0.1)。

意外安装 EPEL Zabbix 软件包

当已安装并启用EPEL仓库时,从软件包安装Zabbix将导致安装EPEL的Zabbix软件包而非官方Zabbix软件包。

这种情况下需卸载来自EPEL的Zabbix软件包,例如:

dnf remove zabbix-server-mysql

屏蔽EPEL的Zabbix软件包。在/etc/yum.conf file中添加以下行:

exclude=zabbix6.0*

重新安装Zabbix server:

dnf install zabbix-server-mysql

注意官方Zabbix软件包在其version string中包含release字样:

6.0.25-release1.el8

Red Hat UBI环境中的RHEL Zabbix包

在基于Red Hat Universal Base Image环境从Red Hat Enterprise Linux软件包安装Zabbix时,请确保能访问所需的软件仓库和依赖项。 Zabbix软件包依赖于libOpenIPMI.solibOpenIPMIposix.so库,这些库在UBI系统启用的默认软件包管理器仓库中未提供,将导致安装失败。

libOpenIPMI.solibOpenIPMIposix.so库包含在OpenIPMI-libs包中,该包由redhat-#-for-<arch>-appstream-rpms仓库提供。 对该存储库的访问通过订阅进行管理,在UBI环境中,get通过将RHEL 主机的存储库配置和密钥目录挂载到容器file-system命名空间来实现传播。

更多信息,请参阅ZBX-24291

RHEL包签名密钥过期

Red Hat Enterprise Linux上升级Zabbix时,您可能会遇到Zabbix repository上软件包的签名密钥问题过期问题。 当签名密钥过期时,尝试验证软件包签名会导致错误,提示证书或密钥不再有效。例如:

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 repository中的正确链接)。

例如,在RHEL 9上,run:

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

然后,update仓库信息:

dnf update

更多信息请参阅ZBX-24761

数据库 TLS 连接与 mariadb

数据库TLS连接不支持在使用mariadb时 为DBTLSConnect parameter 配置verify_ca选项

MySQL/MariaDB可能的死锁

在高负载环境下运行且涉及多个LLD工作进程时,可能会run陷入由InnoDB行锁策略相关的死锁问题(参见upstream bug)。 该错误已在MySQL 8.0.29版本中修复,但mariadb尚未包含此修复。更多细节请参阅ZBX-21506

全局事件关联

如果第一个事件和第二个事件之间的时间间隔非常小(即半秒或更短),事件可能无法get正确关联。

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 agent 2 中的正则表达式限制

由于标准Go正则表达式库的限制,Zabbix agent 2不支持正则表达式中的前向断言和后向断言。

IPMI检查

在Debian 9(stretch)之前和Ubuntu 16.04(xenial)之前的版本中,IPMI检查无法与标准的OpenIPMI库包配合工作。要解决此问题,需按照ZBX-6139中的讨论重新编译启用OpenSSL的OpenIPMI库。

SSH检查

  • 某些Linux发行版如Debian、Ubuntu在通过软件包安装libssh2库时,不支持加密私钥(带密码短语)。详情请参阅ZBX-4850

  • 在部分搭载OpenSSH 8的Linux发行版上使用libssh 0.9.x时,SSH检查可能偶发报告"Cannot read data from SSH server"。该问题由libssh的issue导致(more detailed report)。预计该错误将在libssh 0.9.5稳定版中修复。另见ZBX-17756获取详情

  • 在SSH脚本中使用管道符"|"可能导致"Cannot read data from SSH server"错误。建议升级libssh库version。详情参见ZBX-21337

ODBC检查

  • MySQL unixODBC驱动不应与针对mariadb连接器编译的Zabbix server或Zabbix proxy一起使用

    library and vice versa, if possible it is also better to avoid using the same connector as the driver due to an upstream bug. Suggested setup:

    PostgreSQL、SQLite或Oracle连接器 → mariadb或MySQL unixODBC驱动

    MariaDB connector → MariaDB unixODBC driver MySQL connector → MySQL unixODBC driver

更多信息及可用解决方案请参阅ZBX-7665

  • 从Microsoft SQL Server查询的XML数据在Linux和UNIX系统上可能以多种方式get截断

  • 已观察到使用ODBC检查监控Oracle数据库时,在不同版本的

    Oracle Instant Client for Linux causes Zabbix server to crash.  See also: ZBX-18402, ZBX-20803.

  • 如果使用FreeTDS UnixODBC驱动,需要在SQL query前添加'SET NOCOUNT ON'语句 (例如SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = ....) 否则Zabbix中的数据库监控监控项将无法获取信息并返回错误 "SQL query返回空结果" 更多信息请参阅ZBX-19917

监控项中错误的请求方法参数

请求方法参数(仅用于HTTP检查)可能在从4.0版本之前的Zabbix version升级时被错误地设置为'1'(所有监控项的非默认值)。有关如何修复此情况的详细信息,请参阅ZBX-19308

Web监控和HTTP agent

在某些Linux发行版上,当在Web场景或HTTP agent中启用"SSL verify peer"时,Zabbix server会因upstream bug导致memory泄漏。更多信息及可用解决方案请参阅ZBX-10486

简单检查

fping 3.10之前版本存在一个处理重复回显应答包错误的缺陷。这可能导致icmppingicmppinglossicmppingsec等监控项出现意外结果。建议使用最新version的fping版本。更多详情请参阅ZBX-11726

无 root 权限容器中 fping 执行的错误

当容器以非root模式运行或在特定限制环境中时,执行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及以下版本中的version存在释放后重用漏洞, 当在Zabbix server配置file中设置SourceIP参数时,可能导致Zabbix服务器崩溃。 作为临时解决方案,请勿设置SourceIP参数。此问题同样存在于Linux系统,但不会导致Zabbix server停止工作。 OpenBSD系统已对net-snmp包应用本地补丁,该修复将随OpenBSD 6.3版本发布。

SNMP数据峰值

已观察到SNMP数据中的尖峰现象,可能与某些物理因素(如市电电压尖峰)有关。详情请参阅ZBX-14318

SNMP陷阱

用于SNMP trap所需的"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 server告警进程崩溃实例 详情请参阅 ZBX-10461

升级 Zabbix agent 2(6.0.5 或更早版本)

当从软件包升级Zabbix agent 2 (version 6.0.5或更早版本)时,可能会出现与插件相关的file冲突错误。 要解决此错误,请备份您的agent 2配置(如有必要),卸载agent 2并重新安装。

在基于RHEL的系统上,run:

dnf remove zabbix-agent2
       dnf install zabbix-agent2

在基于Debian的系统上,run:

apt remove zabbix-agent2
       apt install zabbix-agent2

更多信息,请参阅ZBX-23250

前端语言切换

已观察到前端区域设置可能在没有明显逻辑的情况下切换,即某些页面(或部分页面)显示为一种语言,而其他页面(或部分页面)显示为另一种语言。当存在多个用户且部分用户使用一种区域设置,而其他用户使用另一种区域设置时,通常会出现此问题。

已知的解决方法是禁用PHP和Apache中的多线程功能。

该问题与区域设置的工作机制in PHP有关:区域信息是按进程而非线程维护的。因此在多线程环境中,当同一Apache进程run处理多个项目时,区域设置可能在另一个线程中被更改,从而影响Zabbix线程中数据的处理方式。

更多信息请参阅相关问题报告:

  • ZBX-10911(前端区域设置切换问题)
  • ZBX-16297(使用BC Math函数bcdiv处理图形数据时出现的数值处理问题)

PHP 7.3 opcache 配置

如果在PHP 7.3配置中启用了"opcache",首次加载时Zabbix前端可能会显示空白屏幕。这是一个已记录的PHP bug。为解决此问题,请在PHP配置(php.ini file)中将"opcache.optimization_level"参数设置为0x7FFFBFDF

图形

夏令时

夏令时(DST)变更会导致X轴标签显示异常(日期重复、日期缺失等).

求和聚合

当在不足一小时的图表周期中使用配置时, 若数据来自趋势数据,图表会显示错误(翻倍)的数值.

文本重叠

某些前端语言(如日语)使用本地字体可能导致图例文本重叠. 为避免此问题,请使用PHP GD扩展的version 2.3.0(或更高版本).

日志文件监控

log[]logrt[] 监控项 会反复从头重新读取日志 file,如果 file 系统已 100% 满且日志 file 正在被追加写入 (更多信息请参阅 ZBX-10884)。

慢MySQL查询

Zabbix server 在 监控项 值不存在时会生成缓慢的 SELECT queries. 该 issue 已知出现在 MySQL 5.6/5.7 版本中 (详细讨论参见 ZBX-10652), 在特定情况下也可能出现在更高版本的 MySQL 中. 解决方法是禁用 MySQL 中的 index_condition_pushdownprefer_ordering_index 优化器. 但需注意,此解决方法可能无法修复所有与缓慢 queries 相关的 问题.

Oracle 配置同步缓慢

在Oracle数据库的Zabbix 6.0安装环境中,若存在大量监控项和监控项预处理步骤,配置同步可能会变慢。 这是由于Oracle数据库引擎处理nclob类型字段的速度所致。

为提高性能,您可以通过手动应用数据库补丁items_nvarchar_prepare.sql将字段类型从nclob转换为nvarchar2。 请注意,此转换会将最大字段大小限制从65535字节减少到4000字节 对于监控项预处理参数和监控项参数,例如Description、Script 监控项的字段Script, HTTP agent 监控项的字段请求体头部,数据库监控监控项的字段SQL query。 queries用于确定在应用补丁前需要删除的模板名称,这些名称会在补丁中以注释形式提供。或者,如果设置了MAX_STRING_SIZE,您可以在补丁queries中将nvarchar2(4000)更改为nvarchar2(32767),以设置32767字节的字段大小限制。

如需更深入的讨论,请参阅ZBX-22363

API 登录

当使用带有user.login method的自定义脚本时, 如果没有后续的user.logout操作, 可能会创建大量开放的用户会话。

从链接持久化过滤器设置

当打开包含筛选器设置(包括时间选择器)的Zabbix前端页面链接时,系统会自动将该筛选器保存至数据库并替换用户之前为该页面保存的筛选器和/或时间选择器设置。这些设置将保持有效状态,直至用户手动更新或重置它们。

SNMPv3陷阱中的IPv6地址问题

由于net-snmp的一个bug,当在SNMP陷阱中使用SNMPv3时,IPv6地址可能无法正确显示。 有关更多详情及可能的解决方案,请参阅ZBX-14541

失败登录信息中截断的长IPv6地址

一次失败的login尝试消息只会显示存储IP地址的前39个字符 因为这是数据库字段的字符限制。这意味着超过39个字符的IPv6地址 将显示不完整。

Windows上的Zabbix agent检查

在Zabbix agent配置file(zabbix_agentd.conf)的Server参数中使用不存在的DNS条目可能会增加Windows系统上Zabbix agent的响应时间。这是因为Windows DNS缓存服务不会缓存IPv4地址的否定响应。然而对于IPv6地址,否定响应会被缓存,因此一个可行的解决方案是在主机上禁用IPv4。

YAML 导出/导入

YAML存在以下已知问题
export/import:

  • 错误信息不可翻译
  • 带有.yamlfile扩展名的有效JSON有时无法导入
  • 未加引号的人类可读日期会自动转换为Unix时间戳

SUSE 上的设置向导,使用 nginx 和 php-fpm

前端安装向导无法在SUSE系统上保存配置file,当使用nginx + php-fpm时。这是由于/usr/lib/systemd/system/php-fpm.service单元中的设置阻止了Zabbix向/etc目录写入数据(该问题在PHP 7.4中引入)。

目前有两种解决方案:

  • 在php-fpm的systemd单元中,将 ProtectSystem 选项从'full'改为'true'
  • 手动保存/etc/zabbix/web/zabbix.conf.php file

Ubuntu 20 上用于 Zabbix web 服务的 Chromium

虽然在大多数情况下,Zabbix web服务可以run与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自定义错误代码

如果在Azure上使用Zabbix与MySQL安装时,Zabbix日志中可能会出现一条不明确的错误消息[9002] 发生了一些错误。这个通用错误文本是由数据库发送给Zabbix server或proxy的。要get有关错误原因的更多信息,请检查Azure日志。

切换到PCRE2后无效的正则表达式

在Zabbix 6.0中增加了对PCRE2的支持。尽管PCRE仍然受支持,但针对RHEL 7及以上版本、SLES(所有版本)、Debian 9及以上版本、Ubuntu 16.04及以上版本的Zabbix安装包已更新为使用PCRE2。虽然带来诸多优势,但切换到PCRE2可能导致某些现有的PCRE正则表达式模式失效或行为异常。特别是这会影响到模式^[\w-\.]。要使该正则表达式重新生效且不影响语义,需将表达式修改为^[-\w\.]。这是由于PCRE2将短横线视为分隔符,在字符类内部创建范围所致。 以下Zabbix安装包已更新并开始使用PCRE2:RHEL 7及以上版本、SLES(所有版本)、Debian 9及以上版本、Ubuntu 16.04及以上版本。

Zabbix 6.0.0-6.0.2 中的服务转换错误

在Zabbix 6.0中,引入了更灵活的服务状态计算新算法。

从Zabbix <6.0版本升级至Zabbix 6.0.0、6.0.1或6.0.2时,"所有子服务均存在问题则继承最严重状态"和"继承子服务中最严重状态"这两条服务状态计算规则会发生互换。在Zabbix 6.0.0及更新版本中创建的服务将保持正确的状态计算规则。

当从<6.0版本升级至Zabbix 6.0.3或更新版本时,Zabbix将正确update服务状态计算规则。而从6.0.x版本升级至6.0.3不会对服务状态计算规则产生影响。

Geomap widget error

如果您从旧版Zabbix version升级而来且仍在使用nginx,且在升级过程中未切换到新的nginx配置file,Geomap小部件中的地图可能无法正确加载。

要修复问题,您可以丢弃旧配置file,使用6.0软件包中的配置file,并按照download instructionse. 为Zabbix前端配置PHP章节所述重新配置。

或者,您可以手动编辑现有的nginx配置file(通常为/etc/zabbix/nginx.conf)。为此,请打开file并找到以下代码块:

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

地图中嵌套主机组信息不正确

嵌套主机组的信息在地图中显示不正确,例如:

  • 主机组标签显示的问题摘要未包含嵌套主机组中的所有主机;
  • "主机组元素"视图未为嵌套主机组中的每个主机显示单独的地图元素;
  • 地图标签显示的所有问题摘要未包含嵌套主机组中的问题。

Zabbix server 和 proxy 的日志轮转

logrotate工具仅包含在zabbix-agent、zabbix-agent2和zabbix-web-service的软件包中,但对于Zabbix server和proxy需要单独安装。从Zabbix 6.4.4rc1开始,RHEL和SUSE的服务器及proxy软件包已添加logrotate依赖项。

Zabbix 6.0.11 中的 问题

JSONPath 解析错误

当存在前导空格或空的array/object时,JSONPath解析会出现错误。该问题已在Zabbix 6.0.12中修复。

LLD 过滤器中的 AND/OR 逻辑运算

在此version中,低级发现过滤器/覆盖的AND/OR表达式评估可能会失败。该问题已在Zabbix 6.0.12中修复。

Windows agent 归档文件中缺失文件

Windows Zabbix agent下载ZIP包file在6.0.0-6.0.27版本中缺失zabbix_sender.h和zabbix_sender.lib文件,这些文件是zabbix_sender.dll所需的。

跨webhook调用共享全局变量的使用场景

由于全局变量在不同webhook调用间共享,以下代码将导致标签值计数器逐渐递增:

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

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

建议使用局部变量替代全局变量,以确保每个脚本操作自身数据且并发调用间不会产生冲突。

Windows上的处理器组 {#win-proc-groups}

微软文档指出,逻辑处理器少于64个的系统通常只有一个处理器组(Group 0)。然而Zabbix用户报告了一个罕见错误ZBX-20260, 当逻辑处理器数量为64或更少的系统上出现两个处理器组时,会导致"(n)"性能计数器仅对两个处理器组中的一个生效。该错误的实际根源尚不明确, 但stackoverflow.com描述过类似案例,其根源在于BIOS与Windows之间的交互问题。

使用utf8mb4排序规则过滤的限制

过滤器(例如在配置使用过滤器中)在应用于包含特定Unicode字符(如ȼ、ɇ)的实体时可能无法正常工作。 该问题是由于MySQL默认的utf8mb4_bin排序规则或mariadb数据库处理Unicode字符排序和比较的方式所导致。

为解决此限制,用户可将数据库列的排序规则更改为其他选项,如utf8mb4_0900_bin、utf8mb4_0900_ai_ci或utf8mb4_unicode_520_ci。 但需注意,更改排序规则可能导致处理空格时出现意外行为,以及其他字符的排序和过滤异常。

有关更改排序规则的更多信息,请参阅MySQL documentationMariaDB documentation。 有关排序规则差异的详细信息,请参见MySQL文档中的Unicode Character Sets

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

此错误似乎是由问题触发的,涉及外键约束的回滚操作。

另请参阅: