zabbix 官方repo
這份 zabbix-docker/Makefile 是一個自動化建置與管理工具,主要用於簡化 Zabbix Docker 映像檔的編譯(使用 docker buildx bake)與運行(使用 docker compose)。
它可以讓你透過簡單的指令,處理不同作業系統(OS)、資料庫(DB)與版本(Version)的複雜組合。
核心功能講解
- 參數化配置 (自定義變數) 你可以透過命令列修改以下變數來改變建置目標:
- OS: 支援 alpine (預設), centos, ol (Oracle Linux), ubuntu, rhel。
- DB: 支援 mysql (預設), pgsql, sqlite3。
- ZBX_VERSION: Zabbix 版本(預設 7.4)。
- PLATFORMS: 可指定多架構編譯,例如 linux/amd64,linux/arm64。
- 主要工作流程 這份 Makefile 將映像檔建置分為三個階段:
- Base: 建立基礎作業系統層。
- Builders: 編譯 Zabbix 源碼所需的環境。
- Runtime: 最終運行的輕量化映像檔(分為 minimal 基本版與 all 完整版)。
常用指令簡介
建置類 (Build)
- make build: 自動依序執行 base -> builders -> runtime-minimal。這是最常用的本地開發編譯指令。 * make build-all: 建置所有組件,包含完整版的 runtime 映像檔。
- make base / make builders: 僅執行特定階段的建置。
運行類 (Compose) * make up: 從官方倉庫(Docker Hub)抓取預編譯好的映像檔並啟動 Zabbix 環境。
- make up-local: 先在本地編譯映像檔,然後使用本地生成的映像檔啟動環境(適合修改程式碼後測試)。
- make down / make restart / make logs: 封裝了標準的 Docker Compose 指令。
輔助類
- make help: 顯示所有可用的指令說明以及當前的配置參數(例如目前是針對哪個 OS 和 DB)。
- make clean: 嘗試刪除本地產生的編譯階段映像檔,節省空間。
透過額外的 YAML 檔案組合
你可能有注意到專案目錄下有這些檔案:
- compose_zabbix_components.yaml (核心組件)
- compose_additional_components.yaml (額外組件:如 Agent, SNMP Traps, Java Gateway)
當你下 make up 或 make stop 時,它背後其實執行了這一串:
|
|
┌─────────────────────────┬───────────────┬────────────────────────────────┐ │ 目的 │ Makefile 指令 │ 等同於 (簡化版) │ ├─────────────────────────┼───────────────┼────────────────────────────────┤ │ 啟動 (使用官方 Image) │ make up │ docker compose up -d │ │ 啟動 (使用你自己編譯的) │ make up-local │ make build + docker compose up │ │ 停止並移除 容器 │ make down │ docker compose down │ │ 暫停 容器 (不移除) │ make stop │ docker compose stop │ │ 重新啟動 │ make restart │ docker compose restart │ │ 查看狀態 │ make ps │ docker compose ps │ │ 查看日誌 │ make logs │ docker compose logs -f │ └─────────────────────────┴───────────────┴────────────────────────────────┘
## 最常用的指令
既然已經有這份 Makefile,除非你是要進行非常細微的除錯,否則養成使用 make 的習慣會省去很多檢查環境變數的時間。
最常用的三個指令記住即可:
- make up (啟動)
- make stop (暫停)
- make down (收工,全部移除)
預設路徑與自定義方式的詳細說明
- 預設存放位置 所有的資料預設都放在專案目錄下的一個隱藏或特定資料夾中。根據 .env 檔案的定義:
- 變數名稱: DATA_DIRECTORY
- 預設路徑: ./zbx_env (即在你執行 make 的資料夾下的 zbx_env/)
具體組件的資料存放路徑:
- 資料庫 (MySQL/MariaDB): ./zbx_env/var/lib/mysql
- 資料庫 (PostgreSQL): ./zbx_env/var/lib/postgresql/data
- Zabbix Server 腳本:
- 警報腳本: ./zbx_env/usr/lib/zabbix/alertscripts
- 外部腳本: ./zbx_env/usr/lib/zabbix/externalscripts
- Zabbix Web 憑證: ./zbx_env/etc/ssl/nginx (或 apache2)
- Agent 配置: ./zbx_env/etc/zabbix/zabbix_agentd.d
- Named Volumes (具名卷) 有些組件使用 Docker 管理的具名卷(由 Docker 決定路徑,通常在 Linux 的 /var/lib/docker/volumes/ 下):
- SNMP Traps: 卷名為 snmptraps。
如果你只想把所有資料移動到另一個資料夾(例如移動到外部硬碟 /mnt/data/zabbix),只需修改專案根目錄下的 .env 檔案:
1 # 找到這一行並修改 2 DATA_DIRECTORY=/mnt/data/zabbix 修改後,執行 make restart,Docker 就會把掛載點指向新位置。