11 升级说明适用于 7.0.0

这些说明适用于从 Zabbix 6.4.x 升级到 Zabbix 7.0.0。

所有说明分为以下几类:

  • 重大变更 - 可能破坏现有安装以及与升级过程相关的其他关键信息
  • 其他 - 所有其余描述 Zabbix 功能变更的信息

另请参阅:

  • Upgrade procedure 包含有关从 Zabbix 6.4.0 之前的版本升级的所有相关信息;
  • 升级ha集群 提供了在 高可用性 (HA) 集群中升级服务器的说明。

升级过程

在对 MySQL/mariadb 上的 Zabbix server 进行成功升级时,如果启用了二进制日志记录,且没有超级用户权限,同时 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;

重大变更

升级到 7.0.1 后,TimescaleDB 出现服务器崩溃,从 7.0.0 升级

从 Zabbix 7.0.0 升级到 Zabbix 7.0.1(或更高版本)并使用 TimescaleDB 会导致服务器崩溃。 这是由于在Zabbix 7.0中对auditlog表的压缩作业问题采用了一种变通方法,该方法不可逆地更改了auditlog表的压缩策略而导致的问题。

有关手动修复审计日志表的详细信息,请参见已知问题 问题

如果您尚未升级到 Zabbix 7.0.0,请注意,从旧于 7.0 版本的 Zabbix 升级到 7.0.1 时,不应存在此类 问题。 有关升级说明,请参见 升级timescaledb架构

升级后出现数据库还原错误(使用 PostgreSQL/TimescaleDB):7.0.0-7.0.4

使用pg_restore还原Zabbix 7.0.0-7.0.4创建的PostgreSQL或TimescaleDB备份时,将导致缺少base36_decode函数错误,从而使还原操作失败。
在使用pg_dump创建的备份进行还原时会出现此错误。

有关在创建备份之前手动修复此问题的详细信息,请参见已知问题

如果您尚未升级到Zabbix 7.0.0,请注意从Zabbix 7.0之前的版本升级到7.0.5时不应出现此类问题。
有关升级说明,请参见升级timescaledb架构

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

历史函数string参数中已添加对反斜杠的正确转义。

在从旧于7.0版本的Zabbix升级过程中,由于额外添加了反斜杠,这会导致参数变长。如果参数长度超过最大数据大小255个字符,可能会导致触发器函数异常。

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

请注意,自Zabbix 7.0.11起,针对从旧于7.0版本的Zabbix升级,已新增对最终参数长度的检查。如果最终长度超过最大限制,则不会升级这些参数,并在日志中打印警告信息,提示用户手动修复列出的参数。

另请参阅escaping-related upgrade issues

最低要求的 PHP 版本

PHP 所需的最低 version 已从 7.4.0 提高到 8.0.0。

Windows agent 配置文件的默认位置

在 Windows 上,Zabbix agent 查找配置 file 的默认位置已更改。现在 agent 会在 agent 二进制文件 zabbix_agentd.exe 所在的目录中查找该配置(之前是在 C:\zabbix_agentd.conf 中)。

在 Windows 上,Zabbix agent 2 已经会在二进制文件 zabbix_agent2.exe 所在的目录中查找默认配置 file。然而,在新的 version 中,agent 2 期望配置 file 的名称为 zabbix_agent2.conf(而不是 zabbix_agent2.win.conf)。

另请参阅:Installing Zabbix agent on Windows

允许在 agent 2 插件配置中使用空值

现在允许在与插件相关的配置参数中使用空值,适用于Zabbix agent 2。

TimescaleDB 1.x 不再受支持

不再支持 TimescaleDB 1.x。

TimescaleDB上的双精度数据类型

升级到 Zabbix 7.0.0 之前,如果使用了 TimescaleDB 并启用了压缩功能,必须手动将 TimescaleDB 升级为使用双精度数据类型。 如果 TimescaleDB 未使用双精度数据类型,可以通过 System information 前端部分或 Zabbix server 日志中的警告判断: "Database is not upgraded to use double precision values. Support for the old numeric type will be removed in future versions."

有关更多信息,请参阅 Upgrading to numeric values of extended range

将审计日志转换为TimescaleDB的超表

auditlog 表在新安装中已转换为 TimescaleDB 上的超表(hypertable),以受益于基于时间的自动分区(默认为 7 天)和更好的性能。

要成功升级现有安装,请参见 升级timescaledb架构

另请参见:第三方外部配套软件

为 proxies 使用单独的数据库表

Proxy 记录已移出 hosts 表,现在存储在新的 proxy 表中。

此外,proxies 的操作数据(如上次访问时间、版本、兼容性)也已移出 host_rtdata 表,现在存储在新的 proxy_rtdata 表中。

在 API 中还新增了一个 proxy object。所有与 proxies 相关的操作都应更新为通过这个新的 proxy object 来完成。

数据库监控 query 执行超时 监控项

根据对监控项 超时配置的更改,现在通过ODBC login 超时以及针对 zabbix前端中的监控项配置 监控项 的 query 执行超时均受限于在 配置 表单中设置的 Timeout 参数值。

更新了 agent/agent2 监控项

  • wmi.getwmi.getall 在与 Zabbix agent 2 一起使用时,现在返回的 JSON 中将 boolean 值表示为字符串(例如,使用 "RealTimeProtectionEnabled": "True"
    代替之前返回的 "RealTimeProtectionEnabled": true),以匹配这些 监控项 在 Zabbix agent 上的输出格式;
  • oracle.ts.stats 新增 conname 参数用于指定
    目标 get 容器名称。返回数据的 JSON 格式已更新。如果在键参数中未指定 tablespacetypeconname,返回的数据将在 JSON 中增加一个包含容器名称的层级,以便区分不同的容器。
  • net.dns.* 监控项 现在无法在不配置 name 参数的情况下使用。
    尽管该参数始终被列为必填项,但如果之前省略了 name 参数,则会解析为默认值(zabbix.com),此行为现已移除。

有关不破坏兼容性的 监控项 变更列表,请参见 监控项

Zabbix 高可用性中的 SNMP 陷阱

在高可用性设置中,如果活动节点发生切换,Zabbix 现在可以从正确的位置读取 SNMP trap 文件。

但是,要使此功能正常工作,必须将任何 bash、perl 和 SNMPTT 脚本中的时间格式 update 为 "%Y-%m-%dT%H:%M:%S%z"(例如:2024-01-10T11:56:14+0300)。

仪表板小部件的最大尺寸和数量增加

所有小部件的默认宽度已增加 3 倍。请注意,如果您使用的是自定义小部件,则可能需要 update manifest.json 文件的相应 仪表盘 file(例如,在配置自定义的 配置时钟部件 小部件时,需将 width4 更改为 12)。

一个 widget 现在可以宽达 72 列(之前为 24),并且高度可以在 1 到 64 行之间(之前为 2 到 32)。因此,仪表板现在可以在水平方向上容纳多达 72 个小部件。

监控项 历史记录和平面文本控件

新的 Item history 仪表板 widget 已取代 纯文本 小部件,提供了多项改进功能。

与仅以纯文本形式显示最新 监控项 数据的 纯文本 小部件不同,监控项 历史记录 widget 支持多种 监控项 类型(数值、字符、日志、文本和二进制)的多种显示选项。 例如,它可以显示进度条或指示器、二进制数据类型的图像(适用于 browser items),以及高亮显示文本值(适用于 log file monitoring)。

升级后,所有先前配置的 纯文本 小部件将自动替换为 监控项 历史记录 小部件,并保留相同的配置设置。 但是,任何 API 脚本 仪表盘 widget 必须手动更新。

升级到 7.0.4 后某些内置宏的解析顺序发生了变化

在 Zabbix 7.0.4 中,宏 {HOST.CONN}{HOST.DNS}{HOST.IP}{EVENT.CAUSE.*}{EVENT.TAGS.*}{EVENT.SYMPTOMS} 的解析行为已得到修正,以与其他内置宏保持一致。现在,如果在解析其值时发生错误,它们将解析为 *UNKNOWN*

由于此更改,为了确保功能正常,必须 update 以下集成的媒介类型:iTopJira Service DeskManageEngine ServiceDeskSolarWinds Service Desk

此更改还可能影响使用上述宏的任何自定义脚本或集成。

API 变更

请参阅 Zabbix 中的API changes列表。7.0.0。

其他

Oracle DB 已弃用

自 Zabbix 7.0 起,Oracle 作为后端数据库的支持已被弃用,并预计在未来的版本中完全移除。

{HEADER_10271072}

现在,默认情况下会在新安装和现有安装中添加软件 update 检查 — Zabbix 前端将与公共 Zabbix 端点通信以检查更新。

您可以通过在服务器 允许软件更新检查 中设置 AllowSoftwareUpdateCheck=0 来禁用此检查。

浮点值针对 integer 和 监控项 进行截断处理

现在,如果接收到浮点数值用于无符号的 整数监控项, 该数值的小数部分将被截断,并作为 integer 保存。 此前,浮点数值会使 整数监控项 变为不支持的状态。

美国时间格式

当使用默认(en_US)前端语言时,前端中的时间和日期显示现在符合美国标准的时间/日期显示格式。

之前 当前

异步轮询器

升级后,所有 agent、HTTP agent 和 walk[OID] SNMP 检查将被移至 异步轮询器

在运行时检测 cURL 库特性

此前,在构建 Zabbix server、proxy 或 agent 时会检测 cURL 库的功能。如果升级了 cURL 功能,则必须重新编译相应的 Zabbix 组件才能使用这些新功能。

现在,升级 cURL 库功能后只需重启 Zabbix 即可使用这些功能,不再需要重新编译。此改进适用于 Zabbix server、proxy 和 agent。

此外:

  • 构建时所需的最低 cURL version 版本已提升至 7.19.1;
  • 构建 Zabbix 时仅检查 cURL 库是否可用(如果启用了相关选项)并满足 version 的版本要求;
  • 当运行时出现 cURL 库错误时,将显示当前使用的 version 版本(例如:"cURL 库不支持 SSL/TLS (使用 version 7.88.1)");
  • 当 Zabbix server 启动并记录 SMTP 认证时,将记录所使用 cURL 库的 SMTP 认证可用性。

监控项 超时配置更改

升级后,所有受支持的 监控项 类型的 超时 将根据服务器配置文件中的 Timeout 参数值进行设置。 如果配置了 proxy,则默认情况下,它将使用服务器的全局超时设置。

当使用升级后的服务器(version 7.0.0 或更新版本)与较旧的 proxy 或 agent 时,该 proxy 或 agent 将像以前一样工作:

  • proxy 将使用来自 proxy 配置文件中的 Timeout 参数;
  • agent 将使用来自 agent 配置文件的 Timeout 参数。

超时参数已从 ModbusMQTT 插件的配置文件中移除。 现在可以使用配置表单设置请求执行超时时间。

浏览器 监控项

一种新的 监控项 类型 - Browser item - 已添加到 Zabbix,可以使用浏览器监控复杂的网站和 Web 应用程序。 浏览器 监控项 允许执行用户定义的 JavaScript 代码,以模拟与浏览器相关的操作,例如点击、输入文本、浏览网页等。

此外,此功能还添加了以下更改:

网络发现中的并发性

在新的 version 中,网络发现流程已被重构,以支持服务检查之间的并发性。
新增了一个发现管理器进程以及可配置数量的发现工作进程(或线程)。发现管理器处理发现规则,并为每条规则创建一个包含任务(服务检查)的发现作业。服务检查由发现工作进程拾取并执行。

启动发现进程 参数现在用于确定发现可用的总发现工作进程数。
默认的 StartDiscoverers 数量已从 1 提升至 5,范围也从 0-250 扩展至 0-1000。旧版本 Zabbix 中的 discoverer 进程已被移除。

此外,每条规则可用的工作进程数量现在可以在前端进行配置。该参数是可选的。
在升级过程中,该参数将默认设置为“一个”,与旧版本 Zabbix 一致。

图标由字体替换

前端中的所有图标已从图标图像集切换为字体。

最新数据过滤器

监控Latest data 中,如果未设置过滤器,则子过滤器和数据将不再默认显示。
但是请注意,之前仅使用子过滤器设置的保存过滤器仍不受影响。
在这种情况下,即使未设置主过滤器,子过滤器仍将可见,并且数据也会显示。

配置参数

以下配置参数的默认值已更改:

  • 缓冲区大小 配置参数用于 Zabbix agent 2,已从 100 增加到 1000;
  • Plugins.<PluginName>.System.Capacity 配置参数用于 Zabbix agent 2,已从 100 增加到 1000(最大值)。请注意,参数 Plugins.<PluginName>.Capacity 在 Zabbix 6.0 中已被弃用,现已完全移除;
  • startagents 配置参数用于 Zabbix agent,已从 3 增加到 10。请注意,在软件包中,对于较小的系统(例如 Raspberry Pi),默认值可能仍为 3。

这些更改不会影响已明确设置这些参数的现有安装。

聚合计算

若干聚合函数已更新。现在:

  • 聚合函数在计算时也支持非数值类型。例如,这对 count附加参数 函数可能会很有用。
  • count附加参数 聚合函数支持可选参数 operatorpattern,可用于微调 监控项 过滤,并仅统计符合给定条件的值。
  • 所有 foreach functions 不再包含不受支持的 监控项 进行计数。
  • 函数 时间段 之前配置为忽略时间段参数,现在将其作为可选参数接受。

旧的数值(float)值类型已删除

自 Zabbix 5.0 起,数值型(float)数据类型支持大约 15 位的精度,范围从大约 -1.79E+308 到 1.79E+308。
旧的数值类型已被禁用但仍受支持。从 Zabbix 6.4 开始,该类型被标记为弃用,并从 Zabbix 7.0 开始完全移除。

如果您的安装尚未升级以使用扩展范围的数值类型,则在 报告System information 中会显示以下警告:
“数据库历史表已升级:否。旧数值类型的支持已被弃用。请升级到扩展范围的数值类型”。

在升级到 Zabbix 7.0 时,以下数据库将自动升级:

  • MySQL
  • PostgreSQL/TimescaleDB(无压缩)
  • Oracle

然而,对于 Oracle、较旧的 MySQL 版本以及大型安装,建议在升级到 Zabbix 7.0 之前手动升级数据类型。

对于启用压缩的 TimescaleDB,数据库必须手动升级。

有关升级的详细信息,请参见 Upgrading to numeric values of extended range

设置 Windows agent 服务的启动类型

已添加设置 Zabbix 选项/选项 Windows 服务(-S --startup-type)启动类型的功能。 该功能允许将 agent/agent 2 服务配置为在 Windows 启动时自动启动(automatic),在自动启动的服务完成启动后启动(delayed),由用户或应用程序手动启动(manual),或完全禁用该服务(disabled)。

在执行 Windows agent installation from MSI 时,Windows Server 2008/Vista 及更高版本的默认启动类型现在为 delayed,除非在 STARTUPTYPE 从命令行安装 中另有指定。 这提高了 Zabbix agent/agent 2 Windows 服务的可靠性与性能,特别是在系统重启期间。

模板

有关新模板和现有模板的更改,请参阅模板更改

数据库相关文件的新目录结构

installing Zabbix from packages并准备数据库架构时,数据库相关文件的位置已发生变更,以更好地对应源代码中的file结构:

  • 基础初始化文件(schema.sql、data.sql、images.sql)位于数据库目录的根路径下。
  • 用于upgrading database tables可选文件/补丁存放在option-patches目录中。
  • 数据库扩展和附加组件现在作为子目录存在,以扩展名命名并位于相应的数据库目录下。
  • TimescaleDB特定变更:
    • 缩写tsdb已被替换为timescaledb。
    • option-patches目录包含with-compression和without-compression子目录; 这些子目录存放根据timescaledb压缩配置而定的postgresql-timescaledb可选文件/补丁。
    • TimescaleDB的超表模式创建file已移至database/postgresql/timescaledb/schema.sql。

此外,请注意以下变更:

以下是MySQL和PostgreSQL数据库新旧目录结构的对比:

# Previous:                                         # Current:
       
       database                                            database
       ├── mysql                                           ├── mysql
       │  ├── data.sql                                     │  ├── option-patches
       │  ├── double.sql                                   │  │  └── history_upgrade_prepare.sql
       │  ├── history_pk_prepare.sql                       │  ├── data.sql
       │  ├── images.sql                                   │  ├── images.sql
       │  └── schema.sql                                   │  └── schema.sql
       │                                                   │
       │                                                   │
       ├── postgresql                                      ├── postgresql
       │  ├── tsdb_history_pk_upgrade_no_compression       │  ├── option-patches
       │  │  ├── history_pk.sql                            │  │  └── history_upgrade_prepare.sql
       │  │  ├── history_pk_log.sql                        │  ├── timescaledb
       │  │  ├── history_pk_str.sql                        │  │  ├── option-patches
       │  │  ├── history_pk_text.sql                       │  │  │  ├── with-compression
       │  │  └── history_pk_uint.sql                       │  │  │  │  ├── history_upgrade.sql
       │  ├── tsdb_history_pk_upgrade_with_compression     │  │  │  │  ├── history_upgrade_log.sql
       │  │  ├── history_pk.sql                            │  │  │  │  ├── history_upgrade_str.sql
       │  │  ├── history_pk_log.sql                        │  │  │  │  ├── history_upgrade_text.sql
       │  │  ├── history_pk_str.sql                        │  │  │  │  ├── history_upgrade_uint.sql
       │  │  ├── history_pk_text.sql                       │  │  │  │  └── trends_upgrade.sql
       │  │  └── history_pk_uint.sql                       │  │  │  └── without-compression
       │  ├── data.sql                                     │  │  │     ├── history_upgrade.sql
       │  ├── double.sql                                   │  │  │     ├── history_upgrade_log.sql
       │  ├── history_pk_prepare.sql                       │  │  │     ├── history_upgrade_str.sql
       │  ├── images.sql                                   │  │  │     ├── history_upgrade_text.sql
       │  ├── schema.sql                                   │  │  │     ├── history_upgrade_uint.sql
       │  └── timescaledb.sql                              │  │  │     └── trends_upgrade.sql
       │                                                   │  │  └── schema.sql
       │                                                   │  ├── data.sql
       │                                                   │  ├── images.sql
       │                                                   │  └── schema.sql
       ├── ...                                             ├── ...

如果您的脚本中包含对旧目录结构或文件的引用,请update这些脚本。

被动 agent 检查的 JSON 协议

已实现基于 JSON 的 被动检查 协议。

为了与旧版 agents 兼容,已添加回退到旧明文协议的功能。如果 agent 返回 "ZBX_NOTSUPPORTED",Zabbix 将缓存该接口为旧协议,并通过仅发送明文 监控项 键重试检查。

Zabbix get 现在可以在 run 时使用新选项 -P --protocol <value>,其中 "value" 可以是以下值之一:

  • auto - 使用 JSON 协议连接,失败后回退并使用明文协议重试(默认);
  • json - 使用 JSON 协议键连接;
  • plaintext - 使用明文协议连接,仅发送 监控项 键。

如果某个 监控项 键不受支持,Zabbix get 现在将返回退出码 1,而不是 0