熱門分類
載入中…
目錄0%

📊 Zabbix 7.0 實戰:結合 Grafana 打造企業級 IT 基礎設施與網路流量視覺化監控看板

    📊 Zabbix 7.0 實戰:結合 Grafana 打造企業級 IT 基礎設施與網路流量視覺化監控看板

    在企業環境中,監控系統的價值不只是「有沒有告警」,而是能否把伺服器、網路設備、服務健康度、容量趨勢與事件脈絡,快速匯聚成可決策的視覺化看板。 本篇以 Zabbix 7.0 LTS 為核心監控平台,並結合 Grafana 的儀表板能力,建立一套可落地於 NOC / 值班流程的「企業級監控與網路流量可視化」實作範本。


    🧭 目錄


    ✅ 為什麼選 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,並複製安裝指令:

    安裝完成後,確認服務狀態:

    # 服務名稱會依安裝選項不同而略有差異(例如 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 URLhttps://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 個最有感面板
    1. Problems(近 1 小時):按嚴重度排序,直接當值班首頁。
    2. 核心交換器上行介面流量:In/Out bps + errors/discards。
    3. 關鍵服務主機資源: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 / Grafana,歡迎在留言區分享你的環境與遇到的問題,我可以用「可直接落地」的方式協助你排除與優化:

    • 你的 OS / Zabbix 版本 / DB(MySQL 或 PostgreSQL)/ Web Server(Nginx 或 Apache)
    • 目前採集方式:Agent2 / SNMP / Proxy(有無跨站點)
    • 你想做的看板:核心流量、Top N 介面、服務健康、容量趨勢、SLA 等
    • 你卡住的點:無資料、查詢很慢、SNMP 探不到、告警太多、值班流程不順等

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級