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 down

Lab 達成的目標:

  • 建立 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,新增 fastapi Host,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