10 7.4.0 升级说明

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

所有说明分为以下几类:

  • Breaking changes - 可能会破坏现有安装的更改,以及与升级过程相关的其他 重要信息
  • Other - 描述 Zabbix 功能变更的其余所有信息

另请参见:

  • 升级步骤,了解从 Zabbix 7.4.0 之前版本升级的所有相关信息;
  • 升级 HA 集群,了解在 高可用(HA)集群中升级服务器的说明。

升级过程

要在 MySQL/MariaDB 上成功完成 Zabbix 服务器升级,您可能需要在 MySQL 中设置 GLOBAL log_bin_trust_function_creators = 1,如果启用了二进制日志、没有超级用户权限,并且 MySQL 配置文件中未设置 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 插件更新

Zabbix agent 2 监控 MSSQL 的模板已更新,新增了筛选器,可按名称包含或排除已发现的 quorum 成员;同时还增加了一个服务筛选器,允许按集群名称进行筛选,以排除空集群。为确保该模板正常工作且不报错,必须将 MSSQL Zabbix agent 2 插件更新到 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;

数据库连接参数

DBPortDBSocket 现在互斥。指定数据库连接参数时,您可以定义 DBPort 或 DBSocket 中的任意一个,或者将两者都留空以使用默认值。

其他

不支持的 SNMP walk/discovery 监控项且没有有效的 OID

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

同样,SNMP discovery 监控项在没有任何 OID 或 OID 实例存在时,现在会返回错误,并且该监控项会变为不受支持。此前在这种情况下会返回空数组。

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

管理历史缓存

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

  • 手动清理缓存: 新的运行时命令 history_cache_clear=target 适用于 Zabbix 服务器/proxy,可让您按监控项 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 升级后,模板必须先升级,才能与主机向导配合使用。 有关说明,请参见 模板升级