官方文档: https://www.zabbix.com/documentation/current/en/manual/installation/containers 注意一下版本的选择 docker hub https://registry.hub.docker.com/r/zabbix/zabbix-agent
下载容器镜像到本地
docker pull mysql:8.0
docker save -o ./mysql80.zip mysql:8.0
docker pull zabbix/zabbix-java-gateway:latest
docker save -o ./zabbix-java-gateway.zip zabbix/zabbix-java-gateway:latest
docker pull zabbix/zabbix-server-mysql:latest
docker save -o ./zabbix-server-mysql.zip zabbix/zabbix-server-mysql:latest
docker pull zabbix/zabbix-web-nginx-mysql
docker save -o ./zabbix-web-nginx-mysql.zip zabbix/zabbix-web-nginx-mysql:latest
docker pull zabbix/zabbix-agent:latest
docker save -o ./zabbix-agent zabbix/zabbix-agent:latest
上传镜像文件到服务器后加载镜像
docker load -i ./mysql80.zip
docker load -i ./zabbix-java-gateway.zip
docker load -i ./zabbix-server-mysql.zip
docker load -i ./zabbix-web-nginx-mysql.zip
docker load -i ./zabbix-agent
按官方文档中的示例1一步一步操作
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 \
--privileged=true \
--restart unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
--privileged=true \
-d zabbix/zabbix-java-gateway:latest
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 \
--privileged=true \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:latest
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 \
--privileged=true \
-p 8100:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:latest
Zabbix-agent
docker run --name some-zabbix-agent \
-e ZBX_SERVER_HOST="172.20.240.2" \
-e ZBX_HOSTNAME="Zabbix server" \
--privileged=true \
--network=zabbix-net \
-d zabbix/zabbix-agent:latest
启动前4个容器后就可以在浏览器中访问zabbix服务 http://linux-ip:8100/ 初始账户为Admin/zabbix
不添加agent的话有部分数据采集不到
添加Agent后,采集数据如下图所示 因为官方文档上没有提docker 启动agent的过程,启动agent折腾了很长时间,总是访问不到zabbix-server后来查了很多文档和一些帖子后,用下面的命令启动成功
docker run --name some-zabbix-agent -e ZBX_SERVER_HOST=“172.20.240.2” -e ZBX_HOSTNAME=“Zabbix server” –privileged=true –network=zabbix-net -d zabbix/zabbix-agent:latest
ZBX_SERVER_HOST="172.20.240.2"是zabbix-server-mysql的容器ip地址 使用命令 docker inspect zabbix-server-mysql | grep "IPAddress"可以查到
ZBX_HOSTNAME应该怎么填我最后没找到正规的解释 然后我在一个帖子中看到这个:zabbix-server和zabbix-agent的host应该相同 https://www.zabbix.com/forum/zabbix-help/17298-no-active-checks-on-server-host-not-found 我在zabbix的configuration中查看server的host name 然后在启动zabbix-agent容器时添加这个host name,最终agent顺利启动,没有提示找不到host或是无法从ip:10051收到数据
剩下的这个问题我还没有找到解决方法… Received empty response from Zabbix Agent at [linux ip]. Assuming that agent dropped connection because of access permissions. 找到方法了,这个问题是agent ip填的不对导致的
使用命令 docker inspect some-zabbix-agent | grep "IPAddress"可以查到 然后点击关闭然后再打开,server和agent之间的通信就ok了
其它资料
Zabbix Server参数文件详解
|