目錄
簡介
一、監控系統基礎
1.1 監控的價值
1.2 監控的 5 大類型與 5 大層次
1.3 監控系統的實現原理
二、Zabbix:企業級監控方案
2.1 Zabbix 簡介
2.2 Zabbix 核心功能特性
2.3 Zabbix 角色與架構
三、Zabbix 部署案例
3.1 資源清單
3.2 基礎環境配置
(1)關閉防火墻
(2)關閉 SELinux
(3)時間同步
(4)修改主機名
3.3 部署 Zabbix Server
(1)添加 Zabbix 源
(2)安裝依賴軟件
(3)配置 MySQL 數據庫
(4)導入 Zabbix 初始數據
(5)配置 Zabbix Server
(6)配置 Nginx(Web 服務)
(7)啟動服務并設置自啟
3.4 Zabbix Web 界面配置
(1)訪問登錄頁面
(2)語言與許可協議
(3)環境檢查
(4)配置數據庫連接
(5)設置 Server 名稱與時區
(6)完成安裝
(7)登錄驗證
3.5 部署 Zabbix Proxy(分布式監控)
(1)添加 Zabbix 源(同 Server)
(2)安裝 Proxy 組件
(3)導入 Proxy 初始數據
(4)配置 Proxy
(5)啟動 Proxy 并設置自啟
(6)Web 界面添加 Proxy
3.6 部署 Zabbix Agent(被監控節點)
(1)添加 Zabbix 源(同 Server)
(2)安裝 Agent
(3)配置 Agent
(4)啟動 Agent 并設置自啟
(5)Web 界面添加主機
四、常見問題:解決 Zabbix 字體顯示亂碼
總結
簡介
在 IT 運維領域,監控系統如同 “千里眼” 與 “順風耳”,是保障業務穩定運行的核心支柱。據行業經驗,監控工作在運維環節中占比可達 30%,構建一套高效的監控告警系統更是運維工程師的核心能力。本文將從監控系統的基礎原理出發,講解 Zabbix 的功能特性,并完成 Zabbix 企業級分布式監控的部署與配置。
一、監控系統基礎
1.1 監控的價值
監控(Monitoring)的本質是 “檢測與預防”,通過對 IT 系統全鏈路的指標采集、分析與告警,提前發現潛在問題,避免故障擴散。在復雜的 IT 架構中,監控需覆蓋從底層硬件到上層業務的全棧場景。
1.2 監控的 5 大類型與 5 大層次
- 5 大監控類型:應用性能監控、業務交易監控、網絡性能監控、操作系統監控(文檔中列 4 項,實際涵蓋全場景)。
- 5 大邏輯層次(從底層到上層):
- 基礎設施監控:網絡設備(交換機、路由器)的流量、丟包率、連接數等,由運維負責,保障底層穩定性。
- 系統層監控:物理機 / 虛擬機 / 操作系統的 CPU 使用率、內存占用、磁盤 IO、網絡帶寬等核心指標。
- 應用層監控:接口響應時間、調用量、錯誤率、慢 SQL、緩存命中率等服務相關指標。
- 業務監控:用戶登錄、下單、支付等核心業務流程數據,為運營決策和戰略調整提供數據支撐。
- 端用戶體驗監控:用戶端(APP、H5、PC)的性能、錯誤碼、地域 / 運營商訪問情況等,直接反映用戶感知。
1.3 監控系統的實現原理
一個完整的監控系統需包含數據采集與數據處理(存儲、分析、告警、展示)?兩大部分,核心組件與工作模式如下:
- 采集協議:分為專用客戶端(如 Zabbix Agent)和公用協議(SNMP、IPMI、SSH、Telnet 等)。
- 工作模式:
- 被動模式:服務器主動向客戶端采集數據(對服務器開銷大,適合小規模場景)。
- 主動模式:客戶端主動向服務器上報數據(對服務器開銷小,適合大規模場景)。
- 代理架構:在大規模 / 跨地域場景中,通過 C/S/P(Client/Proxy/Server)架構分攤服務器壓力,支持分布式監控。
二、Zabbix:企業級監控方案
2.1 Zabbix 簡介
Zabbix 是一款開源的企業級分布式監控系統,支持從服務器、網絡設備到 Web 應用、數據庫的全場景監控。其優勢在于:
- 跨平臺適配:可運行于 Linux、Windows、AIX 等主流系統。
- 開源免費:基于 GPLv2 協議,源代碼公開可定制。
- 功能全面:覆蓋數據采集、告警、可視化、自動化等全流程。
2.2 Zabbix 核心功能特性
- 數據收集:支持 SNMP、IPMI、自定義檢測,可按自定義間隔采集數據,包含 Server、Proxy、Agent 三種角色。
- 靈活告警:通過 “觸發器(trigger)” 定義閾值,支持告警升級、多渠道通知(郵件、短信等),可結合宏變量自定義告警信息,甚至通過遠程命令實現自動化修復。
- 可視化與報告:內置實時繪圖、網絡拓撲圖、自定義面板,支持生成監控報告,助力數據可視化分析。
- 歷史數據管理:數據存儲于數據庫,支持配置保留周期,內置自動清理機制。
- 自動化能力:支持網絡設備自動發現、Agent 自動注冊、模板繼承(減少重復配置)。
- 高擴展性:通過 API 支持第三方集成,Agent 輕量可擴展,支持大規模分布式部署(Proxy 架構)。
2.3 Zabbix 角色與架構
Zabbix 采用分布式架構,核心角色包括:
- Zabbix Server:核心組件,負責接收、存儲、分析數據,觸發告警。
- Zabbix Proxy:代理節點,用于大規模場景,分攤 Server 壓力,支持跨網絡監控。
- Zabbix Agent:部署在被監控節點,負責采集本地數據(主動 / 被動模式)。
- Zabbix Web:基于 PHP 的 Web 界面,用于配置、管理和查看監控數據。
架構示意圖如下:
Client(Agent)<--> Proxy <--> Server(數據存儲/分析/告警)<--> Web界面
三、Zabbix 部署案例
3.1 資源清單
本次部署采用 4 臺 openEuler 24.03 主機,配置如下:
操作系統 | 配置 | 主機名 | IP 地址 | 角色 |
openEuler 24.03 | 2C4G | zabbix | 192.168.207.137 | Zabbix Server |
openEuler 24.03 | 2C4G | proxy | 192.168.207.138 | Zabbix Proxy |
openEuler 24.03 | 2C4G | server01 | 192.168.207.139 | 被監控節點 |
openEuler 24.03 | 2C4G | server02 | 192.168.207.140 | 被監控節點 |
3.2 基礎環境配置
所有節點需完成以下預處理(以 root 用戶操作):
(1)關閉防火墻
防火墻可能攔截 Zabbix 通信,需關閉并禁用自啟動:
systemctl stop firewalld # 臨時關閉防火墻
systemctl disable firewalld # 永久禁用防火墻(生產環境可按需配置規則)
(2)關閉 SELinux
SELinux 可能限制進程權限,臨時關閉并永久禁用:
setenforce 0 # 臨時關閉(立即生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久禁用(需重啟)
(3)時間同步
確保所有節點時間一致(避免日志與監控數據時間錯亂):
timedatectl set-timezone Asia/Shanghai # 設置時區為上海
chronyc sources -v # 同步時間(需安裝chrony:dnf install -y chrony)
(4)修改主機名
按資源清單設置主機名,便于識別角色:
# 在zabbix節點執行
hostnamectl set-hostname zabbix
# 在proxy節點執行
hostnamectl set-hostname proxy
# 在server01節點執行
hostnamectl set-hostname server01
# 在server02節點執行
hostnamectl set-hostname server02
3.3 部署 Zabbix Server
Zabbix Server 是核心節點,負責數據存儲與分析,需關聯數據庫(本次用 MySQL)。
(1)添加 Zabbix 源
Zabbix 官方源提供穩定版本,適用于 RHEL 系系統(openEuler 兼容):
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all # 清理緩存,確保源生效
(2)安裝依賴軟件
需安裝 Zabbix Server、Web 組件、MySQL 及 SNMP 庫:
# 安裝Zabbix Server核心組件
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# 安裝MySQL數據庫(Zabbix 6.4要求MySQL 8.0.30+)
dnf -y install mysql-server-8.0.41 mysql
# 安裝SNMP依賴(監控網絡設備需用到)
dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
(3)配置 MySQL 數據庫
Zabbix 需數據庫存儲監控數據,需創建庫、用戶并授權:
- 啟動 MySQL 并設置開機自啟:
systemctl enable mysqld --now # --now表示立即啟動
- 登錄 MySQL 并配置(默認無密碼,首次登錄直接回車):
mysql -uroot
- 執行 SQL 語句(設置 root 密碼、創建 Zabbix 庫和用戶):
-- 設置root本地登錄密碼(示例為123456,生產環境需復雜密碼)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES; # 刷新權限-- 創建Zabbix主數據庫(utf8mb4支持中文)
create database zabbix character set utf8mb4 collate utf8mb4_bin;
-- 創建Zabbix用戶(本地訪問)
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;-- 創建Proxy數據庫(若需部署Proxy)
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
-- 允許Zabbix用戶遠程訪問Proxy庫(Proxy需連接Server的數據庫)
create user zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
grant all privileges on zabbix_proxy.* to zabbix@'%';-- 允許創建存儲函數(導入數據時需要)
set global log_bin_trust_function_creators=1;
quit; # 退出MySQL
(4)導入 Zabbix 初始數據
Zabbix 提供預設 SQL 腳本,需導入主數據庫:
# 導入Server初始數據(輸入密碼zabbix)
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix# 導入完成后關閉存儲函數創建權限(安全加固)
mysql -uroot -p # 輸入root密碼123456
set global log_bin_trust_function_creators=0;
quit;
(5)配置 Zabbix Server
修改配置文件,關聯數據庫密碼:
vim /etc/zabbix/zabbix_server.conf
# 找到129行左右,取消注釋并設置數據庫密碼
DBPassword=zabbix # 與之前創建的zabbix用戶密碼一致
(6)配置 Nginx(Web 服務)
Zabbix Web 通過 Nginx 提供訪問,需設置監聽端口:
vim /etc/nginx/conf.d/zabbix.conf
# 找到并修改監聽端口(避免與其他服務沖突,示例用8080)
listen 8080;
server_name _; # 保持默認
(7)啟動服務并設置自啟
# 重啟相關服務
systemctl restart zabbix-server zabbix-agent nginx php-fpm
# 設置開機自啟
systemctl enable zabbix-server zabbix-agent nginx php-fpm
3.4 Zabbix Web 界面配置
通過 Web 界面完成 Zabbix 初始化,步驟如下:
(1)訪問登錄頁面
在瀏覽器輸入 Server 節點 IP + 端口:??http://192.168.207.137:8080/?
?
(2)語言與許可協議
選擇 “中文”(支持多語言),同意 GPLv2 許可協議,點擊 “下一步”。
(3)環境檢查
系統會自動檢測依賴(如 PHP 版本、數據庫驅動等),全部通過后點擊 “下一步”。
(4)配置數據庫連接
- 數據庫類型:MySQL
- 服務器:localhost(數據庫與 Server 同機)
- 端口:3306(MySQL 默認)
- 數據庫名:zabbix
- 用戶名:zabbix
- 密碼:zabbix(與之前配置一致)
點擊 “下一步”。
(5)設置 Server 名稱與時區
- Zabbix 主機名稱:保持默認(或自定義)
- 時區:選擇 “Asia/Shanghai”(上海時區)
點擊 “下一步”。
(6)完成安裝
確認配置無誤后,點擊 “下一步”,提示 “Zabbix 前端已配置好” 即完成。
(7)登錄驗證
默認賬號:??Admin?
??,默認密碼:??zabbix?
?(首次登錄建議修改密碼)。
3.5 部署 Zabbix Proxy(分布式監控)
Proxy 用于分擔 Server 壓力,適合大規模監控場景,部署步驟如下:
(1)添加 Zabbix 源(同 Server)
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
(2)安裝 Proxy 組件
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
# 安裝SNMP依賴(同Server)
dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
(3)導入 Proxy 初始數據
Proxy 數據需存儲在之前創建的??zabbix_proxy?
?庫(在 Proxy 節點執行):
# 輸入zabbix用戶密碼(zabbix)
zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137
(4)配置 Proxy
vim /etc/zabbix/zabbix_proxy.conf
# 修改以下參數:
Server=192.168.207.137 # 指向Zabbix Server的IP
Hostname=Zabbix proxy # 與Web添加時的名稱一致
DBHost=192.168.207.137 # 數據庫主機(Server節點IP)
DBPassword=zabbix # 數據庫密碼
(5)啟動 Proxy 并設置自啟
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
(6)Web 界面添加 Proxy
- 登錄 Zabbix Web,進入 “管理”→“Agent 代理程序”→“創建代理”
- 代理名稱:與?
?zabbix_proxy.conf?
??中??Hostname?
?一致(Zabbix proxy) - 代理類型:主動式(Proxy 主動向 Server 匯報)
- 點擊 “添加”。
3.6 部署 Zabbix Agent(被監控節點)
在被監控節點(server01、server02)部署 Agent,步驟如下:
(1)添加 Zabbix 源(同 Server)
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
(2)安裝 Agent
dnf -y install zabbix-agent
(3)配置 Agent
vim /etc/zabbix/zabbix_agentd.conf
# 修改以下參數:
Server=192.168.207.137 # 被動模式:允許哪個節點采集數據(Server或Proxy)
ServerActive=192.168.207.137 # 主動模式:向哪個節點上報數據(與Server一致)
Hostname=server01 # 與Web添加的主機名一致(server01節點用此名,server02改為server02)
(4)啟動 Agent 并設置自啟
systemctl start zabbix-agent
systemctl enable zabbix-agent
(5)Web 界面添加主機
- 進入 “數據采集”→“主機”→“創建主機”
- 主機名稱:與 Agent 配置的?
?Hostname?
?一致(如 server01) - 主機群組:選擇或創建(如 “Linux 服務器”)
- 接口:添加 “Agent”,IP 地址填寫被監控節點 IP(192.168.207.139)
- 模板:鏈接 “Template OS Linux by Zabbix agent”(系統自帶模板)
- (若通過 Proxy 監控)在 “由代理程序監測” 中選擇之前創建的 Proxy
- 點擊 “添加”。
四、常見問題:解決 Zabbix 字體顯示亂碼
默認情況下,Zabbix 圖表可能因缺少中文字體導致亂碼,解決方法如下:
- 查找字體配置:
# 查找字體路徑定義
grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
# 輸出:define('ZBX_FONTPATH', realpath('assets/fonts'));# 查找默認字體名稱
grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
# 輸出:define('ZBX_GRAPH_FONT_NAME', 'graphfont');
- 替換字體文件:
- 上傳中文字體文件(如微軟雅黑?
?msyh.ttc?
??)到??/usr/share/zabbix/assets/fonts/?
? - 創建軟鏈接替換默認字體:
cd /usr/share/zabbix/assets/fonts
ln -snf msyh.ttc graphfont.ttf # 讓系統識別為默認字體
- 刷新頁面:字體生效,中文正常顯示。
總結
Zabbix 作為企業級監控方案,憑借靈活的架構、豐富的功能和開源免費的優勢,被廣泛應用于各行業。本文從原理到實戰,詳細講解了 Zabbix 的部署流程,涵蓋 Server、Proxy、Agent 全組件。實際生產中,還可結合模板自定義、自動發現、告警升級等功能,進一步提升監控效率。
監控系統的核心價值不僅在于 “發現問題”,更在于 “預防問題”。通過 Zabbix 構建全鏈路監控體系,可為業務穩定運行提供堅實保障。