之前写过一篇搭建zabbix的教程,后来因为那台主机为了白嫖腾讯云的免费升级,就直接给格式化了。在重新搭建的过程中,忽然发现zabbix出了docker版本,觉得还不错,搞起来!
1、创建目录
mkdir -p /usr/local/docker/mysql
提前创建个目录,为了保存mysql的数据
2、创建mysql容器
docker run –name mysql-server -t \
-e MYSQL_DATABASE=”zabbix” \
-e MYSQL_USER=”zabbixadmin” \
-e MYSQL_PASSWORD=”zabbixpwd” \
-e MYSQL_ROOT_PASSWORD=”zabbixroot” \
-v /usr/local/docker/mysql:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-d mysql:5.7 \
–character-set-server=utf8 \
–collation-server=utf8_bin
开一个mysql的docker,用于存储zabbix采集到的数据
网上的教程都建议是5.7版本,说是8.0版本有不少bug
3、创建zabbix-server-mysql容器
docker run –name zabbix-server-mysql -t \
-e DB_SERVER_HOST=”mysql-server” \
-e MYSQL_DATABASE=”zabbix” \
-e MYSQL_USER=”zabbixadmin” \
-e MYSQL_PASSWORD=”zabbixpwd” \
-e MYSQL_ROOT_PASSWORD=”zabbixroot” \
-v /etc/localtime:/etc/localtime \
–link mysql-server:mysql \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:centos-5.4.0
我用的是zabbix-server基于centos的5.4.0版本,也可以根据自己喜好选择合适的docker版本,映射10051端口的操作也很重要,不然别的主机链接不到
4、创建zabbix-web-nginx-mysql容器
docker run –name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST=”mysql-server” \
-e MYSQL_DATABASE=”zabbix” \
-e MYSQL_USER=”zabbixadmin” \
-e MYSQL_PASSWORD=”zabbixpwd” \
-e MYSQL_ROOT_PASSWORD=”zabbixroot” \
-v /etc/localtime:/etc/localtime \
–link mysql-server:mysql \
–link zabbix-server-mysql:zabbix-server \
-p 8080:8080 \
-d zabbix/zabbix-web-nginx-mysql:centos-5.4.0
最后再部署一个zabbix-web的容器,其中容器的默认端口是8080,映射到什么端口就看个人喜好了,如果服务器上没有部署别的网站,也可以直接映射到80端口,更方便些。
5、宝塔面板部署代理
因为我是用了宝塔面板,本身已经部署了不少网站,所以再创建一个zabbix.xxx.com的网站,反向代理127.0.0.1:8080,可以再配一个SSL啥的,就可以随心访问了。
排坑指南
有个很现实的问题,就是用docker的zabbix监控宿主机
千万不能配置127.0.0.1!千万不能配置127.0.0.1!千万不能配置127.0.0.1!
要在宿主机上配置ServerIP为zabbix-server-mysql这个容器的ip,通常为172.17.0.x
要在zabbix-web中创建主机时,选择主机ip为宿主机docker网络网关,通常为172.17.0.1
说到这,我想就该懂了吧,这一点问题很小,但困扰了我几个小时,还是太菜……
仪表盘预览

