
Docker
本文環(huán)境
- 系統(tǒng):Ubuntu 22.04
- 容器:Docker
安裝 Docker
sudo apt install docker docker.io -y

Ubuntu 安裝完成后自動(dòng)啟動(dòng)服務(wù),無(wú)需再次啟動(dòng),如果存在服務(wù)異??梢允褂孟旅婷顔?dòng)。
創(chuàng)建容器子網(wǎng)
創(chuàng)建一個(gè)橋接的網(wǎng)絡(luò)子網(wǎng)。
sudo docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

啟動(dòng) Mysql 容器
sudo docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
--network=zabbix-net \
--restart unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password

啟動(dòng) Zabbix Server 容器
sudo docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-6.0-latest

啟動(dòng) Zabbix 前端容器
sudo docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest

查看各容器狀態(tài)
僅關(guān)注狀態(tài)都是 UP 即可。

訪問(wèn)前端
訪問(wèn)服務(wù)器的 IP 地址即可,用戶(hù)名密碼為 Admin/zabbix。

效果圖

問(wèn)題
由于沒(méi)有安裝 Zabbix Agent ,導(dǎo)致沒(méi)有監(jiān)控到任何數(shù)據(jù),那么是不是應(yīng)該裝一個(gè) agent 的容器呢?其實(shí)不是,容器的 agent 只監(jiān)控容器本身,而無(wú)法體現(xiàn)出宿主機(jī)的詳細(xì)狀態(tài),所以需要在服務(wù)器原生安裝一個(gè) Agent
安裝 Agent
1.下載 Zabbix 倉(cāng)庫(kù)文件
sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu22.04_all.deb2
2.安裝 Zabbix 倉(cāng)庫(kù)文件
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
3.更新倉(cāng)庫(kù)文件
4.安裝 Zabbix Agent
sudo apt install zabbix-agent -y
5.查看容器 IP
需要切換 root 用戶(hù),不切換會(huì)提示權(quán)限不足問(wèn)題。
sudo -i
docker inspect -f '``.`Name` =>`range `.`NetworkSettings`.`Networks```.`IPAddress``end`' $(docker ps -aq)

6.修改 Zabbix Agent 配置文件
可以看到是 Zabbix Server 的 IP 是172.20.240.2,那么需要修改 Zabbix agent 的配置文件。
vim /etc/zabbix/zabbix_agentd.conf
需要修改兩個(gè)地方,將 Server 和 ServerActive 的 127.0.0.1 改成 Zabbix Server 容器的 IP


7.重啟服務(wù)
systemctl restart zabbix-agent
8.前端修改
路徑為 Configuration(配置)-》Hosts(主機(jī)),點(diǎn)擊 Zabbix Server,彈出的界面找到 Agent 填寫(xiě) IP 處,改為服務(wù)器的 IP 地址。

9.效果

圖標(biāo)變綠色了

最新數(shù)據(jù)
Podman 方式
Podman 是 RHEL 提供的一種開(kāi)源的容器編排工具,類(lèi)似 K8S,目前類(lèi) CentOS 自帶(8版本后放棄了 Docker ),具體可以參考 Podman 的一些資料。
本文環(huán)境
- CentOS 8 Stream
- Podman 2.4
安裝 Podman
啟動(dòng)服務(wù)
systemctl start podman && systemctl enable podman
Podman 配置
1.創(chuàng)建 名稱(chēng)為 Zabbix 的 POD,并暴露 Server 和 WEB 的的端口。
podman pod create --name zabbix -p 80:8080 -p 10051:10051

2.創(chuàng)建 mysql 的容器。
需要?jiǎng)?chuàng)建./mysql/ 目錄。
mkdir /data && cd /data
mkdir ./mysql

podman run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
-v ./mysql/:/var/lib/mysql/:Z \
--restart=always \
--pod=zabbix \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password

選擇docker.io的鏡像即可
3.創(chuàng)建 Zabbix Server 的容器。
podman run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
--restart=always \
--pod=zabbix \
-d zabbix/zabbix-server-mysql:alpine-6.0-latest

4.創(chuàng)建 Zabbix 前端的容器。
podman run --name zabbix-web-mysql -t \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="xiaoyu123" \
-e MYSQL_ROOT_PASSWORD="xiaoyu123" \
--restart=always \
--pod=zabbix \
-d zabbix/zabbix-web-apache-mysql:alpine-6.0-latest

5.創(chuàng)建 Zabbix Agent 容器。
podman run --name zabbix-agent \
-e ZBX_SERVER_HOST="127.0.0.1,localhost" \
--restart=always \
--pod=zabbix \
-d zabbix/zabbix-agent:alpine-6.0-latest

6.查看容器狀態(tài)。
都為 UP 即為正常。

效果
和 docker 的方式基本一樣,用戶(hù)名密碼一樣 Admin/zabbix。

首頁(yè):

主機(jī)頁(yè):

最新數(shù)據(jù):

最后
容器部分基本都結(jié)束了,除了沒(méi)有在 K8S 里運(yùn)行,后續(xù)在附加篇幅會(huì)提到,安裝起來(lái)相對(duì)簡(jiǎn)單,但是封裝的鏡像是個(gè)黑盒,對(duì)于新人而言,修改配置和優(yōu)化配置難度較大,適合體驗(yàn)。