7-在docker中搭建Zabbix监控平台

概览

​ MyHomeLab中运行程序日渐增多,有数据库、GitLab、NextCloud、多个Web服务等,出于对系统运维和服务监控的想法,学习部署搭建了基于Docker的Zabbix监控平台。

Zabbix概要

href: Zabbix使用文档

Zabbix可以细分多个模块,分别是zabbix serverzabbix webzabbix agentzabbix proxy等,每一个模块由于依赖与实现不同又可以细分多个版本,如zabbix server就有zabbix-server-mysqlzabbix-server-pgsql两个版本。

各个模块的大致依赖关系如图:

unknown

Zabbix Agent作为终端,采集服务器或JVM的各项监控,传递给Zabbix Server进行存储(可以通过Zabbix Server被动采集或Zabbix Agent主动上报),用户则访问Zabbix Web读取数据库中的内容进行展示。

安装Mysql

在部署Zabbix之前要先安装数据库,我是直接通过Docker安装的,具体见:Docker中安装mysql

安装Zabbix Server

docker命令:

1
2
3
4
5
6
7
8
9
10
11
12
sudo docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="[password]" \
-e MYSQL_ROOT_PASSWORD="[password]" \
--privileged=true \
--link mysql:mysql \
--link zabbix-agent:zabbix-agent \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:ubuntu-6.4-latest
  • DB_SERVER_HOST 是本机mysql docker的名字哦

安装Zabbix Agent监控本机

本机的监控也通过Docker来完成,命令如下:

1
2
3
4
5
6
7
8
docker run --name zabbix-agent -t \
-e ZBX_HOSTNAME="esxi-ubuntu" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
--privileged=true \
--link zabbix-server-mysql:zabbix/zabbix-server-mysql \
--init \
--restart unless-stopped \
-d zabbix/zabbix-agent2:latest
  • ZBX_HOSTNAME:是该Agent的名字,可以自己随意取,后续在web页面中订阅主机的时候要输入相同名字。
  • ZBX_SERVER_HOST:是Zabbix server的docker名字

安装Zabbix Web

docker命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="[password]" \
-e MYSQL_ROOT_PASSWORD="[password]" \
--privileged=true \
--link mysql:mysql \
--link zabbix-server-mysql:zabbix/zabbix-server-mysql \
-p 15080:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:ubuntu-6.4-latest
  • ZBX_SERVER_HOST:zabbix-server的docker名
  • DB_SERVER_HOST: mysql的docker名

进入web页面配置

接下来通过ip与端口访问Zabbix监控页面即可,默认用户名是Admin ,密码是zabbix

登录后添加采集之前部署的Agent就好了

CleanShot 2023-09-17 at 02.26.07@2x
  • Ip地址是docker容器的内部地址,进到docker ifconfig下就行
  • 名字别填错了,是启动Agent docker的时候填的ZBX_HOSTNAME

大功告成

CleanShot 2023-09-17 at 02.28.08@2x