用docker来安装zabbix总结

在操作系统上直接部署安装zabbix太麻烦了,正好借这个机会研究学习下docker。

使用CentOS7最小安装进行后续配置。

配置各种源加快部署安装的速度

配置CentOS源和Zabbix安装程序的yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#安装系统需要的管理工具
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使用国内的仓库

1
2
3
4
5
6
7
#编辑docker配置文件,使用国内仓库进行镜像下载
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
#重启docker加载配置
systemctl restart docker

创建Docker容器

创建MySQL容器

注意!指定UTF8字符集为重要参数,否则安装后在配置过程中,不能使用中文字符。

1
2
3
4
5
6
7
8
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数据库容器

1
2
3
4
5
6
7
8
9
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容器

1
2
3
4
5
6
7
8
9
10
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启动

1
2
#可以试用docker ps查看容器的id号
docker update --restart=always 容器id号

安装后续问题

Zabbix绘制图形中文字符乱码

需要安装中文字体来解决

1
2
3
4
5
6
7
8
9
#找个地方下载文泉驿中文字体
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绘制图形的时间不正确

1
2
3
4
5
#进入容器的终端执行下面命令修改时区
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”即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#安装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