一、环境介绍
主机名 | IP地址 | 系统 | 配置 | 说明 |
---|---|---|---|---|
zabbix01 | 192.168.11.51 | Debian 12 | 2核4g 40G磁盘 | Zabbix Server,数据库,zabbix web都运行在同一台上 |
修改主机名:
sudo hostnamectl set-hostname zabbix-server
系统版本
环境 | 版本 |
---|---|
宿主机系统 | Debian 12 |
Docker版本 | 20.10.14 |
zabbix容器版本 | 自动拉取最新版本 |
Mysql-server版本 | 8.0.28 |
二、安装docker
1、添加Docker软件源、安装docker
sudo apt update
#安装组件
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
#添加key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#添加阿里云的docker源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#安装
sudo apt -y install docker-ce docker-ce-cli containerd.io
查看版本
sudo docker version
Client: Docker Engine - Community
Version: 20.10.16
API version: 1.41
Go version: go1.16.15
Git commit: a224086
2、配置163镜像加速
本人写文档时用阿里云的镜像加速,下载latest版本的是zabbix5.4.9。非6.0
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
3、把用户添加到docker组
sudo usermod -aG docker user
退出登录,在登录生效。
注意:user为ssh登录用户,这样使用这个用户登录就可以直接管理docker,不需要加sudo
4、应用配置并重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker && sudo systemctl enable docker
三、docker运行单个Zabbix-server
创建专用于 Zabbix 组件容器的网络:
sudo docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
为永久配置和数据创建目录
sudo mkdir -p /dockerfile/zabbix/mysql8/data
启动空的 MySQL 服务器实例:
注意:数据库zabbix用户的密码为password,root用户密码为123456,请根据实际修改
sudo docker run --name mysql8-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password" \
-e MYSQL_ROOT_PASSWORD="123456" \
--network=zabbix-net \
-v /etc/localtime:/etc/localtime:ro \
-v /dockerfile/zabbix/mysql8/data:/var/lib/mysql \
-d mysql:8.0 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_bin \
--default-authentication-plugin=mysql_native_password
启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例:
为永久配置和数据创建目录
sudo mkdir -p /dockerfile/zabbix/alertscripts
注意:数据库zabbix用户的密码为password,root用户密码为123456,请根据实际修改
sudo docker run --name zabbix-server -t \
-e DB_SERVER_HOST="mysql8-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password" \
-e MYSQL_ROOT_PASSWORD="123456" \
-v /dockerfile/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
--network=zabbix-net \
-v /etc/localtime:/etc/localtime:ro \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:latest
Zabbix server 实例将 10051/TCP 端口(Zabbix trapper)暴露给主机。
- 启动 Zabbix Web 界面,并将其关联到已创建的 MySQL server 和 Zabbix server 实例:
注意:数据库zabbix用户的密码为password,root用户密码为123456,Web 访问端口为9090 ,请根据实际修改
sudo docker run --name zabbix-web -t \
-e ZBX_SERVER_HOST="zabbix-server" \
-e DB_SERVER_HOST="mysql8-server" \
-e PHP_TZ="Asia/Shanghai" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password" \
-e MYSQL_ROOT_PASSWORD="123456" \
--network=zabbix-net \
-v /etc/localtime:/etc/localtime:ro \
-p 9090:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:latest
5.启动 Zabbix agent 界面,并将其关联到已创建的 Zabbix server 实例:
sudo docker run --name zabbix-agent2 -t \
-e ZBX_SERVER_HOST="zabbix-server" \
-e ZBX_SERVER_PORT="10051" \
--network=zabbix-net \
-v /etc/localtime:/etc/localtime:ro \
--restart unless-stopped \
-d zabbix/zabbix-agent2:latest
6.检查
sudo docker logs -f mysql8-server
sudo docker logs -f zabbix-server
sudo docker ps
没有问题后,浏览器访问Zabbix地址,docker 运行的zabbix不需要在web端初始化,直接访问就ok。
三、解决图形中文乱码
安装中文字体
sudo apt -y install ttf-wqy-microhei
检查docker运行zabbix默认的字体名称.可以看到名为DejaVuSans.ttf,如下命令:
注意:zabbix-web是容器名,根据实际修改
sudo docker exec -it zabbix-web ls /usr/share/zabbix/assets/fonts/
DejaVuSans.ttf
把我们刚刚下载下来的替换容器里zabbix自带的字体
sudo docker cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc zabbix-web:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf