部署 Zabbix 企业级分布式监控
目录
一、监控系统的功能概述
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数据采集可以分为两种:专用客户端采集和公用协议采集。
3、监控模式
监控系统数据采集的工作模式可以分为被动模式和主动模式。被动模式指的是服务器端到客户端采集数据;主动模式是客户端主动上报数据到服务器。
4、代理架构
- 适用场景:大规模监控环境,被监控节点多、监控类型多,数据和网络连接开销大。
- 作用:分摊服务器端性能开销,支持跨地域、跨网络分布式监控。
- 常见架构:C/S/P 架构(Client/Proxy/Server)。
三、监控系统的开源产品
四、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、资源清单
2、基础环境配置(所有节点)
关闭防火墙
systemctl stop firewalldsystemctl disable firewalld
关闭 SELinux
setenforce 0sed -i \'s/^SELINUX=.*/SELINUX=disabled/\' /etc/selinux/config
修改主机名
01hostnamectl set-hostname server01bash02hostnamectl set-hostname server02bash03hostnamectl set-hostname proxybash04hostnamectl set-hostname zabbixbash
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.rpmdnf clean all
安装软件包
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agentdnf -y install mysqldnf -y install mysql-server-8.0.41dnf -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 mysqldsystemctl enable mysqldmysql -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 -pEnter 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.rpmdnf clean all
安装软件包
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysqldnf -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 -p123456set 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.104Enter password: zabbix
Zabbix Server 节点执行(04):mysql -uroot -p123456set 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-proxysystemctl 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.rpmdnf clean all
安装软件包
dnf -y install zabbix-agent
配置 Agent:修改/etc/zabbix/zabbix_agentd.conf
文件
Server=192.168.10.104 #上报目标 IP,Server 或 Proxy 的 IPServerActive=192.168.10.104 #通常与 Server 行配置一致Hostname=server01 #需与 Server 端 Web 页面主机名称一致,可自定义
启动服务
systemctl start zabbix-agentsystemctl 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.rpmdnf clean alldnf -y install zabbix-agentvim /etc/zabbix/zabbix_agentd.confServer=192.168.10.103ServerActive=192.168.10.103Hostname=server02systemctl start zabbix-agentsystemctl 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.phpdefine(\'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.phpdefine(\'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]# lsgraphfont.ttf msyh1.ttc[root@zabbix fonts]# ln -snf msyh1.ttc graphfont.ttf
- 备注:
-s
表示创建软连接;-f
表示强行删除已存在目标文件;-n
表示把符号连接的目的目录视为一般文件。 - 操作后刷新页面观察效果。