2022 Zabbix中国峰会
2022 Zabbix中国峰会

从源代码包升级

概述

本章节提供了使用 Zabbix 官方源代码包,从 Zabbix 3.4.x 成功 升级 至 Zabbix 4.0 所需的步骤。

虽然升级 Zabbix agent 不是强制性的,但建议将其升级,而 Zabbix server 和 Zabbix proxy 必须具有相同的主要版本。因此,在 Zabbix server 和 Zabbix proxy 的架构升级时,Zabbix server 和所有的 Zabbix proxy 必须停止并升级。

为了最大限度地减少升级期间的停机时间和数据丢失的几率,建议先停机并升级 Zabbix server,然后再逐个停机并升级 Zabbix proxy,待升级完毕后,先启动 Zabbix proxy,再启动 Zabbix server。在 Zabbix server 停机期间,运行中的 Zabbix Proxy 将继续采集和存储数据,并在 Zabbix server 启动并运行后,将数据传递给 Zabbix server。 只有在升级的 Zabbix server 启动后,才会生成 Zabbix server停机期间出现问题的任何通知。

众所周知,仅升级 Zabbix server 而不升级 Zabbix proxy ,并且未升级的 Zabibx proxy 将数据发送至升级后的 Zabbix server 是可能的(Zabbix proxy 无法其刷新配置)。但是,不建议这样,Zabbix 不支持这样,选择这样做您需为其独自承担风险。

请注意,对于 Zabbix proxy 上的 SQLite 数据库,升级前 Zabbix proxy 的历史数据将丢失,因为不支持 SQLite 数据库升级,而且必须手动删除 SQLite 数据库文件。 当第一次启动 Zabbix proxy 并且缺少 SQLite 数据库文件时,Zabibx proxy 会自动创建它。

根据其数据库大小,数据库升级到 4.0 版本可能需要很长时间。

<note warning>值得注意的是,在升级之前,请务必阅读相关的升级说明! :::

请阅读下面的升级说明:

Upgrade from Read full upgrade notes Important notes/changes between versions
3.4.x For 4.0 'libpthread' and 'zlib' libraries now mandatory;
Support for plain text protocol dropped and header is mandatory;
Pre-1.4 version Zabbix agents are no longer supported;
The Server parameter in passive proxy configuration now mandatory
3.2.x Also for 3.4 SQLite support as backend database dropped for Zabbix server/frontend;
Perl Compatible Regular Expressions (PCRE) supported instead of POSIX extended;
'libpcre' and 'libevent' libraries mandatory for Zabbix server;
Exit code checks added for user parameters, remote commands and system.run[] items without the 'nowait' flag as well as Zabbix server executed scripts;
Zabbix Java gateway has to be upgraded to support new functionality
3.0.x Also for 3.2 Database upgrade may be slow, depending on the history table size
2.4.x Also for 3.0 Minimum required PHP version upped from 5.3.0 to 5.4.0
LogFile agent parameter must be specified
2.2.x Also for 2.4 Node-based distributed monitoring removed
2.0.x Also for 2.2 Minimum required PHP version upped from 5.1.6 to 5.3.0;
Case-sensitive MySQL database required for proper server work;
'mysqli' PHP extension required instead of 'mysql'
升级前版本 阅读升级 目标版本的完整升级说明 版本间的重大说明或更改
3.4.x 关于 4.0 ' ibpthread' 和 'zlib' 库现在是强制性安装的;
丢弃对纯文本协议的支持,并强制使用 header;
不再支持 1.4 版本之前的 Zabbix agents;
在 Proxy 的被动模式中, 其配置的 Server 参数现在是必需的。
3.2.x 关于 3.4 Zabbix server 前端删除了 SQLite 作为后端数据库的支持;
支持 Perl 正则表达式 (PCRE) 而不是 POSIX extended;
'libpcre' 和 'libevent' 库在 Zabbix server 上是强制安装的;
为没有 'nowait' 标识的用户参数、远程命令和 system.run[] 监控项以及 Zabbix server 执行的脚本添加了退出码检查;
必须升级 Zabbix Java gateway 以支持新功能
3.0.x 关于 3.2 库升级过程可能会很漫长,具体时间取决于 history 表的大小。
2.4.x 关于 3.0 的最低 PHP 版本从 5.3.0 升级至 5.4.0;
必须指定 agent 中的 LogFile 参数。
2.2.x 关于 2.4 了基于节点的分布式监控。
2.0.x 关于 2.2 的最低 PHP 版本从 5.1.6 升级至 5.3.0;
正常工作的 Zabbix server 需要区分大小写的MySQL数据库;
需要 'mysqli' PHP 扩展,而不是 'mysql'

此外,还需检查升级至 Zabbix 4.0 的需求

建议在升级期间运行两个 SSH 会话,其中一个会话执行升级步骤,另一个会话监控其升级期间的日志。例如,在第二个 SSH 会话上运行tail -f zabbix_server.logtail -f zabbix_proxy.log,以实时显示最新的常规日志输出或错误日志输出。这对生产环境至关重要。

Zabbix server 升级步骤

1 停止 Zabbix 进程

停止 Zabbix server 以确保没有新数据插入数据库。

2 备份当前的数据库

这是非常重要的步骤。升级前请确保备份了数据库。如果升级失败(因磁盘空间不足、断电或其他意外导致的升级失败),备份的数据库将大有帮助。

3 备份配置文件、PHP 文件和 Zabbix 二进制文件

在升级前请确保备份了配置文件、PHP 文件和 Zabbix 二进制文件。

4 从源代码包安装新的 Zabbix server

使用此 说明 从源代码编译 Zabbixserver。

5 检查 Zabbix server 配置文件的参数

在新版本中,Zabbix server 的配置文件发生了一些变化,关于这些强制变更,详见升级说明。

关于新的可选参数,详见 Zabbix 4.0 新特征 章节。

6 启动新的 Zabbix 进程

启动新的 Zabbix 进程。检查日志文件以查看进程是否成功启动。

待 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

在启动 Zabbix server 之前:

  • 请确保数据库用户拥有足够的权限(create table, drop table, create index, drop index);
  • 请确保磁盘有足够的空间。
7 安装新的 Zabbix web 界面

其最小的需要为 PHP 5.4.0 版本。如果升级请按照 安装说明 进行操作。

8 清除浏览器 Cookies 和缓存

待升级完毕后,可能需要清除浏览器的 Cookies 和缓存,以便 Zabbix 的 Web 界面能正常工作。

Zabbix Proxy 升级步骤

1 停止 Zabbix proxy 进程

停止 Zabbix proxy 进程。

2 备份配置文件和 Zabbix proxy 二进制文件

在升级前请确保备份了配置文件和 Zabbix proxy 二进制文件。

3 从源代码包安装新的 Zabbix proxy

使用此 说明 从源代码编译 Zabbix proxy。

4 检查 Zabbix proxy 配置文件的参数

此版本中没有对 Zabbix proxy 的 参数 进行强制的更改。有关新的可选参数,详见 Zabbix 4.0.0 新特征章节。

5 启动新的 Zabbix proxy

启动新的 Zabbix proxy。检查日志文件以确定 Zabbix proxy 是否启动成功。

Zabbix proxy 将自动升级数据库。数据库的升级和启动和 Zabbix server 类似。

Zabbix Agent 升级步骤

升级 Zabbix agent 并不是强制性的。如果需要使用新功能时,则可以按需升级 Zabbix agent。

1 停止 Zabbix agent 进程

停止 Zabbix agent 进程。

2 备份配置文件和 Zabbix agent 二进制文件

在升级前请确保备份了配置文件和 Zabbix agent 二进制文件。

3 从源代码包安装新的 Zabbix agent

使用此 说明 从源代码编译 Zabbix agent。

或者,从 Zabbix 下载页面 下载预编译的 Zabbix agent 包。

4 检查 Zabbix agent 配置文件的参数

此版本中没有对 Zabbix agent 的参数进行强制的更改。

5 启动新的 Zabbix agent

启动新的 Zabbix agent。检查日志文件以确定 Zabbix agent 是否启动成功。

Zabbix 次要版本之间的升级

在 Zabbix 4.0.x 的次要版本之间进行升级时(例如从 4.0.1 升级到 4.0.3 ),需要与为 server/proxy/agent 主要版本之间的升级期间执行相同的操作。唯一的区别是,在次要版本之间进行升级时,不会对数据库进行任何更改。