
Docker
本文環境
安裝 Docker
sudo apt install docker docker.io -y

Ubuntu 安裝完成后自動啟動服務,無需再次啟動,如果存在服務異??梢允褂孟旅婷顔印?/p>
創建容器子網
創建一個橋接的網絡子網。
sudo docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

啟動 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

啟動 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

啟動 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

查看各容器狀態
僅關注狀態都是 UP 即可。

訪問前端
訪問服務器的 IP 地址即可,用戶名密碼為 Admin/zabbix。

效果圖

問題
由于沒有安裝 Zabbix Agent ,導致沒有監控到任何數據,那么是不是應該裝一個 agent 的容器呢?其實不是,容器的 agent 只監控容器本身,而無法體現出宿主機的詳細狀態,所以需要在服務器原生安裝一個 Agent
安裝 Agent
1.下載 Zabbix 倉庫文件
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 倉庫文件
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
3.更新倉庫文件
4.安裝 Zabbix Agent
sudo apt install zabbix-agent -y
5.查看容器 IP
需要切換 root 用戶,不切換會提示權限不足問題。
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
需要修改兩個地方,將 Server 和 ServerActive 的 127.0.0.1 改成 Zabbix Server 容器的 IP


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

9.效果

圖標變綠色了

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

2.創建 mysql 的容器。
需要創建./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.創建 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.創建 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.創建 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.查看容器狀態。
都為 UP 即為正常。

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

首頁:

主機頁:

最新數據:

最后
容器部分基本都結束了,除了沒有在 K8S 里運行,后續在附加篇幅會提到,安裝起來相對簡單,但是封裝的鏡像是個黑盒,對于新人而言,修改配置和優化配置難度較大,適合體驗。