欢迎光临
祝您有神奇的一天

Docker 部署 Zabbix 7.2.4

我一向主张原生部署,最后因各种原因,不得不采用此方法曲线救国,在此记录踩过的坑。

使用设备:Macbook Pro 15-inch, 2019
操作系统:macOS Sequoia Beta 15.4
软件版本:Docker Desktop for Mac – Intel Chip Version 4.39.0(18744)

官方的使用手册附上,建议先仔细阅读,养成阅读《说明书》的好习惯
https://www.zabbix.com/documentation/current/zh/manual/installation/containers

其实官方的教程基本讲的很明白了,这里再讲一遍,主要是记录一下踩过的坑。

官方 Zabbix 组建镜像选择,latest,根据官方的描述,基于 Alpine Linux 镜像的最新稳定版 Zabbix 组件。那我们就以这个为例了。

基于我个人的喜好,喜欢在稳定的情况下,追新。根据官方的资料,对 MySQL 8.4.4 作了支持更新,但是保守起见,选择 MySQL 8.0.41;Web Server 一般情况下我会采用 Apache,这里测试就选择 Nginx 好了。

1. 创建专用于 Zabbix 组件容器的网络:

# docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

2. 启动空的 MySQL 服务器实例:

# docker run --name mysql-server -t \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             --network=zabbix-net \
             -d mysql:8.0 \
             --restart unless-stopped \
             --character-set-server=utf8 --collation-server=utf8_bin \
             --default-authentication-plugin=mysql_native_password

这里官方的教程有1个坑,以上官方的命令启动会报错,需要将“–restart unless-stopped \”放到“-d mysql:8.0 \”前面,就可以正常启动了,完整命令如下:

# docker run --name mysql-server -t \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             --network=zabbix-net \
             --restart unless-stopped \
             -d mysql:8.0 \
             --character-set-server=utf8 --collation-server=utf8_bin \
             --default-authentication-plugin=mysql_native_password

3. 启动 Zabbix Java 网关实例:

# docker run --name zabbix-java-gateway -t \
             --network=zabbix-net \
             --restart unless-stopped \
             -d zabbix/zabbix-java-gateway

4. 启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例:

# 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

说明:Zabbix server 实例将 10051/TCP端口(Zabbix trapper)暴露给主机。

5. 启动 Zabbix Web 界面,并将其关联到已创建的 MySQL server 和 Zabbix server 实例:

# docker run --name zabbix-web-nginx-mysql -t \
             -e ZBX_SERVER_HOST="zabbix-server-mysql" \
             -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" \
             --network=zabbix-net \
             -p 80:8080 \
             --restart unless-stopped \
             -d zabbix/zabbix-web-nginx-mysql

说明:Zabbix web 界面实例将 80/TCP 端口(HTTP)暴露给主机。

到此,Zabbix 7.2.4就部署好了,浏览器打开“http://localhost”就可以访问 Zabbix Web 界面,输入默认的用户名“Admin”,密码“zabbix”即可登录。

这里又有1个坑等着大家,有个问题项提示,IP为 127.0.0.1 的主机 Zabbix server 不可用,接口类型是Agent,端口是10050,按照传统的部署,安装 zabbix-agent,这里已经正常的监控到 Zabbix server 自身这台主机了。

大家莫慌,至此,大家已经在 Docker 里启动了4个实例,分别是 mysql-server、zabbix-java-gateway、zabbix-server-mysql、zabbix-web-nginx-mysql,还没有 zabbix-agent,并且此时 127.0.0.1 也只是指 zabbix-web-nginx-mysql 实例,并非 Docker 或者 宿主机。

非强迫症患者可以删除上述主机,开始自己的 Zabbix 体验之旅了。

强迫症患者咱们继续。

6. 启动 Zabbix agent 实例:

# docker run --name zabbix-agent -t \
             -e ZBX_HOSTNAME="Zabbix server" \
             -e ZBX_SERVER_HOST="172.20.240.0" \
             -e ZBX_SERVER_PORT="10051" \
             --privileged=true \
             --network=zabbix-net \
             --restart unless-stopped \
             -p 10050:10050 \
             -d zabbix/zabbix-agent

说明:–privileged=true \ 使用改参数,container 内的 root 拥有真正的 root 权限,从而获得几乎与主机相同的权限。这意味着容器可以访问和控制主机的所有硬件设备、操作系统内核和其他系统资源。

这里有1个大坑,第二行的参数 “ZBX_HOSTNAME” 的值为 “Zabbix server”,很多人都在这里掉坑了,如果不按照这个设置,zabbix-server-mysql、zabbix-agent 两个实例将会疯狂报错。

还有1个坑,第三行的参数 “ZBX_SERVER_HOST” 的值为 zabbix-server-mysql 的 IP,或者设置为 Zabbix 组件容器网络的【网关】,强烈推荐使用网关,我们这里是 “172.20.240.0”,使用网关的好处是,Docker Desktop 无论怎么重启,都可以正常连接,如果填写 zabbix-server-mysql 的 IP,下次重启 IP 可能就发生变化了,导致无法连接。

最后,回到 Zabbix web 界面,修改主机 Zabbix server 的 IP 地址为 172.20.240.0,更新后不一会,就可以正常连接,至此,问题解决。

赞(2) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Docker 部署 Zabbix 7.2.4》
文章链接:https://www.396736.com/39.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

小浪假期

祝您有神奇的一天

关于我们联系站长

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册