创建docker网络
//创建一个网络为172.20, 所有的监控使用这个网络 默认使用bridge模式
docker network create --subnet 172.20.0.0/16 \
--ip-range 172.20.240.0/20 zabbix-net
创建mysql8数据库
docker run --name mysql-server -t \
--restart unless-stopped \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zaq12wsx" \
--network=zabbix-net \
-p 3306:3306 \
-d mysql:8.0.20 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
创建zabbix-java-gateway
docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.0-latest
创建zabbix-server, 这个是服务端,agent来连接
//因为创建了网络zabbix-net 所以容器间调用可以直接使用, 不在需要--link
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" \
-e MYSQL_ROOT_PASSWORD="zaq12wsx" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-5.0-latest
创建zabbix-web服务端界面
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" \
-e MYSQL_ROOT_PASSWORD="zaq12wsx" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
默认的账户是Admin/zabbix
在这里发生了一个问题,就是端口都开放出去了,本机可以curl http://193.169.200.53
可以访问,但 通过局域网其他设备无法访问, 然后我不得已重启了docker, 神奇的可以访问了
初步怀疑是虚拟机下的网络问题!!
安装zabbix-agent 收集服务器数据
//本机上安装是可以直接通过容器名称识别的
docker run --name zabbix-agent --privileged=true \
-e ZBX_HOSTNAME="Zabbix server" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-p 10050:10050 \
--restart unless-stopped \
--network=zabbix-net \
-d zabbix/zabbix-agent:latest