7.4.0 升级说明

这些说明适用于从 Zabbix 7.2.x 升级到 Zabbix 7.4.0。

所有说明分为以下几类:

  • 重大变更 - 可能导致现有安装无法正常运行的变更,以及与升级过程相关的其他重要信息
  • 其他 - 描述 Zabbix 功能变更的所有其余信息

另请参阅:

  • 升级过程,了解从 Zabbix 7.4.0 之前的版本升级所需的全部相关信息;
  • 升级 HA 集群,了解升级高可用性(HA)集群中服务器的相关说明。

升级过程

要在 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;

重大变更

移除 PCRE 库

PCRE(或 PCRE1)库已被移除。 Zabbix 现在使用 PCRE2 进行编译。

管理自己的媒介

现在,默认情况下,所有用户都可以管理自己的媒介。

可以根据用户的用户角色授予(或撤销)用户更改自身媒介详细信息的权限(请参阅创建和编辑自己的媒介选项)。

此外,也可以根据超级管理员用户的用户角色授予或撤销其更改其他用户媒介详细信息的权限(请参阅创建和编辑用户媒介选项)。

如果从旧版本升级,则对于启用了对新操作的默认访问权限的所有角色,这两个选项都将启用。 请注意,如果未启用对新操作的默认访问权限,管理员和超级管理员可能会失去升级后编辑媒介的能力。

历史函数参数中的反斜杠转义

自 Zabbix 7.0.0 起,历史函数字符串参数中的反斜杠已支持正确转义。

由于从 7.0 之前的 Zabbix 版本升级时会添加额外的反斜杠,因此参数长度会增加。如果参数长度超过 255 个字符的最大数据大小,可能会导致触发器函数失效。

为避免此问题,建议在升级前手动将较长的参数移至用户宏中。

针对从 7.0 之前的 Zabbix 版本升级的场景,已添加对最终参数长度的额外检查。 如果最终长度超过最大大小,则不会升级此类参数,同时日志中会打印警告,要求用户手动修复列出的参数。

另请参阅与转义相关的升级问题。

MSSQL Zabbix agent 2 插件更新

模板 MSSQL by Zabbix agent 2 已更新,新增了用于按名称包含或排除发现的仲裁成员的过滤器,以及一个服务过滤器,可按集群名称进行过滤以排除空集群。

要使模板正常工作且不出现错误,必须将 MSSQL Zabbix agent 2 plugin 更新到 7.4.0 或更高版本。

最低要求的 libssh2 版本

最低要求的 libssh2 版本已从 1.0.0 提升至 1.8.0。

已发现主机上的主机原型

如果您当前的配置包含使用模板且这些模板中还包含其他主机原型的主机原型,升级到 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;

数据库连接参数

DBPort 和 DBSocket 现在互斥。 指定数据库连接参数时,可以定义 DBPort 或 DBSocket,也可以将两者都留空以使用默认值。

其他

不支持没有有效 OID 的 SNMP walk/发现监控项

SNMP walk 监控项在所有 OID 或 OID 实例均不存在时,现在会返回错误,并且该监控项将变为不支持状态。
不存在的 OID/实例详细信息会在 DebugLevel=5 时记录到日志中。
此前在这种情况下会返回空字符串。

同样,SNMP 发现 监控项在所有 OID 或 OID 实例均不存在时,现在会返回错误,并且该监控项将变为不支持状态。
此前在这种情况下会返回空数组。

请注意,现在仅当 OID/实例存在但没有数据时,才会返回空字符串/数组。

管理历史缓存

在某些数据采集场景中,特定监控项可能会暂时阻塞服务器/proxy 的历史缓存。 这可能会延迟将历史数据写入数据库,并降低系统运行速度。 为帮助管理历史缓存,现已引入以下改进:

  • 手动清除缓存: Zabbix 服务器/proxy 新增了 history_cache_clear=target 运行时命令,允许您根据监控项 ID 手动清除特定监控项的历史缓存。
  • 自动清除缓存: 禁用监控项时,该监控项会立即从历史缓存中移除(其最后一个值除外,该值会保留用于日志记录)。 同样,禁用主机时,该主机的所有监控项都会从历史缓存中移除(其最后一个值除外)。
  • 缓存诊断日志记录: 当历史缓存已满时,Zabbix 服务器/proxy 现在会从 DebugLevel=3 开始记录历史缓存诊断信息(之前为 DebugLevel=4)。 日志中包含历史缓存中值数量最多的监控项。

为确保系统长期稳定运行,请确保数据采集与可用资源相匹配(数据库性能、缓存大小、采集间隔、日志监控项参数等)。 您可以使用 zabbix[wcache] 内部监控项监控 Zabbix 历史缓存。 您还可以考虑增大 Zabbix 服务器/proxy 的历史缓存大小。

用户通知的独立菜单部分

为了更好地显示用户媒体,用户通知现在在 用户设置 下拥有自己的菜单部分。

新的“通知”部分包含两个选项卡——媒体和前端通知,它们之前属于用户配置文件部分。

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

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

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

已转换的数据库表用于设置

settings 表现在取代 config 表,用于存储全局配置参数。 新表使用键值格式,而不是将参数存储在单行中、每个参数对应一列。 有关这如何影响数据交换的示例,请参见服务器-proxy 数据交换协议("settings" 对象)。

提高服务器和 proxy 的最大缓存大小

最大缓存大小已从 2 GB 提高到 16 GB,以延缓缓存耗尽,并在临时性问题(例如配置、数据库或网络问题)期间维持运行:

缩短默认用户会话存储期限

用户会话数据的默认存储期限已从 365 天缩短至 31 天。 此更改影响 hk_sessions 参数,该参数现在默认为 31d,而不是 365d。

最低支持的 Go 版本

最低支持的 Go 版本已从 1.21 提升至 1.23。

如果您之前使用早于 1.23 的 Go 版本从源代码构建了 Zabbix agent 2、agent 2 可加载插件或 web service,建议使用 受支持的 Go 版本 重新构建这些组件,以获得最新的安全更新和错误修复。 使用较旧 Go 版本构建的组件仍可继续工作,但对其进行 升级 时将需要更新的 Go 环境。

主机向导的模板升级

新的 主机向导 提供了一个引导式、分步骤的界面,用于在 Zabbix 中设置您的监控目标(设备、应用程序、服务等)。 它通过引导用户完成选择模板、安装 Zabbix agent、添加主机接口等关键步骤,简化了新主机或现有主机的配置。

从较早版本的 Zabbix 升级后,模板必须先升级,才能与主机向导配合使用。 有关说明,请参见 模板升级。

SNMPv1 和 SNMPv2 检查的并发处理

SNMPv1 和 SNMPv2 异步服务检查现在由可用的发现 worker 并发处理。