目錄
一、監控系統的功能概述
1、監控的定義
2、監控的五個層次
(1)基礎設施監控
(2)系統層監控
(3)應用層監控
(4)業務監控
(5)端用戶體驗監控
二、監控系統的實現原理
1、模塊組成
2、采集協議
3、監控模式
4、代理架構
三、監控系統的開源產品
四、Zabbix 系統概述
1、初識 Zabbix
2、Zabbix 的功能特性
3、Zabbix 角色及架構
五、部署流程
1、資源清單
2、基礎環境配置(所有節點)
3、部署 Zabbix Server(04)
4、Zabbix 頁面配置
5、部署 Proxy(03)
6、部署 Agent
?編輯
7、擴展:解決圖像字體顯示問題
一、監控系統的功能概述
1、監控的定義
監控在中文字義上包含 “檢測” 和 “預防”,對應英文 “Monitoring”。在計算機領域,監控可劃分為 5 種類型:
- 應用性能監控
- 業務交易監控
- 網絡性能監控
- 操作系統監控
- 網絡站點監控
2、監控的五個層次
(1)基礎設施監控
- 負責人員:運維人員。
- 監控對象:網絡、交換機、路由器等低層硬件設備。
- 核心指標:網絡流量、丟包情況、錯包情況、連接數等。
- 重要性:設備可靠性直接影響上層服務應用穩定性。
(2)系統層監控
- 涵蓋對象:物理機、虛擬機、操作系統等。
- 核心指標:CPU 使用率、內存占用率、磁盤 IO、網絡帶寬情況。
(3)應用層監控
- 關聯對象:與服務緊密相關,涉及 URL 訪問、服務性能、SQL、Cache 等。
- 監控指標:URL 訪問性能、調用數、延遲;服務錯誤率;慢 SQL;緩存命中率、性能;服務響應時間等。
(4)業務監控
- 定義:針對直接影響業務交易的關鍵環節。
- 示例(交易網站):用戶登錄、注冊、下單、支付情況等。
- 作用:為運營和高管提供數據支持,輔助戰略決策。
(5)端用戶體驗監控
- 監控對象:用戶通過 app、h5、pc 端使用應用程序的體驗。
- 監控內容:用戶端性能、返回碼;用戶所在城市地區、運營商情況;接入渠道問題;客戶端操作系統及瀏覽器版本等。
- 重要性:及時感知因 BUG 或性能問題導致的用戶體驗差問題。
二、監控系統的實現原理
1、模塊組成
監控系統基本模型由兩部分構成:
- 數據采集部分
- 數據存儲、分析告警、展示部分
2、采集協議
按照支持的協議方式,監控 IT數據采集可以分為兩種:專用客戶端采集和公用協議采集。
分類 | 包含內容 |
---|---|
專用客戶端采集 | 私有協議、專有客戶端 |
公用協議采集 | SNMP、IPMI、SSH、Telnet |
3、監控模式
?監控系統數據采集的工作模式可以分為被動模式和主動模式。被動模式指的是服務器端到客戶端采集數據;主動模式是客戶端主動上報數據到服務器。
模式 | 數據流向 | 適用場景 | 服務端負載 |
---|---|---|---|
主動模式 | Agent → Server | 大規模分布式環境 | 低 |
被動模式 | Server → Agent | 小規模集中式環境 | 高 |
4、代理架構
- 適用場景:大規模監控環境,被監控節點多、監控類型多,數據和網絡連接開銷大。
- 作用:分攤服務器端性能開銷,支持跨地域、跨網絡分布式監控。
- 常見架構:C/S/P 架構(Client/Proxy/Server)。
三、監控系統的開源產品
產品名稱 | 特點及功能 |
---|---|
Zabbix | 企業級運維監控平臺,支持監控服務器、網絡設備、Web 應用等;適配多系統(Linux、AIX、Windows 等);基于 GPLv2 許可證,開源免費。 |
Prometheus+Grafana | Prometheus 為開源系統監控和警報工具包,主要監控基礎設施(服務器、數據庫、Web 服務等)。 |
Cacti | 網絡流量監測圖形分析工具,連接 RRDToo1 生成網絡數據圖表;具備強大數據和用戶管理功能,支持與 LDAP 結合驗證,可自定義模板。 |
Nagios | 監控系統運行狀態和網絡信息,支持監控本地 / 遠程主機及服務,提供異常通知;可監控網絡協議、操作系統、應用程序等多種組件。 |
Checkmk | 高可擴展監控工具,支持服務器、網絡、資產等監控;分基礎版(開源免費無限制)和企業版(附加功能);部署快、自動化程度高、配置靈活。 |
OpenNMS | 企業級基于 Java/XML 的分布式監控平臺,顯示網絡終端和服務器狀態配置;專為 Linux 設計,支持多系統;可通過 JMX、WMI、SNMP 等多種協議收集指標。 |
Netdata | Linux 性能實時監測工具,支持 Linux 系統、應用程序、SNMP 服務等實時監控;運行于物理機、虛擬機等多種設備;監控指標多、收集速度快,支持數萬指標并發監控。 |
LibreNMS | 開源網絡監控系統,易安裝配置,支持多平臺;功能廣泛(協議支持、性能監控、警報等);支持多供應商設備及協議,可自動發現網絡。 |
四、Zabbix 系統概述
1、初識 Zabbix
- 定義:企業級分布式開源監控系統解決方案,基于 Web 界面提供分布式系統及網絡監控功能。
- 開發者:由 Alexei Vladishev 創建,目前由 Zabbix SIA 主導開發和支持。
- 監控對象:網絡參數、服務器、虛擬機、應用程序、服務、數據庫、網站、云等的健康和完整性。
- 核心功能:靈活通知機制(電子郵件告警)、報告和數據可視化(支持容量規劃)、支持輪詢和 trapping、Web 前端訪問、免費開源(GPLv2 許可證)。
2、Zabbix 的功能特性
- 數據收集:支持可用性及性能檢測;兼容 SNMP、IPM、MX 監控;支持自定義檢測和間隔收集數據;包含 Server、Proxy、Agent 三種角色。
- 靈活的閾值定義:自定義問題閥值(觸發器),存儲于后端數據庫。
- 高級告警配置:支持告警升級、自定義接收者及方式;告警信息可配置,支持宏變量;通過遠程命令實現自動化動作。
- 實時繪圖:內置繪圖方法實現監控數據實時繪圖。
- 擴展的圖形化顯示:支持自定義多監控項視圖;生成網絡拓撲、自定義面板和幻燈片(支持 dashboard 顯示);生成監控報告。
- 歷史數據存儲:數據存儲于數據庫;歷史數據可配置;內置數據清理機制。
- 配置簡單:一次配置長期監控(除非調整或刪除);支持通過模板添加監控設備。
- 模板使用:模板可添加組監控;支持繼承。
- 網絡自動發現:自動發現網絡設備、Agent 自動注冊;自動發現文件系統、網卡設備、SNMP OID 等。
- 快速的 Web 接口:Web 前端基于 PHP 編寫,訪問無障礙。
- Zabbix API:提供程序級訪問接口,方便第三方程序接入。
- 權限系統:安全權限認證;用戶可限制允許維護的列表。
- 全特性、Agent 易擴展:可部署于監控目標;支持 Linux 及 Windows。
- 二進制守護進程:C 語言開發,高性能、低內存消耗;易移植。
- 應對復雜環境:通過 Zabbix Proxy 實現遠程監控。
3、Zabbix 角色及架構
- Zabbix Server:服務端守護進程,接收 Zabbix Agentd、Zabbix Proxy 提交的數據,也可主動獲取數據。
- Zabbix Agent:客戶端守護進程,負責收集客戶端數據(如 CPU 負載、內存、硬盤使用情況等)。
- Zabbix Proxy:代理守護進程,功能類似 Server,作為中轉站將收集的數據提交給 Server。
- Zabbix Web:Web 界面,管理員通過其管理配置和查看監控信息,可與 Server 同機或獨立部署。
- 整體架構:包含監控客戶端(Zabbix Agent)、監控代理服務器(Zabbix Proxy)、監控服務器(Zabbix Server)及前端界面(PHP 編寫);支持主動 / 被動模式,涉及端口 10050(Agent)、10051(Server/Proxy)、80(Web);數據庫支持 MySQL、Oracle、PostgreSQL、SQLite 等;支持無 Agent 監控(通過 Telnet、SNMP、IPMI、SSH 等)。
五、部署流程
1、資源清單
操作系統 | 配置 | 主機名 | IP 地址 | 角色 |
---|---|---|---|---|
openEuler 24.03 | 2C4G | server01(01) | 192.168.10.101 | Zabbix 服務端 |
openEuler 24.03 | 2C4G | server02(02) | 192.168.10.102 | Zabbix proxy |
openEuler 24.03 | 2C4G | proxy(03) | 192.168.10.103 | 被監控節點 |
openEuler 24.03 | 2C4G | zabbix(04) | 192.168.10.104 | 被監控節點 |
2、基礎環境配置(所有節點)
關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
關閉 SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
修改主機名
01
hostnamectl set-hostname server01
bash02
hostnamectl set-hostname server02
bash03
hostnamectl set-hostname proxy
bash04
hostnamectl set-hostname zabbix
bash
3、部署 Zabbix Server(04)
添加 Zabbix 源
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
安裝軟件包
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
dnf -y install mysql
dnf -y install mysql-server-8.0.41
dnf -y install https://w.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
備注:Zabbix 6.4.8 要求軟件版本:
MySQL 8.0.30-8.1.X、MariaDB 10.5.00-11.1.X、Nginx 1.20 或更高、PHP 7.4.0-8.2.X。
配置數據庫
systemctl start mysqld
systemctl enable mysqld
mysql -uroot
執行 SQL 語句:
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
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;
導入數據
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
[root@zabbix ~]# mysql -uroot -p
Enter password: 123456
執行 SQL 語句:
set global log_bin_trust_function_creators= 0;
quit;
配置 Zabbix Server
修改/etc/zabbix/zabbix_server.conf
文件,
#在大約 129 行取消注釋并修改密碼
DBPassword=zabbix。
配置 Zabbix 頁面
修改/etc/nginx/conf.d/zabbix.conf
文件,
#取消注釋
server {listen 8080;server_name _;
啟動服務
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
4、Zabbix 頁面配置
登錄 Zabbix:訪問http://192.168.10.104:8080/
設置語言:選擇合適語言(如中文)。
檢查環境:通過 “檢查必要條件” 頁面確認環境是否滿足。
配置數據庫連接:按頁面提示填寫數據庫連接信息。
主機名設置:保持默認即可,確認時區(系統默認 UTC+0000,可根據需求調整)。
安裝前匯總:檢查配置參數,無誤后點擊 “下一步”。
完成安裝:提示 “Zabbix 前端已經配置好了” 即完成。
登錄:默認賬號Admin
,默認密碼zabbix
。
5、部署 Proxy(03)
添加 Zabbix 源
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
安裝軟件包
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
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
導入數據
Zabbix Server 節點執行(04):
mysql -uroot -p123456
set global log_bin_trust_function_creators=1;
exit
Proxy 節點執行(IP 地址修改為 Zabbix Server 的 IP)(03):
[root@proxy ~]# cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.10.104
Enter password: zabbix
Zabbix Server 節點執行(04):
mysql -uroot -p123456
set global log_bin_trust_function_creators=0;
exit
配置 Zabbix Proxy:修改/etc/zabbix/zabbix_proxy.conf
文件
Server=192.168.10.104 #32行,Zabbix Server 節點 IP。
Hostname=Zabbix proxy #42行,后續 Web 頁面添加時需保持一致,可默認不修改。
DBHost=192.168.10.104 #157行,Zabbix Server 節點 IP。
DBPassword=zabbix #194行,數據庫密碼。
啟動服務
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
Web 頁面添加 Proxy:路徑為 “管理 -->Proxy--> 創建 agent 代理”,選擇主動式(默認)。
6、部署 Agent
添加 Zabbix 源
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
安裝軟件包
dnf -y install zabbix-agent
配置 Agent:修改/etc/zabbix/zabbix_agentd.conf
文件
Server=192.168.10.104 #上報目標 IP,Server 或 Proxy 的 IP
ServerActive=192.168.10.104 #通常與 Server 行配置一致
Hostname=server01 #需與 Server 端 Web 頁面主機名稱一致,可自定義
啟動服務
systemctl start zabbix-agent
systemctl enable zabbix-agent
添加主機
- 路徑:“數據采集 -- 主機 -> 創建主機”。
- 配置項:主機名稱(與 Agent 配置文件中 Hostname 一致);
- 選擇模板(可使用自帶或自定義模板);
- 選擇主機群組(已有或新建);
- 添加接口Agent節點(填寫被監控節點 IP)。
通過 Proxy 上報:步驟類似直接添加主機,需選擇之前創建的 Proxy。
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
dnf -y install zabbix-agentvim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.103
ServerActive=192.168.10.103
Hostname=server02systemctl start zabbix-agent
systemctl enable zabbix-agent
注:不要忘記將server02添加到proxy,然后應用
7、擴展:解決圖像字體顯示問題
查找 Zabbix 定義字體的 PHP 文件
[root@zabbix ~]# find / -name defines.inc.php
/usr/share/zabbix/include/defines.inc.php
查看 Zabbix 字體文件中用的字體
[root@zabbix~]# grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
define('ZBX_FONTPATH', realpath('assets/fonts'));//where to search for font(GD>2.0.18)
[root@zabbix~]# grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME','graphfont');//fontfile name
查找 Zabbix 的字體文件位置
[root@zabbix ~]# find / -name graphfont.ttf
/usr/share/zabbix/assets/fonts/graphfont.ttf
替換字體
# 上傳msyhl.ttc文件到/usr/share/zabbix/assets/fonts目錄
[root@zabbix ~]# cd /usr/share/zabbix/assets/fonts
[root@zabbix fonts]# ls
graphfont.ttf msyh1.ttc
[root@zabbix fonts]# ln -snf msyh1.ttc graphfont.ttf
- 備注:
-s
表示創建軟連接;-f
表示強行刪除已存在目標文件;-n
表示把符號連接的目的目錄視為一般文件。 - 操作后刷新頁面觀察效果。