这些说明适用于从 Zabbix 6.4.x 升级到 Zabbix 7.0.0。
所有说明分为:
另请参见:
为了在 MySQL/MariaDB 上完成 Zabbix server 的成功升级,如果启用了二进制日志记录、没有超级用户权限并且 MySQL 配置文件中未设置 log_bin_trust_function_creators = 1
,您可能需要在 MySQL 中设置 GLOBAL log_bin_trust_function_creators = 1
。
使用 MySQL 控制台设置该变量,运行:
升级成功完成后,可以禁用此选项:
Upgrading to Zabbix 7.0.1 (or later) from Zabbix 7.0.0 with PostgreSQL/TimescaleDB results in a server crash. This issue is caused by a workaround to a compression job issue in the auditlog table in Zabbix 7.0 that irreversibly changes the compression policy of the auditlog table. See known issues for details of fixing the auditlog table manually.
If you have not upgraded to Zabbix 7.0.0 yet, note that there should be no such issues for upgrades from pre-7.0 Zabbix versions to 7.0.1. Follow the instructions in TimescaleDB setup page configuration section "For existing installations".
Using pg_restore
to restore a PostgreSQL/TimescaleDB backup created in Zabbix 7.0.0-7.0.4 will result in a missing base36_decode
function error, causing the restore to fail. This error occurs when restoring a backup created with pg_dump
.
See known issues for details on fixing this issue manually before creating the backup.
If you have not upgraded to Zabbix 7.0.0 yet, note that there should be no such issues for upgrades from pre-7.0 Zabbix versions to 7.0.5. For upgrade instructions, see Upgrading TimescaleDB schema.
Zabbix agent 在 Windows 上查找配置文件的默认位置已更改。现在,agent 会在agent 二进制文件 zabbix_agentd.exe 所在的目录中查找配置文件(而不是之前的 C:\zabbix_agentd.conf
)。
Windows 上的 Zabbix agent 2 以前已经在二进制文件 zabbix_agent2.exe 所在的目录中查找默认配置文件。然而,在新版本中,agent2 期望配置文件名为 zabbix_agent2.conf
(而不是 zabbix_agent2.win.conf
)。
另请参阅:在 Windows 上安装 Zabbix agent。
现在,在 Zabbix agent 2 的插件相关配置参数中允许空值。
TimescaleDB 1.x 的支持已移除
如果在压缩功能中使用了 TimescaleDB,那么在升级到 Zabbix 7.0.0 之前,有必要手动升级 TimescaleDB 以使用双精度数据类型。您可以通过 系统信息 前端部分的警告或 Zabbix server日志来判断 TimescaleDB 是否未使用双精度数据类型: “数据库尚未升级以使用双精度值。未来版本将删除对旧数值类型的支持。”
更多信息,请参见 旧数值 (浮点) 类型被弃用。
在新安装中,auditlog
表已转换为 TimescaleDB 中的超表,以便从自动分区(默认为 7 天)和更好的性能中受益。
要成功升级现有安装:
postgresql/timescaledb/schema.sql
脚本(自 Zabbix 7.0.0 起,脚本的位置和名称已从 postgresql/timescaledb.sql
更改为 postgresql/timescaledb/schema.sql
)。 请注意,如果启动 Zabbix 服务器而没有运行此脚本,将记录一个警告。另请参见:
代理记录已从 hosts
表中移出,并现在存储在新的 proxy
表中。
此外,代理的运行数据(如上次访问时间、版本、兼容性)已从 host_rtdata
表中移出,现在存储在新的 proxy_rtdata
表中。
API 中也新增了一个新的 proxy 对象。所有与代理相关的操作都应更新为通过这个新的代理对象进行。
根据item超时配置的更改,对于数据库监控项,ODBC登录超时和查询执行超时现在都限制为在item配置表单中设置的超时参数值。
新版本中重新设计了网络发现过程,允许在服务检查之间实现并发性。 新增了一个发现管理器进程以及可配置数量的发现工作线程(或线程)。发现管理器进程处理发现规则,并为每个规则创建一个带有任务(服务检查)的发现作业。服务检查由发现工作线程接收并执行。
StartDiscoverers 参数现在确定了用于发现的总可用发现工作线程数。 StartDiscoverers 的默认值从 1 提高到 5,并且范围从 0-250 提高到 0-1000。从之前 Zabbix 版本中的 discoverer
进程已被删除。
此外,现在可以在前端配置每个规则的可用工作线程数。此参数为可选参数。 在升级过程中,它将被设置为前面 Zabbix 版本中的 "One"。
查看Zabbix 7.0.0中的API变更列表。
最低要求的 PHP 版本已从 7.4.0 提升至 8.0.0。
所有小部件的默认宽度已增加了3倍。请注意,如果您使用自定义小部件,可能需要更新manifest.json文件的相应参数(例如,在配置自定义时钟小部件时,width
需要从4
更改为12
)。
现在,一个小部件的宽度最多可以达到72列(之前为24列),高度可以为1至64行(之前为2至32行)。因此,仪表板现在可以横向容纳多达72个小部件。
新的监控项历史数据仪表板小部件取代了纯文本小部件,提供了几项改进。
与纯文本小部件只能以纯文本形式显示最新项目数据不同,监控项历史数据小部件支持多种显示选项,适用于多种监控项类型(数值、字符、日志、文本和二进制)。 例如,它可以显示进度条或指示器,用于二进制数据类型的图像(对于浏览器监控项很有用),并突出显示文本值(对于日志文件监视很有用)。
升级后,所有先前配置的纯文本小部件将自动替换为历史数据小部件,保留相同的配置设置。 但是,任何引用纯文本小部件的API脚本都必须手动更新。
In Zabbix 7.0.4, the behavior of resolving the macros {HOST.CONN}
, {HOST.DNS}
, {HOST.IP}
, {EVENT.CAUSE.*}
, {EVENT.TAGS.*}
, and {EVENT.SYMPTOMS}
has been corrected for consistency with other built-in macros. Now, they will resolve to *UNKNOWN*
if an error occurs while evaluating their value.
As a result of this change, to ensure proper functionality, it is necessary to update the media types for the following integrations: iTop, Jira Service Desk, ManageEngine ServiceDesk, SolarWinds Service Desk.
This change may also affect any custom scripts or integrations using the abovementioned macros.
升级后,所有代理、HTTP代理和 walk[OID]
SNMP 检查将被移动到异步轮询器。
以前,Zabbix server、proxy或agent的 cURL 库功能是在构建时检测的。如果 cURL 功能被升级,为了利用它们,必须重新编译相应的 Zabbix 组件。
现在,只需重新启动即可使升级后的 cURL 库功能在 Zabbix 中生效,不再需要重新编译。这对于 Zabbix server、proxy或agent都是如此。
另外:
自 Zabbix 7.0 起,对 Oracle 作为后端数据库的支持已经被废弃,并预计在未来版本中将被完全移除。
现在,新安装和现有安装都默认添加了软件更新检查功能 - Zabbix 前端将与公共 Zabbix 端点通信,以检查更新。
您可以通过在服务器配置中设置 AllowSoftwareUpdateCheck=0 来禁用此检查。
现在,如果接收到一个无符号整数项的浮点值,该值将从小数部分修剪并保存为整数。之前,浮点值会使整数项变为不受支持的。
当使用默认(en_US)前端语言时,前端中的时间和日期显示现在符合美国标准的时间/日期显示格式。
之前 | 现在 |
---|---|
前端中的所有图标都已从图标图像表单切换为字体。
在监控 → 最新数据中,默认情况下,如果未设置筛选器,则不再显示子筛选器和数据。 但请注意,以前使用仅子筛选器设置的保存的筛选器不受影响。 在这种情况下,子筛选器将保持可见,并且即使没有设置主筛选器,数据也将显示出来。
以下几个配置参数的默认值已更改:
Plugins.<PluginName>.Capacity
已被完全移除;这些更改不会影响已显式设置了这些参数的现有安装。
几个聚合函数已更新。现在:
自 Zabbix 5.0.0 起,数值(浮点型)数据类型支持约 15 位数字的精度,范围约为 -1.79E+308 到 1.79E+308。 这在新安装中默认实现。 对于已在 Zabbix 5.0 之前创建的现有安装进行升级时,将自动应用数据库升级补丁,但不包括 TimescaleDB 与压缩。
对于 Oracle 数据库、旧版本的 MySQL 数据库和大型安装,执行补丁可能需要很长时间。 因此,建议在开始升级之前手动更新数据类型。
此补丁会更改历史记录和趋势表中的数据列,这些表通常包含大量数据,因此完成可能需要一些时间。 由于无法准确预测其所需的时间,并且取决于服务器性能、数据库管理系统配置和版本,建议首先在生产环境之外的环境中测试补丁。 对于默认配置为 MySQL 8.0 和 MariaDB 10.5 的大型表,该补丁因算法高效且以前使用的是相同的双精度类型但具有有限的精度,因此数据本身不需要修改,已知可以立即执行。
请按照 将数据库升级为主键和双精度数据类型 页面上的说明为您的数据库执行补丁(SQL 文件)。
请注意,对于 TimescaleDB,压缩支持 必须在应用此补丁后才能打开。
重要!仅对服务器数据库运行这些脚本。
应用补丁的步骤如下:
已添加了设置Zabbix agent/agent 2 Windows服务启动类型的选项(-S --startup-type
)。 此选项允许配置agent/agent2服务在Windows启动时自动启动(automatic
),在自动启动的服务完成启动后自动启动(delayed
),当由用户或应用程序手动启动时启动(manual
)或完全禁用服务(disabled
)。
在从MSI进行Windows代理安装时,默认的Windows Server 2008/Vista和更高版本的启动类型现在是delayed
,如果未在STARTUPTYPE
命令行参数中另行指定。 这提高了Zabbix agent/agent2 Windows服务的可靠性和性能,特别是在系统重新启动时。
有关新模板和现有模板的更改,请参阅模板更改。
从二进制包安装 准备导入数据库结构时,数据库相关文件的位置已更改,以更好地对应源中的文件结构:
schema.sql
, data.sql
, images.sql
) 位于数据库目录的根目录下。option-patches
目录。tsdb
缩写已经修改为 timescaledb
。option-patches
目录包含 with-compression
和 without-compression
子目录; 包含可选的文件或补丁,用于 升级数据库表 依赖于 TimescaleDB 压缩 设置database/postgresql/timescaledb/schema.sql
.以下是 MySQL 和 PostgreSQL 数据库的之前和当前目录结构的比较。
# Previous: # Current:
database database
├── mysql ├── mysql
│ ├── data.sql │ ├── option-patches
│ ├── double.sql │ │ ├── double.sql
│ ├── history_pk_prepare.sql │ │ └── history_pk_prepare.sql
│ ├── images.sql │ ├── data.sql
│ └── schema.sql │ ├── images.sql
│ │ └── schema.sql
│ │
├── postgresql ├── postgresql
│ ├── tsdb_history_pk_upgrade_no_compression │ ├── option-patches
│ │ ├── history_pk.sql │ │ ├── double.sql
│ │ ├── history_pk_log.sql │ │ └── history_pk_prepare.sql
│ │ ├── history_pk_str.sql │ ├── timescaledb
│ │ ├── history_pk_text.sql │ │ ├── option-patches
│ │ └── history_pk_uint.sql │ │ │ ├── with-compression
│ ├── tsdb_history_pk_upgrade_with_compression │ │ │ │ ├── history_pk.sql
│ │ ├── history_pk.sql │ │ │ │ ├── history_pk_log.sql
│ │ ├── history_pk_log.sql │ │ │ │ ├── history_pk_str.sql
│ │ ├── history_pk_str.sql │ │ │ │ ├── history_pk_text.sql
│ │ ├── history_pk_text.sql │ │ │ │ ├── history_pk_uint.sql
│ │ └── history_pk_uint.sql │ │ │ │ └── trends_upgrade.sql
│ ├── data.sql │ │ │ └── without-compression
│ ├── double.sql │ │ │ ├── history_pk.sql
│ ├── history_pk_prepare.sql │ │ │ ├── history_pk_log.sql
│ ├── images.sql │ │ │ ├── history_pk_str.sql
│ ├── schema.sql │ │ │ ├── history_pk_text.sql
│ └── timescaledb.sql │ │ │ ├── history_pk_uint.sql
│ │ │ │ └── trends_upgrade.sql
│ │ │ └── schema.sql
│ │ ├── data.sql
│ │ ├── images.sql
│ │ └── schema.sql
├── ... ├── ...
如果包含之前的目录结构,请更新脚本。
A JSON-based protocol for passive agent checks has been implemented.
For compatibility with older agents, a failover to the old plaintext protocol has been added. If the agent returns "ZBX_NOTSUPPORTED", Zabbix will cache the interface as old protocol and retry the check by sending only the plaintext item key.
Zabbix get can now be run with a new option -P --protocol <value>
where "value" is either:
If an item key is not supported, Zabbix get will now return the exit code 1
instead of 0
.
升级后,所有支持的监控项类型的全局超时将根据服务器配置文件中的 Timeout
参数值设置。 如果配置了proxy,则默认情况下,它将使用服务器的全局超时设置。
当使用升级后的server(版本为 7.0.0 或更新版本)与较旧的proxy或agent时,proxy或agent将像以前一样工作:
已从Modbus和MQTT插件的配置文件中删除了超时参数。 现在可以使用监控项配置表单设置请求执行超时。
Zabbix 新增了一种新的监控项类型 - 浏览器监控项,可以使用浏览器监控复杂的网站和 Web 应用程序。 浏览器监控项允许执行用户定义的 JavaScript 代码,模拟浏览器相关操作,如点击、输入文本、浏览网页等。
此外,此功能还增加了以下更改:
StartBrowserPollers
和 WebDriverURL
Zabbix 服务器/代理 配置文件参数;-w <webdriver url>
命令行参数以启用浏览器监控到 zabbix_js
命令行实用工具。wmi.get
和 wmi.getall
现在返回一个JSON,其中布尔值被表示为字符串(例如,"RealTimeProtectionEnabled": "True"
,而不是之前返回的 "RealTimeProtectionEnabled": true
),以匹配这些项在Zabbix agent上的输出格式;oracle.ts.stats
新增了一个conname参数,用于指定目标容器名称。返回数据的JSON格式已更新。当在键参数中未指定tablespace、type或conname时,返回的数据将包含一个额外的JSON级别,其中包含容器名称,允许区分不同的容器。net.dns.*
项。虽然name参数一直被列为强制的,但如果省略,它以前会解析为一个默认值(zabbix.com),但现在不再是这样。有关不会破坏兼容性的监控项更改列表,请参阅Zabbix 7.0.0的新功能。
现在,Zabbix在高可用性设置中切换活动节点时可以从正确位置读取SNMP trap文件。
但是,为了使此功能正常工作,需要将所有bash、perl和SNMPTT脚本中的时间格式更新为"%Y-%m-%dT%H:%M:%S%z"(例如2024-01-10T11:56:14+0300
)。