目录
[四、Zabbix 系统概述](#四、Zabbix 系统概述)
[1、初识 Zabbix](#1、初识 Zabbix)
[2、Zabbix 的功能特性](#2、Zabbix 的功能特性)
[3、Zabbix 角色及架构](#3、Zabbix 角色及架构)
[3、部署 Zabbix Server(04)](#3、部署 Zabbix Server(04))
[4、Zabbix 页面配置](#4、Zabbix 页面配置)
[5、部署 Proxy(03)](#5、部署 Proxy(03))
[6、部署 Agent](#6、部署 Agent)
一、监控系统的功能概述
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
bash
02
hostnamectl set-hostname server02
bash
03
hostnamectl set-hostname proxy
bash
04
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-agent
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.103
ServerActive=192.168.10.103
Hostname=server02
systemctl 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
表示把符号连接的目的目录视为一般文件。 - 操作后刷新页面观察效果。