Zabbix 3.4.x 二进制包升级至 Zabbix 4.0

1、官方文档

Red Hat Enterprise Linux/CentOS:
https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/packages/rhel_centos

Debian/Ubuntu:
https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/packages/debian_ubuntu

虽然升级 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停机期间出现问题的任何通知。

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

2、系统环境

系统:CentOS Linux release 7.5.1804 (Core)
安装方式:yum
zabbix旧版本:3.4.2
zabbix新版本:4.0.5

3、升级步骤

3.1、停止 Zabbix 进程

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

systemctl stop zabbix-server

如果需要升级 Zabbix proxy,那么同样停止 Zabbix proxy 进程。

systemctl stop zabbix-proxy

3.2、备份当前的数据库

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

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

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

配置文件:

# mkdir /opt/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
# cp /etc/httpd/conf.d/zabbix.conf  /opt/zabbix-backup/

PHP 文件和 Zabbix 二进制文件:

# cp -R /usr/share/zabbix/ /opt/zabbix-backup/
# cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/

3.4、升级 Zabbix 软件仓库配置包

在升级之前,必须更新当前的软件仓库包:

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

3.5、升级 Zabbix 组件

依赖包:
libpthread - 编译Zabbix服务器和Zabbix代理时,现在必须使用POSIX Threads库。它是进程共享互斥锁和读写锁所必需的。如果互斥锁可用,但无法进行共享,那么Zabbix将在升级之前回退使用信号量。
zlib - 编译Zabbix服务器和Zabbix代理时,压缩库现在是必需的。

# yum install glibc-devel zlib-devel -y      # 依赖

运行以下命令以升级 Zabbix 组件:

# yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent

如果使用 PostgreSQL 数据库,请将命令中的mysql替换为pgsql。如果升级 Zabbix proxy,请将命令中的server替换为proxy

3.6、检查 Zabbix 组件配置文件的参数

在新版本中,Zabbix 组件的配置文件发生了一些变化,关于这些[强制变更[(https://www.zabbix.com/documentation/4.0/manual/installation/upgrade_notes_400#configuration_parameters),详见升级说明。

3.7、启动 Zabbix 进程

启动升级后的 Zabbix 组件。

# systemctl start zabbix-server
# systemctl start zabbix-proxy
# systemctl start zabbix-agent

3.8、清除浏览器的 Cookies 和缓存

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

4、Zabbix 次要版本之间的升级

如果要升级 Zabbix 的次要版本(例如,从 4.0.1 升级至 4.0.3),是非常容易的:

在升级 Zabbix 所有组件的次要版本时,只需运行以下命令:

$ sudo yum upgrade 'zabbix-*'

在升级 Zabbix server 的次要版本时,只需运行以下命令:

$ sudo yum upgrade 'zabbix-server-*'

在升级 Zabbix agent 的次要版本时,只需运行以下命令:

$ sudo yum upgrade 'zabbix-agent-*'

请注意,您也可以在这些命令中使用 'update' 而不是 'upgrade'。 虽然 'upgrade' 会删除过时的包,但 'update' 会保留它们。

5、升级过程中遇到的问题

5.1、前端与Zabbix数据库不匹配

The frontend does not match Zabbix database. Current database version (mandatory/optional): 3050047/3050047. Required mandatory version: 4000000. Contact your system administrator.

mysql> use zabbix;
mysql> update dbversion set mandatory=3040000;
mysql> flush privileges;

5.2、zabbix-server无法启动

如果服务端zabbix-server无法启动,查看日志/var/log/zabbix/zabbix_server.log

/var/log/zabbix/zabbix_server.log
[Z3005] query failed: [1060] Duplicate column name 'query_fields' [alter table `items` add `query_fields` varchar(2048) default '' not null]

报上面错误,请去数据库执行下面命令:

use zabbix;
alter table items drop column query_fields;
flush privileges;

end