基于docker容器部署zabbix5.2

安装docker[略]

1
2
3
4
5
6
7
8
官方源比较慢,改用国内镜像源:
阿里云
$ sudo yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

或:清华大学源
$ sudo yum-config-manager --add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

镜像准备

1
2
3
4
5
6
7
docker pull mysql:5.7
# 拉取zabbix/zabbix-java-gateway:centos-5.4-latest镜像
docker pull zabbix/zabbix-java-gateway:centos-5.4-latest
# 拉取zabbix/zabbix-server-mysql:centos-5.4-latest镜像
docker pull zabbix/zabbix-server-mysql:centos-5.4-latest
# 拉取zabbix/zabbix-web-nginx-mysql:centos-5.4-latest镜像
docker pull zabbix/zabbix-web-nginx-mysql:centos-5.4-latest

不要下载最新版本的mysql,不然后面server 无法在mysql上进行注册,会报 “MySQL server is not available. ” 错误

配置网络

https://stackoverflow.com/questions/56013245/docker-on-centos-7-will-not-pull-containers

1
2
ip link set dev ens33 mtu 900 # centos7 貌似不生效,需要手动修改
docker network create --opt com.docker.network.driver.mtu=1400 --subnet 172.18.0.0/16 -d bridge zabbix_net

以下配置,注意路径映射和密码修改

mysql容器

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run --name mysql-server -dit \
--network zabbix_net --ip 172.18.0.2 \
-v /home/ec2-user/work/zabbix_docker/mysql/conf:/etc/mysql \
-v /home/ec2-user/work/zabbix_docker/mysql/logs:/var/log/mysql \
-v /home/ec2-user/work/zabbix_docker/mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Ghxw_0603" \
-e MYSQL_ROOT_PASSWORD="Ghxw_0603" \
--restart=always \
mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin

#注:–restart=always写在-d mysql:5.7的前面,要不然容器启动后自动关闭。–restart=always跟随Docker启动

java-gateway 容器

1
2
3
4
5
docker run --name zabbix-java-gateway -dit \
--network zabbix_net --ip 172.18.0.5 \
-v /etc/localtime:/etc/localtime \
--restart=always \
zabbix/zabbix-java-gateway:centos-5.4-latest

5、安装zabbix-server-mysql

1
2
3
4
5
6
7
8
9
10
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/home/ec2-user/work/zabbix_docker/zabbix \
-v /etc/localtime:/etc/localtime \
-v /home/ec2-user/work/zabbix_docker/alertscripts:/usr/lib/zabbix/alertscripts \
--name=zabbix-server-mysql --restart=always --network zabbix_net --ip 172.18.0.6 \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Ghxw_0603" \
-e MYSQL_ROOT_PASSWORD="Ghxw_0603" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-5.4-latest

6、安装zabbix-nginx

1
2
3
4
5
6
7
8
9
10
docker run -dit -p 8088:8080 -v /etc/localtime:/etc/localtime \
--name zabbix-web-nginx-mysql \
--restart=always --network zabbix_net --ip 172.18.0.3 \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Ghxw_0603" \
-e MYSQL_ROOT_PASSWORD="Ghxw_0603" \
-e PHP_TZ="Asia/Shanghai" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:centos-5.4-latest

7、部署zabbix-agent端(指定zabbix-server地址或者ip地址)

1
2
3
4
5
6
7
docker run -d --name zabbix-agent \
-e ZBX_HOSTNAME="119.255.249.177" \
-e ZBX_SERVER_HOST="119.255.249.177" \
-p 10050:10050 \
zabbix/zabbix-agent:centos-5.4-latest

docker run -dit --name zabbix-agent -e ZBX_HOSTNAME="zabbix-server-mysql" --restart=always --link zabbix-server-mysql --network zabbix_net --ip 172.18.0.4 -e ZBX_SERVER_HOST="zabbix-server-mysql" -p 10050:10050 --privileged -e ZBX_SERVER_PORT=10051 -d zabbix/zabbix-agent:centos-5.4-latest

8、登陆zabbix web

http://宿主机IP:8888/

用户:Admin 密码: zabbix

1
2
3
4
5
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                              NAMES
5fb0132fe0c2 zabbix/zabbix-web-nginx-mysql:centos-5.4-latest "docker-entrypoint.sh" 16 minutes ago Up 3 minutes 8443/tcp, 0.0.0.0:8088->8080/tcp zabbix-web-nginx-mysql
0cf37fc88c5a zabbix/zabbix-server-mysql:centos-5.4-latest "/usr/bin/tini -- /u…" 16 minutes ago Up 16 minutes 0.0.0.0:10051->10051/tcp zabbix-server-mysql
e58dde5fa6ab zabbix/zabbix-java-gateway:centos-5.4-latest "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 10052/tcp zabbix-java-gateway
77d09e257a8d mysql:5.7 "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 3306/tcp, 33060/tcp mysql-server

参考:

https://www.zabbix.com/documentation/5.4/en/manual/installation/containers

中文乱码修改

拷贝windows下的微软雅黑字体到zabbix-web-nginx-mysql下

1
2
3
4
docker cp /data/MSYH.TTC 36:/usr/share/zabbix/assets/fonts/
docker exec -it -u root zabbix-nginx /bin/bash
mv DejaVuSans.ttf DejaVuSans.ttf_bak
ln -s MSYH.TTC DejaVuSans.ttf

监控Zabbix Server

错误现象 Zabbix agent is not available (for 3m)

Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused

默认安装好Zabbix之后自带一个监视本地系统的配置“Zabbix Server”,无法被检测到。

主要原因就是我们是将Zabbix服务器和Zabbix客户端都安装到了Docker上

解决方法:

打开配置-主机,接口那的ip为127.0.0.1,这个IP是宿主机的IP,需要修改为 zabbix-agent 容器的IP