iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0

雖說監控大多為後勤系統,但在需要查看系統歷史狀態的話是非常有用的。因此對監控系統做適時的備份仍有其必要性。

由於本書中所有有 Zabbix 關鍵程式是使用 Container 搭成,所以可以減化其備份與還原的流程。對於 Zabbix 來說因為所有的資料是放在 MySQL 資料庫裡,所以資料庫是備份時的重點。

MySQL 備份

建立備份目錄

root# mkdir ~/backup/; cd ~/backup/

使用 mysqldump 備份資料庫並壓縮

root# mysqldump -u root -p -h localhost zabbix > zabbix.sql
root# tar -zcf zabbix.sql.tar.gz zabbix.sql

將以上 zabbix.sql.tar.gz 另存到其它的主機或設備中。

還原流程

我們假設整個 Zabbix 主機需要重建,其重建步驟為:

  1. 準備 Container 執行環境。
  2. 還原資料庫。
  3. 下載 Zabbix 相關 Image 並執行。

準備 Container 環境

安裝必要套件

root# dnf install -y chrony podman podman-plugins runc mysql-server

時間校時

root# systemctl enable --now chronyd
root# sleep 60

root# hwclock -w

還原 MySQL 資料庫

啟動 MySQL 服務

root# systemctl enable --now mysqld

設定 Zabbix 使用的資料庫帳號與權限

root# echo "create database zabbix character set utf8mb4 collate utf8mb4_bin; " | mysql -u root -h localhost
root# echo "create user 'zabbix'@'10.89.0.%' identified by 'P@ssw0rd'; " | mysql -u root -h localhost
root# echo "grant all privileges on zabbix.* to 'zabbix'@'10.89.0.%'; "  | mysql -u root -h localhost
root# echo "SET GLOBAL log_bin_trust_function_creators = 1; "  | mysql -u root -h localhost

將備份的資料庫檔案解開並還原。

root# tar zxf tar zxf zabbix.sql.tar.gz
root# mysql -u root -p -h localhost zabbix < zabbix.sql

執行 Zabbix 程式

建立 Container 網路

root# podman network create net_zabbix

建立 zabbix_server 容器

root# podman run --name zabbix_server \
--network net_zabbix -d \
-p 10051:10051 \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="P@ssw0rd" \
-e DB_SERVER_HOST="10.89.0.1" \
docker.io/zabbix/zabbix-server-mysql:alpine-7.0.0

建立 zabbix_web 容器

root# podman run --name zabbix_web \
--network net_zabbix \
-p 8080:8080 \
-p 8443:8443 \
-e DB_SERVER_HOST="10.89.0.1" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="P@ssw0rd" \
-e ZBX_SERVER_HOST="zabbix_server" \
-e MYSQL_DATABASE=zabbix \
-e PHP_TZ="Asia/Taipei" \
-d docker.io/zabbix/zabbix-web-nginx-mysql:7.0.0-alpine

檢查運行狀態

root# podman ps
CONTAINER ID  IMAGE                                                 COMMAND               CREATED        STATUS        PORTS                                           NAMES
80d98037d2e3  docker.io/zabbix/zabbix-server-mysql:alpine-7.0.0     /usr/sbin/zabbix_...  3 minutes ago  Up 3 minutes  0.0.0.0:10051->10051/tcp                        zabbix_server
409bd153ee9e  docker.io/zabbix/zabbix-web-nginx-mysql:7.0.0-alpine                        5 seconds ago  Up 5 seconds  0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp  zabbix_web

注意事項

在以上的還原流程中可以瞭解,基本上 Zabbix 的資料若有備份,在還原時就是使用 "建置" 的流程再做一次。

因此在中小型架構下的監控環境,以容器做部署是筆者較為推薦的。

本書相關參考:

確認資料還原

還原完成後,我們可以使用原帳號密碼登入,並查看到先前的監控資訊。

CleanShot 2024-07-31 at 12.37.37@2x

CleanShot 2024-07-31 at 12.41.59@2x


上一篇
Day29: 在 Zabbix 中取得 WebAPI 提供之資料
系列文
Zabbix 7.0 LTS: 洞察系統運作狀態,一套搞定31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言