想来想去还是使用docker搭建一套zabbix监控系统吧。简单方便,还能温习一下docker,一举两得。
环境准备
本次实验是通过docker在centos7.x系统上搭建一套zabbix-5.2版本的监控系统。
部署docker环境
docker我是用的是最新版的20.10版本。关于它的部署方式就不多说了,和其他版本部署方法都一样。可以参考我之前的文章:
还是比较详细的。
拉取镜像
使用docker部署zabbix,是需要使用docker镜像的。拉取的镜像及方法如下:
如果你还需要其他镜像可以登录https://hub.docker.com/
上去下载
docker pull zabbix/zabbix-web-nginx-mysql:5.2-centos-latest docker pull zabbix/zabbix-server-mysql:centos-5.2-latest docker pull zabbix/zabbix-agent:centos-5.2-latest docker pull zabbix/zabbix-java-gateway:centos-5.2-latest docker pull mysql/mysql-server:8.0.23
启动镜像
- 首先创建一个供zabbix系统使用的网络环境
docker network create -d bridge zbx_net
启动mysql容器
- 创建一个供mysql数据库存放文件的目录
mkdir -p /data/dockerdata/zabbix/db
- 启动mysql容器
docker run -itd -p 3306:3306 --name zabbix-mysql --network zbx_net --restart always -v /etc/localtime:/etc/localtime -v /data/dockerdata/zabbix/db:/var/lib/mysql -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="123qwe" mysql:8.0.23 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin
启动zabbix-server容器
- 为zabbix-server创建一个持久卷
docker volume create zbx_vo1
- 启动zabbix-server容器
docker run -itd -p 10051:10051 --mount source=zbx_vo1,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zbx_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL+DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="123qwe" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" -e ZBX_JAVAGATEWAY_ENABLE="true" -e ZBX_JAVAGATEWAYROOT=10052 zabbix/zabbix-server-mysql:centos-5.2-latest
启动zabbix-java-gateway
docker run -itd -v /etc/localtime:/etc/localtime --restart=always --name=zabbix-java-gateway --network zbx_net zabbix/zabbix-java-gateway:centos-5.2-latest
启动zabbix-web容器
- 创建语言存放目录
mkdir -p /data/dockerdata/zabbix/db/fonts
- 下载语言文件
cd /data/dockerdata/zabbix/db/fonts/ wget https://dl.cactifans.com/zabbix_docker/msty.ttf mv msty.ttf DejaVuSans.ttf
- 启动zabbix-web容器
docker run -itd -p 8080:8080 -v /etc/localtime:/etc/localtime -v /data/dockerdata/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/DejaVuSans.ttf --name zabbix-web-nginx-mysql --restart=always --network zbx_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="123qwe" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
- 到了这里其实zabbix服务端就已经安装好了,我们可以登录测试一下
- 我的ip是192.168.1.4,端口为8080
- 可以看到登录页面,默认的账号为;Admin 密码为:zabbix
- 可以看到监控页面,说明我们的部署是成功的。
- 不过现在我们是无法使用这个监控的,因为我们缺少zabbix-agent,所以接下来我们把它装上
启动zabbix-agent容器监控本机
- 启动zabbix-agent容器
docker run -itd --name zabbix-agent -p 10050:10050 --network zbx_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 zabbix/zabbix-agent:centos-5.2-latest
- 启动容器后通过web页面进行配置
- 看到以下这个页面,稍等一会,刷新一下页面
- 这个时候我们队客户端的监控已经生效
- 如果英文看着不方便我们可以调整为中文
- 这个时候就可以看到中文页面了
- 到此,部署方面也就差不多了
查看启动的全部容器
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fd31b12864e zabbix/zabbix-agent:centos-5.2-latest "/sbin/tini -- /usr/…" About a minute ago Up About a minute 0.0.0.0:10050->10050/tcp, :::10050->10050/tcp zabbix-agent 55ad84d3c389 zabbix/zabbix-web-nginx-mysql:centos-5.2-latest "docker-entrypoint.sh" 33 minutes ago Up 33 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 8443/tcp zabbix-web-nginx-mysql 64ff391b7594 zabbix/zabbix-java-gateway:centos-5.2-latest "docker-entrypoint.s…" 41 minutes ago Up 41 minutes 10052/tcp zabbix-java-gateway 2a4234d6cd8c zabbix/zabbix-server-mysql:centos-5.2-latest "/sbin/tini -- /usr/…" 47 minutes ago Up 47 minutes 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp zabbix-server-mysql 3fe278b06bcb mysql:8.0.23 "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp zabbix-mysql