跳转至

体验 Zabbix 6.0 LTS


2023-07-25 by dongnan

开始之前

在此之前使用的是zabbix 3.0 LTS,由于此版本zabbix公司已经停止维护了,所以更新到 6.0 LTS版本、该版本支持到2027年, 更重要的是6.0 官方支持 Kubernetes 这很好。

Zabbix 6.0开始不再支持 MySQL 5.7.X 数据库,强制使用 MySQL 8.0.X 版本,所以需要创建 MySQL 8.0.X 版本的容器, 以下操作过程全部基于 Docker 容器。

Zabbix 6.0

目标

  • 尝试 Docker 创建 MySQL 8.0.X 版本的数据库。
  • 使用 docker-compose 快速部署 Zabbix 6.0 监控系统。

环境描述

VM: 2vCPU/4GB/100GB On XenServer
OS: Ubuntu Server 20.04
Docker: docker-ce:20.10.12
网络: 容器默认使用宿主机网络
用户权限: root

操作步骤

下载镜像

提前准备以下Docker镜像:

root@mypds:~/soft/zabbix# docker images | grep -E "zabbix|mysql"

zabbix/zabbix-web-nginx-mysql   ubuntu-6.0-latest   82faa658b7bd   6 weeks ago     464MB
zabbix/zabbix-server-mysql      ubuntu-6.0-latest   8a635d87890f   6 weeks ago     311MB
mysql                           8.0.33              91b53e2624b4   8 weeks ago     565MB

docker-compose

服务定义如下:

root@mypds:~/soft/zabbix# cat docker-compose.yml

version: '3'

services:
  zabbix-db:
    image: mysql:8.0.33
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - db-data:/var/lib/mysql
    environment:
      - TZ=Asia/Chongqing
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=dongnan
      - MYSQL_ROOT_PASSWORD=dongnan
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8
      --collation-server=utf8_bin
      --max-connect-errors=1000
      --max-connections=2000
      --max-user-connections=800
      --interactive-timeout=14400
      --wait-timeout=14400
    ports:
      - 3307:3306
    networks:
      zbxnet:
        ipv4_address: 172.255.0.2


  zabbix-server:
    image: zabbix/zabbix-server-mysql:ubuntu-6.0-latest
    volumes:
      - /etc/localtime:/etc/localtime
      - server-alert-data:/usr/lib/zabbix/alertscripts
    environment:
      TZ: 'Asia/Shanghai'
      DB_SERVER_HOST: zabbix-db
      DB_SERVER_PORT: 3306
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: dongnan
      MYSQL_DATABASE: zabbix
      MYSQL_ROOT_PASSWORD: dongnan
      ZBX_CACHESIZE: 512M
      ZBX_VALUECACHESIZE: 128M
      PHP_TZ: 'Asia/Shanghai'
    ports:
      - 10051:10051
    networks:
      zbxnet:
        ipv4_address: 172.255.0.3
    depends_on:
      - zabbix-db

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:ubuntu-6.0-latest
    volumes:
      - /etc/localtime:/etc/localtime
    environment:
      TZ: 'Asia/Shanghai'
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: zabbix-db
      DB_SERVER_PORT: 3306
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: dongnan
      MYSQL_DATABASE: zabbix
      MYSQL_ROOT_PASSWORD: dongnan
      PHP_TZ: 'Asia/Shanghai'
    ports:
      - 8000:8080
    networks: 
      - zbxnet
    depends_on:
      - zabbix-server

volumes:
    db-data:
      driver: local
    server-alert-data:
      driver: local

networks:
  zbxnet:
    ipam:
      config:
      - subnet: 172.255.0.0/16

对于 MySql 8.0.X 数据库,有以下几点需要注意:

  • 需要配置兼容老版本密码插件选项 --mysql_native_password,否则 mysql 命令行客户端无法登陆。
  • 老版本的 --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 参数已经失效。
  • 默认字符集 由 utf8 变更为 utf8mb3

关于端口

  • 编排文件中,MySQL 端口映射配置为 3307:3306 ,这是因为服务器的 3306 端口已经被其它数据库容器占用了
  • 同样的原因 Zabbix-web 端口映射配置为 8000:8080,这些端口可以根据自己的环境进行调整。

部署服务

执行以下命令:

root@mypds:~/soft/zabbix# docker-compose up -d

zabbix_zabbix-db_1 is up-to-date
zabbix_zabbix-server_1 is up-to-date
zabbix_zabbix-web_1 is up-to-date

验证容器

执行以下命令:

root@mypds:~/soft/zabbix# docker-compose ps

Name                       Command               State                          Ports                       
---------------------------------------------------------------------------------------------------------------------
zabbix_zabbix-db_1       docker-entrypoint.sh --def ...   Up      0.0.0.0:3307->3306/tcp,:::3307->3306/tcp, 33060/tcp
zabbix_zabbix-server_1   /usr/bin/tini -- /usr/bin/ ...   Up      0.0.0.0:10051->10051/tcp,:::10051->10051/tcp       
zabbix_zabbix-web_1      docker-entrypoint.sh             Up      0.0.0.0:8000->8080/tcp,:::8000->8080/tcp, 8443/tcp

小结

zabbix 3.x 部署过程 相同,Zabbix 6.0.x 基于 Docker 同样可以快速的完成服务部署工作。 MySQL 相比较 5.7.x 版本 8.0 变动较大,需要继续学习它的新特性。

参考文档

回到页面顶部