前言
一开始问chartgpt上,搭建的思路是对的,但命令和细节有问题,最后还是依靠StackOverflow解决的。一开始在amd的linux上搭建好docker版的zabbix,但放到arm的机器上就报错了,原因是指令集不匹配,最后跑到阿里云,买了arm的按量付费的机器,最后在arm的机器上把zabbix搭建起来了。(此篇博文公开到互联网上的时间为:2023-11-27)
搭建流程
在docker中搭建zabbix服务端需要3个镜像:
- 数据库镜像:用于存储zabbix的相关数据;
- zabbix服务端:开放10051端口,后期的,客户端就是连到服务端的这个程序上;
- zabbix前端:也就是对应的web页面。
具体步骤如下:
- 安装docker3个镜像:
docker pull mysql:latest docker pull zabbix/zabbix-server-mysql:latest docker pull zabbix/zabbix-web-nginx-mysql:latest
- 创建Docker网络:为了让Zabbix容器之间能够相互通信,我们需要创建一个Docker网络。执行以下命令:
docker network create zabbix_network
- 创建MySQL容器:
docker run --name zabbix-db -t \-p 3306:3306 \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix_pwd" \-e MYSQL_ROOT_HOST="%" \-e MYSQL_ROOT_PASSWORD="root_pwd" \--network=zabbix_network \-v mysql-data22:/var/lib/mysql \--restart unless-stopped \--cap-add=sys_nice \-d mysql \--character-set-server=utf8 \--collation-server=utf8_bin \--default-authentication-plugin=mysql_native_password \--disable-log-bin
- 创建Zabbix服务器容器:
docker run --name zabbix-server --network zabbix_network -e DB_SERVER_HOST="zabbix-db" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix_pwd" -d zabbix/zabbix-server-mysql
- 创建Zabbix Web容器:
docker run --name zabbix-web-nginx-mysql -t \-e DB_SERVER_HOST="zabbix-db" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix_pwd" \-e ZBX_SERVER_HOST="zabbix-db" \-e PHP_TZ=Asia/Shanghai \--network zabbix_network \-p 8080:8080 \-d zabbix/zabbix-web-nginx-mysql:latest
- 访问Zabbix Web界面:现在可以通过浏览器访问Zabbix Web界面。在地址栏中输入http://服务器IP:8080,用户名/密码:Admin/zabbix
总结
- 不同cpu架构的docker镜像不能运行,如果是docker项目测试环境与生产环境的cpu架构最好一致,避免出现问题。
- 测试环境与生产环境的docker版本最好也保持一致。
- 目前(2023-07-31)chatgpt只能是一个辅助工具,他给出的解决方案大体思路是对的,但细节还有待查验,chatgpt解决不了的可以去StackOverflow去查,一般都能查到。