体验 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
变动较大,需要继续学习它的新特性。