Zabbix 是什麼#
Zabbix 是一款開源的系統監控工具,從資料採集、收集、呈現到告警都涵蓋完整,除了一般的服務與伺服器外,也能用於監控網路設備。它是本系列介紹過的工具中歷史最悠久的——可追溯至 1998 年,當時 Alexei Vladishev 評估市面上的監控產品都太貴、維護成本也高,於是自行開發 Zabbix,並於 2001 年推出 1.0 Alpha 1 版。
Zabbix 的版本支援週期值得留意:較新的版本通常重大安全更新時間較短,需要長期穩定營運的環境可選 LTS 版本。詳情請參閱官方的 Zabbix Life Cycle & Release Policy。
架構#
Zabbix 主要採 Server-Client 架構,由 Client(Agent)負責收集,再回傳給 Server 儲存。主要元件包括:
- Zabbix Server:核心,負責接收、儲存資料與觸發告警,也可以主動發送 Request 監控外部服務。
- Web Interface:操作及檢視資料,並設定監控項目。
- Zabbix Proxy:當 Server 與 Client 無法直接連線時的中繼節點。
- Zabbix Agent:在被監控對象上執行,負責收集並回傳資料。
雖然常以 Server-Client 形容,但 Zabbix 也可以只設置 Server,僅由 Server 主動發送 Request 監控(Agent Less 模式)。Web Interface 可以檢視資料與設計 Dashboard;若需要與其他資料源統一呈現,可以接 Grafana(透過 Zabbix Data Source Plugin)。
概念#
Host#
Host 是 Zabbix 中被監控的對象,通常代表一台伺服器、網路裝置或任何需要被監控的設備或服務。每個 Host 可以擁有多個監控項目(Item)、Trigger、圖表、Web Scenario 等。
Template#
Template 是用來把監控設定標準化套用到多個 Host 的機制。一個 Template 可以定義多個 Item、Trigger、圖表,當有多個相似的 Host 時,可直接套用同一個 Template;Template 更新時,所有套用它的 Host 都會自動更新。
除了內建 Template,還可以從 Monitoring and Integration Solutions 下載社群或廠商分享的 Template。
Group#
Group 用於分類 Host。一個 Host 可以屬於多個 Group,但至少要有一個。把性質相似的 Host 歸為同一 Group,可以方便管理與權限控制。
Web Scenario#
Web Scenario 模擬使用者實際操作 Web 服務的流程,可以做一連串 HTTP/HTTPS 請求並驗證回應,例如登入、點擊連結等,藉此監控 Web 服務從使用者角度看的可用性與效能。當流程出現異常時可即時告警。
Lab 摘要#
範例 12-zabbix 透過 Docker Compose 啟動:
docker-compose up -d啟動後需要做幾件前置設定:
- 進入 Zabbix Server Container 啟動 Zabbix Agent:
docker exec -it -u root zabbix-server-mysql /bin/bash
service zabbix-agent start- 進入 Grafana Container 安裝 Zabbix Data Source Plugin:
docker exec -it grafana /bin/bash
grafana-cli plugins install alexanderzobnin-zabbix-app- 重啟 Grafana 讓 Plugin 生效:
docker-compose restart grafana主要服務:
- FlaskAPI:
http://localhost:8000 - Zabbix:
http://localhost,預設帳密為Admin/zabbix(如果出現 DB 錯誤訊息,等待一段時間再試)。 - Grafana:
http://localhost:3000,預設admin/admin,可在 Explore 中切換為 Zabbix Data Source。
關閉:
docker-compose downLab 達成的目標:
- 建立 Zabbix 完整服務(Server、DB、Web)。
- 建立 Zabbix Agent Container 並連接 Zabbix Server,模擬監控 Linux 伺服器。
- 建立 FastAPI,並在 Zabbix Server 用 Web Scenario 監控其流程。
- Grafana 連接 Zabbix Data Source 統一呈現指標。
新增監控項目示意#
Zabbix Agent#
- 在 Monitoring 或 Data Collection 選單的 Hosts 頁籤中,點 Create host。
- 設定 Host name、Templates、Host groups;Interfaces 改用 DNS,DNS name 填
zabbix-agent。 - 完成後稍等,Hosts 頁籤中該 Host 的 Availability ICON 會變綠,代表 Server 已連上 Agent。
FastAPI Web Scenario#
- 同樣先 Create host,新增
fastapiHost,Host groups 選 Application。 - 進入 fastapi Host 的 Web 頁籤,點 Create web scenario。
- 設定 Web Scenario 的 Name 等基礎資訊。
- 在 Step 頁籤加入流程步驟(Name、URL、Required status codes 等),可加入多個 Step 模擬完整流程。
- 完成後,可於 Latest data 看到 Web Scenario 收集到的資料。
小結#
Zabbix 提供了從生成、收集、儲存到使用的完整監控解決方案。透過 Agent 與 Template 的搭配可以快速建立各式監控項目;當內建 Template 不夠用時,也能從整合中心找到社群或第三方提供的 Template 與相容工具。Web Scenario 進一步把監控延伸到「使用者操作流程」這個層次。
至此,本系列關於 Metrics 的工具與概念告一段落,接下來會進入 Logs 的世界。
原文出處#
- 原書/iThome:https://ithelp.ithome.com.tw/articles/10327855