📊 Zabbix 7.0 實戰:結合 Grafana 打造企業級 IT 基礎設施與網路流量視覺化監控看板
在企業環境中,監控系統的價值不只是「有沒有告警」,而是能否把伺服器、網路設備、服務健康度、容量趨勢與事件脈絡,快速匯聚成可決策的視覺化看板。 本篇以 Zabbix 7.0 LTS 為核心監控平台,並結合 Grafana 的儀表板能力,建立一套可落地於 NOC / 值班流程的「企業級監控與網路流量可視化」實作範本。
🧭 目錄
- ✅ 為什麼選 Zabbix 7.0 + Grafana
- 🧱 企業級部署架構建議
- 🛠 Zabbix 7.0 LTS 部署實作(Server / DB / Frontend)
- 🧩 資料收集:Agent2 + SNMP 網路流量
- 📈 Grafana 整合:Zabbix Plugin + Data Source
- 📊 看板設計:KPI / 容量 / 流量(可直接套用的面板思路)
- 🚨 告警整合與值班 SOP 建議
- 🧰 維運:保留策略、效能、常見排錯
- 📎 參考資料(官方文件)
- 💬 互動留言引導
- 🔗 延伸閱讀
✅ 為什麼選 Zabbix 7.0 + Grafana
- Zabbix:模板化監控、事件/觸發器、告警、權限與資產模型成熟,適合做「監控中樞」。
- Grafana:儀表板呈現自由度高、適合跨團隊 KPI、管理層視角、容量預測與流量趨勢。
- Zabbix 7.0 LTS:以 LTS 做企業落地更穩健;Proxy 高可用、MFA 等特性更貼近企業需求(詳見官方 What's new 與生命週期政策)。
🧭 行動清單(你要完成什麼)
- 部署 Zabbix Server + DB + Frontend,確認可登入與收資料。
- 用 Agent2 監控主機健康度,用 SNMP 監控交換器/路由器介面流量。
- 在 Grafana 安裝 Zabbix Plugin,建立 Zabbix Data Source(必要時加 Direct DB)。
- 建立「企業級看板」:服務健康、容量趨勢、網路流量與告警視角。
🧱 企業級部署架構建議
建議以「分層」方式設計,避免所有採集都直打 Zabbix Server:
| 層級 | 元件 | 用途 | 重點 |
|---|---|---|---|
| 監控核心 | Zabbix Server + DB | 事件、觸發器、歷史/趨勢儲存 | DB IOPS、Housekeeper、分區/保留策略 |
| 邊緣採集 | Zabbix Proxy(可多台) | 跨站點、分段網路、降低核心壓力 | 站點隔離、緩衝、可用性設計 |
| 主機採集 | Zabbix Agent2 | CPU/RAM/Disk/Process/Service 等 | 主動/被動模式、TLS、模板標準化 |
| 網路採集 | SNMP(設備端) | 介面流量、錯誤、丟包、CPU/Memory | LLD、介面命名過濾、bps 計算 |
| 視覺化層 | Grafana + Zabbix Plugin | 儀表板、跨域視覺化 | API/Direct DB、面板標準、權限與資料隔離 |
🛠 Zabbix 7.0 LTS 部署實作(Server / DB / Frontend)
為降低版本踩雷,建議直接使用 Zabbix 官方下載頁產生對應 OS / DB / Web Server 的指令(最穩)。 以下以「Ubuntu 22.04 + PostgreSQL + Nginx(示意)」示範流程,實際指令請以官方頁面生成為準。
🧩 1) OS 前置準備(時間、DNS、套件、Firewall)
# 時間同步(務必)
timedatectl
sudo timedatectl set-timezone Asia/Taipei
# 基本工具
sudo apt update
sudo apt -y install curl wget gnupg lsb-release
# (範例)開放 Zabbix / Web 連線(依你的架構調整)
# 10051: Zabbix Server/Proxy
# 80/443: Web Frontend
sudo ufw allow 10051/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status
🧩 2) 安裝 Zabbix Server / Frontend
請至官方下載頁選擇:Zabbix 7.0 LTS、你的 OS、DB、Web Server,並複製安裝指令:
- 官方下載頁(7.0 LTS):https://www.zabbix.com/download?zabbix=7.0
安裝完成後,確認服務狀態:
# 服務名稱會依安裝選項不同而略有差異(例如 zabbix-server-pgsql / zabbix-server-mysql)
sudo systemctl status zabbix-server
sudo systemctl status nginx
sudo systemctl status php-fpm
# Log 排查
sudo journalctl -u zabbix-server -n 200 --no-pager
🧩 3) 初始化 DB 與 Zabbix Schema(概念流程)
若你用 PostgreSQL(概念示意):
# 建立 DB 與帳號(示意)
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
# 匯入 schema(實際路徑依套件而異)
# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
在 /etc/zabbix/zabbix_server.conf 設定 DB 連線(示意):
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=********
🧩 4) 前端初始化(Web Installer)
瀏覽器開啟你的 Zabbix URL(例如 https://zabbix.example.com),依精靈完成:
- 檢查 PHP 需求
- 填入 DB 連線
- 設定 Zabbix Server Name
🧩 資料收集:Agent2 + SNMP 網路流量
🧩 1) Zabbix Agent2 佈署(Linux 示意)
Agent2 與傳統 agent 的差異、支援面向(Docker / DB / systemd 等)可參考官方比較頁。
# 安裝(實際依你的 OS 與 repo 指令為準)
sudo apt update
sudo apt -y install zabbix-agent2
# 設定 Server / Proxy(擇一或並用)
sudo nano /etc/zabbix/zabbix_agent2.conf
# 啟動
sudo systemctl enable --now zabbix-agent2
sudo systemctl status zabbix-agent2
常見關鍵參數(示意):
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=host-01
# 建議:啟用 TLS(企業環境)
🧩 2) SNMP 監控網路設備(介面流量 In/Out)
最典型的網路流量看板,就是把交換器/路由器「每個介面」的 in/out bps、錯誤、丟包做趨勢化。建議做法:
- 在 Zabbix 建立 Host,新增 SNMP interface
- 套用通用模板或廠牌模板(例如 Generic by SNMP、Cisco/Juniper/HPE 等)
- 啟用 LLD(介面自動探索),並透過規則過濾不需要的介面(例如 lo、vlan、tunnel)
介面流量常見項目(概念):
ifInOctets / ifHCInOctets → 轉換為 bps
ifOutOctets / ifHCOutOctets → 轉換為 bps
ifInErrors / ifOutErrors
ifInDiscards / ifOutDiscards
📈 Grafana 整合:Zabbix Plugin + Data Source
🧩 1) 安裝 Grafana Zabbix Plugin
Grafana 端使用 Zabbix App(alexanderzobnin-zabbix-app)。常見作法:
# 方式 A:grafana-cli(視你的 Grafana 版本/環境而定)
sudo grafana-cli plugins install alexanderzobnin-zabbix-app
sudo systemctl restart grafana-server
在 Grafana UI:
- Plugins(或 Apps) → 找到 Zabbix → Enable
- Data sources → Add data source → 選 Zabbix
🧩 2) 建立 Zabbix Data Source(API 模式)
填入:
- Zabbix API URL:
https://zabbix.example.com/api_jsonrpc.php - User / Password:建議建立「只讀角色」的 API 帳號
- Trends / History:依你的資料保留策略調整查詢範圍
🧩 3)(進階)Direct DB:用 DB 直讀提升長時段/高頻看板效能
若你的 Grafana 看板很多、時間範圍很長、或查詢頻率高,建議使用 Direct DB 降低 Zabbix API 壓力:
-- 概念:建立只讀帳號(以 PostgreSQL 示意,實際權限需依 DB 版本調整)
-- 建議只授權必要表:history / history_uint / trends / trends_uint
-- 建立帳號
CREATE USER grafana_ro WITH PASSWORD 'CHANGE_ME';
-- 授權(示意)
GRANT CONNECT ON DATABASE zabbix TO grafana_ro;
GRANT USAGE ON SCHEMA public TO grafana_ro;
GRANT SELECT ON history, history_uint, trends, trends_uint TO grafana_ro;
Grafana 端再新增一個 PostgreSQL/MySQL Data Source,並在 Zabbix Data Source 內啟用 Direct DB(依 plugin 說明設定)。
📊 看板設計:KPI / 容量 / 流量(可直接套用的面板思路)
🧭 企業級「一頁總覽」建議分區
| 區塊 | 面板建議 | 目的 |
|---|---|---|
| 服務健康 | Problems(近 1h/24h)、Top triggers、SLA(若有) | 值班第一眼就能判斷是否進入事故模式 |
| 主機資源 | CPU/Load、Memory、Disk Usage、IOPS/Latency(若有) | 快速定位是否資源飽和 |
| 網路流量 | 核心介面 In/Out bps、錯誤/丟包、Top N 介面 | 判斷是否塞車、迴路、介面異常 |
| 容量趨勢 | 近 7/30/90 天趨勢(Trends)、預測線(可選) | 做容量規劃與採購依據 |
🧩 SNMP 介面流量面板(In/Out bps)設計要點
- 統一換算單位:bps / Mbps / Gbps。
- 同一面板同時呈現 In/Out,顏色與圖例一致。
- 用變數(Variables)做「站點/設備/介面」切換,讓 NOC 看板可重用。
- 針對多介面:做「Top N(最高流量)介面列表」,快速定位熱點。
🧭 行動清單:你可以先做出 3 個最有感面板
- Problems(近 1 小時):按嚴重度排序,直接當值班首頁。
- 核心交換器上行介面流量:In/Out bps + errors/discards。
- 關鍵服務主機資源:CPU/Memory/Disk 趨勢 + 閾值線。
🚨 告警整合與值班 SOP 建議
- 告警主控建議留在 Zabbix:觸發器、升級規則、維護期、關聯/抑制更完整。
- Grafana 用於「視覺化 + 事件輔助」:在看板上呈現 Problems、變數切換、關聯圖表。
- 值班 SOP 建議:告警 → 連到 Grafana 看板(同設備/同介面/同時間窗)→ 再回到 Zabbix 查事件細節。
🧰 維運:保留策略、效能、常見排錯
🧩 1) History / Trends 保留策略
- History(高精度):保留較短(例如 7~30 天)。
- Trends(彙總):保留較長(例如 180~365 天以上)。
- 大量時序資料請關注 DB I/O 與分區策略(大型環境建議規劃)。
🧩 2) 常見問題排查
# Server 服務狀態
sudo systemctl status zabbix-server
sudo journalctl -u zabbix-server -n 200 --no-pager
# Agent2 服務狀態
sudo systemctl status zabbix-agent2
sudo journalctl -u zabbix-agent2 -n 200 --no-pager
# 前端 PHP / Web
sudo systemctl status nginx
sudo journalctl -u nginx -n 200 --no-pager
- Grafana 面板無資料:先確認 Zabbix 該 Item 在 Zabbix 端是否有最新值;再檢查 Grafana Data Source 是否連到正確 API URL;最後檢查 Grafana 時間範圍與時區。
- SNMP 無資料:確認 SNMP 版本/Community(或 v3)、ACL、Firewall;必要時在 Zabbix Server/Proxy 上用 snmpwalk 驗證。
- 大量面板查詢很慢:優先啟用 Trends、縮小時間窗、或導入 Direct DB。
📎 參考資料(官方文件)
- Zabbix 7.0 LTS What's new:https://www.zabbix.com/whats_new_7_0
- Zabbix Life cycle & Release policy:https://www.zabbix.com/life_cycle_and_release_policy
- Zabbix 官方下載頁(產生安裝指令):https://www.zabbix.com/download?zabbix=7.0
- Grafana Zabbix Plugin(Configuration):https://grafana.com/docs/plugins/alexanderzobnin-zabbix-app/latest/configuration/
- Grafana Zabbix Plugin(Direct DB):https://grafana.com/docs/plugins/alexanderzobnin-zabbix-app/latest/configuration/direct-db-datasource/
💬 互動留言引導
若你正在導入 Zabbix / Grafana,歡迎在留言區分享你的環境與遇到的問題,我可以用「可直接落地」的方式協助你排除與優化:
- 你的 OS / Zabbix 版本 / DB(MySQL 或 PostgreSQL)/ Web Server(Nginx 或 Apache)
- 目前採集方式:Agent2 / SNMP / Proxy(有無跨站點)
- 你想做的看板:核心流量、Top N 介面、服務健康、容量趨勢、SLA 等
- 你卡住的點:無資料、查詢很慢、SNMP 探不到、告警太多、值班流程不順等
沒有留言: