本节提供使用官方 Zabbix 源码包从 Zabbix 5.4.x 升级 到Zabbix 6.0.x 所需的步骤。
尽管升级 Zabbix agent 不是强制性的(但推荐),但 Zabbix server 和 proxy 必须是 相同的主版本。因此,在 server-proxy 架构中,Zabbix server 和所有的 proxy 都必须停止并升级。保持 proxy 运行没有任何用处,因为在 proxy 升级期间,它们的旧数据将被丢弃,并且在 proxy 配置与 server 同步之前不会收集新数据。
使用较新的升级的 server 并让较旧但未升级的 proxy 向其发送数据不可能再成功启动。Zabbix 从未推荐或支持这种方法,现在已正式禁用,因为 server 将忽略来自未升级 proxy 的数据。
请注意,proxy 如果使用 SQLite 数据库,升级前来自 proxy 的历史数据将丢失,因为不支持 SQLite 数据库表结构升级并且必须手动删除 SQLite 数据库文件。初次启动 proxy 时如果缺少 SQLite 数据库文件,proxy 会自动创建它。
根据数据库大小,数据库升级到版本 6.0 可能需要很长时间。
升级前请务必阅读相关 升级说明!
提供以下升级说明:
从X版本升级 | 阅读完整的升级说明 | 版本之间最重要的变化 |
---|---|---|
5.4.x · | 适用于: Zabbix 6.0 |
提高了最低要求的数据库版本; 如果数据库版本过低,Server/proxy 将无法启动; 由于数据库结构更改,审计日志记录丢失。 |
5.2.x · | 适用于: Zabbix 5.4 Zabbix 6.0 |
提高了最低要求的数据库版本; Aggregate 监控项作为单独类型将删除。 |
5.0.x LTS | 适用于: Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
最低要求的 PHP 版本从 7.2.0 提高到 7.2.5。 |
4.4.x · | 适用于: Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
不再支持 IBM DB2; 最低要求的 PHP 版本从 5.4.0 提高到 7.2.0; 提高了最低要求的数据库版本; 更改了 Zabbix PHP 文件目录。 |
4.2.x · | 适用于: Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
删除了 Jabber、Ez 短信媒体类型。 |
4.0.x LTS | 适用于: Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
旧版本的 proxy 不再可以向升级的 server 报告数据; 高版本的 agent 将不再能够与较低版本的 Zabbix server 匹配。 |
3.4.x · | 适用于: Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
强制使用 'libpthread' 和 'zlib' 库; 对纯文本协议的支持被丢弃,并且头部是强制性的; 1.4 以前版本的 Zabbix agent 将不再支持; 被动 proxy 配置中的 Server 参数现在是必需的。 |
3.2.x · | 适用于: Zabbix 3.4 Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
Zabbix server/前端支持 SQLite 作为数据库; 支持 Perl 兼容正则表达式 (PCRE) 而不是 POSIX 扩展; Zabbix server 必须使用 'libpcre' 和 'libevent' 库; 为不带 'nowait' 标志的用户参数、远程命令和 system.run[] 监控项以及 Zabbix server 执行脚本添加了退出代码检查; Zabbix Java gateway 必须升级以支持新功能。 |
3.0.x LTS | 适用于: Zabbix 3.2 Zabbix 3.4 Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
数据库升级可能会很慢,具体取决于历史表的大小。 |
2.4.x · | 适用于: Zabbix 3.0 Zabbix 3.2 Zabbix 3.4 Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
最低要求的 PHP 版本从 5.3.0 升级到 5.4.0; agent 配置文件的的 LogFile 参数必须指定。 |
2.2.x LTS | 适用于: Zabbix 2.4 Zabbix 3.0 Zabbix 3.2 Zabbix 3.4 Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
移除了基于节点的分布式监控。 |
2.0.x · | 适用于: Zabbix 2.2 Zabbix 2.4 Zabbix 3.0 Zabbix 3.2 Zabbix 3.4 Zabbix 4.0 Zabbix 4.2 Zabbix 4.4 Zabbix 5.0 Zabbix 5.2 Zabbix 5.4 Zabbix 6.0 |
最低要求的 PHP 版本从 5.1.6 提高到 5.3.0; server 正常工作需要区分大小写的 MySQL 数据库;Zabbix server 需要 utf8 和 utf8_bin 字符集排序规则才能与 MySQL 数据库正常工作。请参阅 数据库创建脚本。 'mysqli' 需要 PHP 扩展而不是 'mysql'。 |
你可能还想参考 6.0 的其他 需求 。
在升级期间运行两个并行 SSH 会话可能会很方便,其中一个执行升级步骤,另一个监视 server/proxy 日志。例如,在第二个 SSH 会话中运行tail -f zabbix_server.log
或 tail -f zabbix_proxy.log
实时显示最新的日志文件条目和可能的错误。这对于生产实例可能很关键。
停止 Zabbix server 服务并确认不再有新的数据写入数据库。
这是非常重要的一步。确保您有数据库的备份,如果升级过程失败(如磁盘空间不足、断电等任何意外问题),它将有所帮助。
备份 Zabbix 程序文件、配置文件和 PHP 文件目录。
查看从源代码编译 Zabbix Server 的 说明 。
有关 强制更改 的详细信息,请参阅升级说明。
有关新增的可选参数,请参阅 6.0新变化 。
启动新的程序文件。检查日志以确认程序文件是否成功启动。
Zabbix server 会自动升级数据库。服务启动时,Zabbix server 会报告当前的(包括强制和可选)和所需要的数据库版本。如果当前强制版本比要求的版本低,Zabbix Server 会自动执行所要求的数据库版本升级补丁。数据库升级进度(百分比)被写入 Zabbix server 的日志。当日志出现 “database upgrade fully completed” 表示数据库升级成功。如果有任何补丁升级失败,Zabbix server 将不会启动。如果当前强制数据库版本比要求的更新,Zabbix server 也不会启动。仅当当前强制数据库版本对应于所需数据库版本时,Zabbix server 才会启动。
8673:20161117:104750.259 current database version (mandatory/optional): 03040000/03040000 8673:20161117:104750.259 required mandatory version: 03040000
在启动 server 服务之前:
要求的最低 PHP 版本是 7.2.5。可参阅 安装说明。
升级后,您可能需要清除 Web 浏览器的 cookie 和缓存信息,以使 Zabbix Web 界面正常工作。
停止 proxy 服务
备份配置文件和 Zabbix Proxy 旧版本程序。
参考从源码编译安装 Zabbix proxy 的 说明 。
此版本没有对 proxy 的 参数 做强制性变更。
启动新的 Zabbix proxy 服务。检查日志以确认是否升级成功。
Zabbix proxy 会自动升级数据库。数据库升级与启动 Zabbix server 服务类似。
升级 agent 不是强制性的。只有在需要使用新功能时才需要升级 agent。
本节的升级过程适用于升级 Zabbix agent 和 Zabbix agent2。
停掉 Zabbix agent 服务。
备份配置文件和 Zabbix agent 程序文件。
参考源码编译安装 Zabbix agent 的 说明。
在此版本中,agent 和 agent2 的参数都没有强制更改部分。
启动新的 Zabbix agent 服务。检查日志以确认启动成功。
升级 6.0.x 的次版本(例如从 6.0.1 到 6.0.3)时,需要对 server/proxy/agent 执行与主版本升级步骤相同的操作。唯一的区别是,在次版本之间进行升级时,不会对数据库进行任何更改。