使用 Docker 快速构建 Zabbix 监控环境

Docker 安装 Zabbix

安装 Docker

Docker 安装方法见下面链接:

各系统下的 Docker 安装方法

使用 Docker 部署 Zabbix

官方文档:

官方写的很详细并且是中文的,想了解更多的同学可以去看一下。

https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers

一、启动空的 MySQL 服务器实例。

1
2
3
4
5
6
7
8
9
10
11
docker run --name mysql-server -t \
-v /data/mysql5.7/data:/var/lib/mysql \
-v /data/mysql/etc:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin

二、启动 Zabbix Java gateway 实例

1
2
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest

三、启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run --name zabbix-server-mysql -t \
-v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \
-e PHP_TZ="Asia/Shanghai" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest

四、启动 Zabbix Web 界面,并将其关联到已创建的 MySQL server 和 Zabbix server 实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run --name zabbix-web-nginx-mysql -t \
-e PHP_TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 8080:80 \
-d zabbix/zabbix-web-nginx-mysql:latest

参数说明:

参数 说明
-v /data/mysql5.7/data:/var/lib/mysql 映射数据库为本地存储
-v /data/mysql/etc:/etc/mysql/conf.d 映射数据库配置文件为本地存储
-e PHP_TZ=”Asia/Shanghai” 设置 PHP 的时区为上海
-v /etc/localtime:/etc/localtime 映射本地时间
-v /etc/timezone:/etc/timezone 映射本地时区
-p 8080:80 Zabbix 使用 8080 端口

五、运行 Zabbix

上面的 Docker 运行完之后,在浏览器里输入 URL 地址:你的IP:8080 就可以看到 Zabbix 的介面了。(默认用户名:Admin,默认密码:zabbix)

六、设置 Zabbix 为中文显示

七、解决图形中显示中文为乱码。

1. 将 windows 系统的楷体字复制到 Linux 下。

2. 将楷体 simkai.ttf 字体文件,发送到 Docker 的 /usr/share/zabbix/fonts 目录下,进入容器,进行替换操作。
1
2
3
4
docker cp ./simkai.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/fonts/
docker exec -it zabbix-web-nginx-mysql /bin/bash
mv /usr/share/zabbix/fonts/graphfont.ttf /usr/share/zabbix/fonts/graphfont.bak
mv /usr/share/zabbix/fonts/simkai.ttf /usr/share/zabbix/fonts/graphfont.ttf

这样就完成了,再刷新一下。就可以看到中文字体显示是正常的了。

八、为 Docker 中的 zabbix 添加 curl 命令。

curl 是我写脚本经常用到的一个命令,zabbix 的容器中,并没有带这个命令。所以需要我们来手工添加。

1
2
docker exec -it zabbix-server-mysql /bin/bash
apk add curl

自此 Docker 版本的 Zabbix 环境已经全部搭建好。

Debian 下创建方法可以完全按以上步骤,Centos 需要将 -v /etc/timezone:/etc/timezone 这一行去掉,不然会报错!