在操作系统上直接部署安装zabbix太麻烦了,正好借这个机会研究学习下docker。
使用CentOS7最小安装进行后续配置。
配置各种源加快部署安装的速度
配置CentOS源和Zabbix安装程序的yum源
#安装系统需要的管理工具 yum install -y bind-utils net-tools wget unzip yum install -y yum-utils device-mapper-persistent-data lvm2 #配置使用阿里的centos源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #使用阿里的docker源安装docker sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast #安装免费社区版 sudo yum -y install docker-ce systemctl start docker #设置开机自动启动 systemctl enable docker
让Docker使用国内的仓库
#编辑docker配置文件,使用国内仓库进行镜像下载 vi /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror.c.163.com"] } #重启docker加载配置 systemctl restart docker
创建Docker容器
创建MySQL容器
注意!指定UTF8字符集为重要参数,否则安装后在配置过程中,不能使用中文字符。
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"
-v /data/zabbix/mysql:/var/lib/mysql
-d mysql:5.7
--character-set-server=utf8 --collation-server=utf8_bin
创建Zabbix数据库容器
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" --link mysql-server:mysql -p 10051:10051 -d zabbix/zabbix-server-mysql:latest
创建Zabbix Web容器
docker run --name zabbix-web-nginx-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" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 80:80 -d zabbix/zabbix-web-nginx-mysql:latest
这样你就可以通过IP地址直接访问到Zabbix了。用户名和密码是:Admin/zabbix
设置这些容器可以跟随Docker启动
#可以试用docker ps查看容器的id号 docker update --restart=always 容器id号
安装后续问题
Zabbix绘制图形中文字符乱码
需要安装中文字体来解决
#找个地方下载文泉驿中文字体 wget http://xze.197946.com/wenquanyiziti.zip unzip wenquanyiziti.zip #将解压缩的字体拷贝到容器中 docker cp ~/文泉驿点阵正黑.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/assets/fonts/wqy.ttf #进入容器返回的终端进行之后配置,我覆盖了默认字体文件 docker exec -it zabbix-web-nginx-mysql bash cp DejaVuSans.ttf DejaVuSans.ttf.bak mv wqy.ttf DejaVuSans.ttf
Zabbix绘制图形的时间不正确
#进入容器的终端执行下面命令修改时区 docker exec -it zabbix-web-nginx-mysql bash vi /usr/share/zabbix/include/config.inc.php #第一行添加如下内容,无需重启直接生效 date_default_timezone_set('Asia/Shanghai');
Zabbix仪表板提示“Zabbix agent is not available (for 3m)”
这其实是因为默认安装好Zabbix之后自带一个监视本地系统的配置“Zabbix Server”。使用Docker安装几个容器后默认没有安装zabbix-agent,自然无法链接到本机自己的代理。
解决的办法是直接在真机上安装个zabbix-agent不就解决了吗?没有必要再创建一个zabbix-agent容器。这里我直接把zabbix-agent安装在Centos上了,没有创建容器。
配置–主机–Zabbix server将agent代理程序的接口更改为“172.17.0.1”即可。
#安装zabbix 软件源 rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm # 安装zabbix-agent yum install zabbix-sender zabbix-agent zabbix-get #在/etc/zabbix/zabbix_agentd.conf中更改: Server=<zbx-server的ip例如172.17.0.3> ServerActive=<zbx-server的ip例如172.17.0.3> Hostname=<本机的名字> Zabbix server我没有改动 #设置启动和开机项 systemctl start zabbix-agent.service systemctl enable zabbix-agent.service #允许访问本地的10050端口 firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --reload #配置是否正确,可以进入容器中测试 docker exec -it zabbix-server-mysql bash zabbix_get -s 172.17.0.1 -k system.cpu.num