zabbix是企业级分布式监控平台,具有很多优点,支持node 和 proxy 分布式模式;自动化注册,根据规则,自动注册主机到监控平台,自动添加监控模板;支持 agentd、snmp、ipmi 和 jmx 等很多通信方式。
部署一套zabbix,需要安装数据库、web服务器、zabbix-server和zabbix-agent
本人将zabbix的服务端安装在自己家openwrt的docker 上。(软路由作为上网拨号不会断电,将服务端安装在这里是最好的。宿主机也就是软路由上已经使用的端口不要和创建人的容器的端口发生冲突)
客户端有一台云服务器,群辉,群辉上虚拟机,笔记本电脑,(当然还可以添加其他的客户端)
下载mysql 镜像5.7,在docker hub上都有,

#docker pull mysql:5.7
 
 #docker images 查看
REPOSITORY                      TAG             IMAGE ID       CREATED       SIZE
mysql                           5.7             42f82e150ec2   6 hours ago   448MB
 

下载zabbix-server镜像

zabbix-server镜像分两种,支持MySQL数据库zabbix-server-mysql,支持支持PostgreSQL数据库zabbix/zabbix-server-pgsql。下面安装的是支持MySQL数据库的Server镜像。

 打开zabbix-server-mysql的docker hub,大家会发现,zabbix-server-mysql有下面这些版本
--------------------------------------------------------------------------
Zabbix server 3.0 (tags: alpine-3.0-latest, ubuntu-3.0-latest, centos-3.0-latest)  2 Zabbix server 3.0.* (tags: alpine-3.0.*, ubuntu-3.0.*, centos-3.0.*)  3 Zabbix server 3.2 (tags: alpine-3.2-latest, ubuntu-3.2-latest, centos-3.2-latest)  4 Zabbix server 3.2.* (tags: alpine-3.2.*, ubuntu-3.2.*, centos-3.2.*)  5 Zabbix server 3.4 (tags: alpine-3.4-latest, ubuntu-3.4-latest, centos-3.4-latest, alpine-latest, ubuntu-latest, centos-latest, latest)  6 Zabbix server 3.4.* (tags: alpine-3.4.*, ubuntu-3.4.*, centos-3.4.*)  7 Zabbix server 4.0 (tags: alpine-trunk, ubuntu-trunk)

我是下载的docker pull zabbix/zabbix-server-mysql:centos-latest

#docker pull zabbix/zabbix-server-mysql:centos-latest
#docker images
REPOSITORY                      TAG             IMAGE ID       CREATED       SIZE
mysql                           5.7             42f82e150ec2   6 hours ago   448MB
zabbix/zabbix-server-mysql      centos-latest   acb4bba0d029   3 weeks ago   351MB

下载zabbix-java-gateway镜像,

#docker pull zabbix/zabbix-java-gateway:latest
#docker images
REPOSITORY                      TAG             IMAGE ID       CREATED       SIZE
mysql                           5.7             42f82e150ec2   6 hours ago   448MB
zabbix/zabbix-web-nginx-mysql   latest          7ce5ac13bc18   3 weeks ago   179MB
zabbix/zabbix-server-mysql      centos-latest   acb4bba0d029   3 weeks ago   351MB
zabbix/zabbix-java-gateway      latest          2a6ab816dc6e   3 weeks ago   84.4MB
 

创建zabbix_net 网络

可以使用命令创建,docker network create -d bridge zabbix_net
也可以登录openwrt 进入docker 管理页面创建网络  zabbix_net
#docker run -dit -p 3306:3306 --name zabbix-mysql --network zabbix_net --restart always -v /etc/localtime:/etc/localtime -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:5.7 
#
 #   MYSQL_DATABASE="zabbix"                 在msql中创建的数据库的名
 #   MYSQL_USER="zabbix"              创建msql的登录账户名
 #   MYSQL_PASSWORD="zabbix123"      设置创建msql的登录账户的密码
 #   MYSQL_ROOT_PASSWORD="root123"   设置msql数据库root 的密码
其中-p 是将容器中的3306端口映射到服务器的3306端口,
 
--network zabbix_net是将容器加入到zabbix_net网络中,
 
-v /etc/localtime:/etc/localtime是同步服务器和容器内部的时区,
 
--restart always设置自启动,
 
-e MYSQL_DATABASE="zabbix",创建环境变量。
 
--name zabbix-mysql,给容器命名。

运行zabbix-java-gateway镜像,创建zabbix-java-gateway容器。
可能会报错,(因为服务端是在openwrt上的创建的,创建完其他容器后重启下软路由
进入docker面板重启其他容器即可)


docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:latest 

运行zabbix-server-mysql镜像,创建zabbix-server-mysql容器

docker volume create zabbix-server-vol
下面的内容要和mysql容器设置的内容要一样
MYSQL_DATABASE="zabbix" 
 
MYSQL_USER="zabbix"
 
MYSQL_PASSWORD="zabbix123"
 
MYSQL_ROOT_PASSWORD="root123" 
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-latest
 
 

运行zabbix-web-nginx-mysql 创建abbix-web-nginx-mysq 容器

MYSQL_DATABASE="zabbix"

MYSQL_USER="zabbix"

MYSQL_PASSWORD="zabbix123"

MYSQL_ROOT_PASSWORD="root123

docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime --name zabbix-web-nginx-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:latest

查看所有容器

root@OpenWrt:~# docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS              PORTS                                                  NAMES
04434211c12f   zabbix/zabbix-web-nginx-mysql:latest       "docker-entrypoint.sh"   5 minutes ago    Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 8443/tcp    zabbix-web-nginx-mysql
e3b6ddae2852   zabbix/zabbix-server-mysql:centos-latest   "/usr/bin/tini -- /u…"   7 minutes ago    Up About a minute   0.0.0.0:10051->10051/tcp, :::10051->10051/tcp          zabbix-server-mysql
80663a990bbb   zabbix/zabbix-java-gateway:latest          "docker-entrypoint.s…"   8 minutes ago    Up 2 minutes        10052/tcp                                              zabbix-java-gateway
5c1017554f01   mysql:5.7                                  "docker-entrypoint.s…"   11 minutes ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   zabbix-mysql
#注意04434211c12f 的端口是8080 

输入软路由的ip 192.168.31.1:8080
默认密码admin/zabbix
点击左侧的 User settings 修改语言为中文即可

客户端安装zabbix4.0 不过添加失败,还是需要安装agentd2

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget https://cdn.zabbix.com/zabbix/binaries/stable/4.0/4.0.31/zabbix_agent-4.0.31-linux-3.0-amd64-static.tar.gz
--2022-01-20 21:36:26--  https://cdn.zabbix.com/zabbix/binaries/stable/4.0/4.0.31/zabbix_agent-4.0.31-linux-3.0-amd64-static.tar.gz
正在解析主机 cdn.zabbix.com (cdn.zabbix.com)... 2606:4700:20::681a:794, 2606:4700:20::ac43:4504, 2606:4700:20::681a:694, ...
正在连接 cdn.zabbix.com (cdn.zabbix.com)|2606:4700:20::681a:794|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2682069 (2.6M) [application/octet-stream]
正在保存至: “zabbix_agent-4.0.31-linux-3.0-amd64-static.tar.gz”
 
100%[=================================================================>] 2,682,069    964KB/s 用时 2.7s
 
2022-01-20 21:36:29 (964 KB/s) - 已保存 “zabbix_agent-4.0.31-linux-3.0-amd64-static.tar.gz” [2682069/2682069])
 
[root@localhost src]# mkdir /usr/local/zabbix
[root@localhost src]# tar -zxvf zabbix_agent-4.0.31-linux-3.0-amd64-static.tar.gz  -C /usr/local/zabbix
./
./bin/
./bin/zabbix_sender
./bin/zabbix_get
./conf/
./conf/zabbix_agentd/
./conf/zabbix_agentd/userparameter_examples.conf
./conf/zabbix_agentd/userparameter_mysql.conf
./conf/zabbix_agentd.conf
./sbin/
./sbin/zabbix_agentd
[root@localhost src]# vim /usr/local/zabbix/conf/zabbix_agentd.conf
ogFile=/var/log/zabbix/zabbix_agentd.log  //日志文件目录
 
Server=xxx.xxx.xxx.xxx     //zabbix_server //zabbix服务器IP地址
#server=192.168.31.1
Hostname=xxx.xxx.xxx.xxx //客户端计算机ip
Hostname=192.168.31.165

创建用户
useradd zabbix
mkdir /var/log/zabbix //新建日志目录
touch /var/log/zabbix/zabbix_agentd.log //新建日志文件
chmod 777 /var/log/zabbix/zabbix_agentd.log

yum install ntpdate -y