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

3 从容器中升级

概述

本节描述了成功升级到 Zabbix 7.0.x 容器所需的步骤。

单独的说明集用于升级各个 Zabbix 组件镜像和 Docker compose 文件

在升级之前,请务必阅读相关的升级说明

在开始升级之前,确认用户对数据库具有必要的升级权限。

从 Zabbix 6.0 或更早版本升级时,需要在升级过程中创建确定性触发器。如果 MySQL/MariaDB 启用了二进制日志记录,这需要超级用户权限或设置变量/配置参数 log_bin_trust_function_creators = 1。请参阅数据库创建脚本以了解如何设置该变量。

注意,如果从控制台执行,变量将仅被暂时设置,并将在 Docker 重启时被删除。在这种情况下,保持您的 SQL 服务运行,只停止 zabbix-server 服务,运行 'docker compose down zabbix-server' 然后 'docker compose up -d zabbix-server'。

或者,您可以在配置文件中设置此变量。

根据数据库的大小,升级到 7.0 版本可能需要相当长的时间。

Zabbix 镜像升级

以下步骤可用于升级任何 Zabbix 组件。将 zabbix-server-mysql 替换为所需的组件镜像名称。

  1. 检查当前镜像版本:

    docker inspect -f '{{ .Config.Image }}' zabbix-server-mysql
  2. 拉取所需的镜像版本,例如:

    docker pull zabbix/zabbix-server-mysql:alpine-7.0-latest

    zabbix/zabbix-server-mysql:alpine-7.0-latest 将拉取基于 Alpine Linux 的最新发布的 Zabbix server 7.0 版本支持 MySQL。将其替换为您需要的 Docker 仓库和标签组合。有关可用选项的列表,请参见从容器安装

  3. 停止容器:

    docker stop zabbix-server-mysql
  4. 移除容器:

    docker rm zabbix-server-mysql
  5. 通过执行 docker run 命令启动更新的容器,并添加额外的参数来指定所需的环境变量和/或挂载点

配置示例

使用 MySQL 的 Zabbix server:

```sh
       docker run --name zabbix-server-mysql -t \
             -e DB_SERVER_HOST="mysql-server" \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
             --network=zabbix-net \
             -p 10051:10051 \
             --restart unless-stopped \
             -d zabbix/zabbix-server-mysql:alpine-7.0-latest
       ```

使用 PostgreSQL 的 Zabbix server:

```sh
       docker run --name zabbix-server-pgsql -t \
                -e DB_SERVER_HOST="postgres-server" \
                -e POSTGRES_USER="zabbix" \
                -e POSTGRES_PASSWORD="zabbix_pwd" \
                -e POSTGRES_DB="zabbix" \
                -e ZBX_ENABLE_SNMP_TRAPS="true" \
                --network=zabbix-net \
                -p 10051:10051 \
                --volumes-from zabbix-snmptraps \
                --restart unless-stopped \
                -d zabbix/zabbix-server-pgsql:alpine-7.0-latest
       ```

更多配置示例,包括其他 Zabbix 组件的示例,可在从容器安装页面找到。

  1. 验证更新:

    docker logs -f zabbix-server-mysql

Compose 文件

如果您使用 compose 文件 安装了 Zabbix,请按照本节中的升级说明进行操作。

  1. 检查当前镜像版本:

    docker inspect -f '{{ .Config.Image }}' zabbix-server-mysql
  2. 从 GitHub 仓库 拉取最新更新并切换到所需分支:

    git pull
           git checkout 7.0
  3. 使用新的 compose 文件启动 Zabbix 组件:

    docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d
  4. 验证更新:

    docker logs -f zabbix-server-mysql

有关更多详细信息,包括支持的环境变量和卷挂载点列表,请参见从容器安装