此部署展现了如何运行支持MySQL数据库的Zabbix server,基于Nginx web服务器运行Zabbix web接口,以及Zabbix Java gateway。
一、安装运行mysql数据库容器,本地没有镜像自动会从默认docker仓库拉取,镜像拉取完以后才会在本地运行容器服务,--name参数指定mysql数据库容器名为mysql-server,-d参数为后台运行,并传入一些参数创建zabbix数据库,设置zabbix用户密码,设置root用户密码,设置数据库字符集为uft8。
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="aie@2019" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin --restart=always
二、启动Zabbix Java gateway实例, zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能。
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest \
--restart=always
三、安装运行 Zabbix server 容器,标签latest为最新版本,使用link参数使两个容器相互链接,关联到已创建的 mysql-server容器,-p参数把容器zabbix server服务的10051端口映射为本机的10051端口。
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="172.17.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="root" \
-e MYSQL_PASSWORD="aie@2019" \
-e MYSQL_ROOT_PASSWORD="aie@2019" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest \
--restart=always
四、启动Zabbix web 接口,并将它与MySQL服务器实例和Zabbix server实例关联。
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="172.17.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="root" \
-e MYSQL_PASSWORD="aie@2019" \
-e MYSQL_ROOT_PASSWORD="aie@2019" \
--link zabbix-server-mysql:zabbix-server \
-p 8890:8080 \
-d zabbix/zabbix-web-nginx-mysql:latest \
--restart=always
注:
DB_SERVER_HOST="172.17.0.1":写的是数据库的ip地址,也可能是docker0的地址
MYSQL_DATABASE="zabbix":创建库
MYSQL_USER="root":创建库的登录者
MYSQL_PASSWORD="aie@2019":登录者的密码
MYSQL_ROOT_PASSWORD="aie@2019":root的密码
如果已有数据库的话:
create database zabbix character set utf8 collate utf8_bin; 创建zabbix数据库
create user zabbix@localhost identified by 'Zabbix@123'; 创建zabbix数据库用户,并设置密码
grant all privileges on zabbix.* to zabbix@localhost; 设置zabbix用户对zabbix数据库具有本地管理权限
授权如下图失败的话:解决方法:
drop user zabbix@localhost;
flush privileges;
create user zabbix@localhost identified by 'admins_password'
五、web访问,我这里是使用本地nginx代理完成的
# vim /etc/nginx/conf.d/zabbix.conf
server{
listen 80;
server_name zabbix.cloud.com;
error_log /var/log/nginx/zabbix_error.log;
access_log /var/log/nginx/zabbix_access.log;
location / {
proxy_pass http://127.0.0.1:8890;
}
}
六、安装zabbix-agent
docker run --name zabbix-agent \
-e ZBX_HOSTNAME="Zabbix server" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
--link zabbix-server-mysql:zabbix-server \
-v /var/log/:/var/log/ \
--privileged=true
-d zabbix/zabbix-agent:latest \
--restart=always
七、访问页面zabbix.restartcloud.com 用户:Admin 密码:zabbix
八、中文显示乱码问题
1、在windows上搜索字体(win10)
/windows/foncs
目录下有很多字体,自己选择,上传到zabbix-sever服务器上(文档中上传的是msyh.ttc字体)
2、上传并改名
上传到zabbix-web服务器中的/usr/share/zabbix/assets/fonts目录下
并改名为msyh.ttf结尾的文件
cd /usr/share/zabbix/assets/fonts
mv msyh.ttc msyh.ttf
3、修改include文件
4、修改文件字体名称
修改78行将单引号里的内容,修改为于上传字体文件名称一致
修改123行内容,修改为于上传字体文件名称一致