Zabbix企业级分布式监控

目录

一、zabbix监控系统

[1.1 监控的五大核心类型](#1.1 监控的五大核心类型)

[1.2 监控的五层逻辑架构](#1.2 监控的五层逻辑架构)

(1)基础设施监控

(2)系统层监控

(3)应用层监控

(4)业务监控

(5)端用户体验监控

二、监控系统的技术原理

[2.1 监控系统的核心模块](#2.1 监控系统的核心模块)

[2.2 数据采集协议分类](#2.2 数据采集协议分类)

[2.3 数据采集模式](#2.3 数据采集模式)

(1)被动模式

(2)主动模式

[2.4 分布式代理架构](#2.4 分布式代理架构)

三、主流开源监控系统对比

[3.1 Zabbix](#3.1 Zabbix)

[3.2 Prometheus+Grafana](#3.2 Prometheus+Grafana)

[3.3 Nagios](#3.3 Nagios)

[3.4 Cacti](#3.4 Cacti)

[3.5 其他工具](#3.5 其他工具)

[四、Zabbix 系统深度解析](#四、Zabbix 系统深度解析)

[4.1 Zabbix 简介](#4.1 Zabbix 简介)

[4.2 Zabbix 核心功能特性](#4.2 Zabbix 核心功能特性)

(1)数据收集

(2)阈值管理与告警

(3)可视化与报表

(4)配置管理

(5)扩展性

[4.3 Zabbix 架构组件](#4.3 Zabbix 架构组件)

[(1)Zabbix Server](#(1)Zabbix Server)

[(2)Zabbix Agent](#(2)Zabbix Agent)

[(3)Zabbix Proxy](#(3)Zabbix Proxy)

[(4)Zabbix Web](#(4)Zabbix Web)

(5)数据库

[五、Zabbix 企业级部署实战(基于 openEuler 24.03)](#五、Zabbix 企业级部署实战(基于 openEuler 24.03))

[5.1 环境准备](#5.1 环境准备)

(1)节点规划

(2)基础环境配置(所有节点执行)

[① 关闭防火墙](#① 关闭防火墙)

[② 关闭 SELinux](#② 关闭 SELinux)

[③ 时间同步](#③ 时间同步)

[④ 修改主机名](#④ 修改主机名)

[⑤ 配置 hosts 解析](#⑤ 配置 hosts 解析)

[5.2 部署 Zabbix Server](#5.2 部署 Zabbix Server)

[(1)添加 Zabbix 官方源](#(1)添加 Zabbix 官方源)

(2)安装依赖包及组件

[(3)配置 MySQL 数据库](#(3)配置 MySQL 数据库)

[① 启动 MySQL 并设置开机自启](#① 启动 MySQL 并设置开机自启)

[② 初始化数据库配置](#② 初始化数据库配置)

[(4)导入 Zabbix 初始化数据](#(4)导入 Zabbix 初始化数据)

[(5)配置 Zabbix Server](#(5)配置 Zabbix Server)

[(6)配置 Web 界面(Nginx)](#(6)配置 Web 界面(Nginx))

(7)启动服务并设置开机自启

[5.3 Zabbix Web 界面初始化配置](#5.3 Zabbix Web 界面初始化配置)

[(1)访问 Web 界面](#(1)访问 Web 界面)

(2)初始化配置步骤

[① 欢迎页面](#① 欢迎页面)

[② 环境检查](#② 环境检查)

[③ 数据库配置](#③ 数据库配置)

[④ Server 设置](#④ Server 设置)

[⑤ 安装汇总](#⑤ 安装汇总)

[⑥ 登录界面](#⑥ 登录界面)

(3)首次登录后配置

[5.4 部署 Zabbix Proxy](#5.4 部署 Zabbix Proxy)

[(1)添加 Zabbix 源(同 Server 节点)](#(1)添加 Zabbix 源(同 Server 节点))

[(2)安装 Proxy 组件](#(2)安装 Proxy 组件)

[(3)导入 Proxy 数据库初始化数据](#(3)导入 Proxy 数据库初始化数据)

[(4)配置 Zabbix Proxy](#(4)配置 Zabbix Proxy)

[(5)启动 Proxy 服务](#(5)启动 Proxy 服务)

[(6)在 Web 界面添加 Proxy](#(6)在 Web 界面添加 Proxy)

[5.5 部署 Zabbix Agent(被监控节点)](#5.5 部署 Zabbix Agent(被监控节点))

[(1)添加 Zabbix 源](#(1)添加 Zabbix 源)

[(2)安装 Zabbix Agent](#(2)安装 Zabbix Agent)

[(3)配置 Agent](#(3)配置 Agent)

[(4)启动 Agent 服务](#(4)启动 Agent 服务)

[(5)在 Web 界面添加被监控主机](#(5)在 Web 界面添加被监控主机)

一、zabbix监控系统

1.1 监控的五大核心类型

  • 应用性能监控:聚焦应用程序的响应时间、吞吐量、错误率等指标,如 API 接口调用延迟、JVM 内存占用等
  • 业务交易监控:跟踪核心业务流程的完成情况,如电商平台的下单转化率、支付成功率
  • 网络性能监控:监测网络设备的带宽利用率、丢包率、延迟等指标,保障数据传输通畅
  • 操作系统监控:覆盖服务器的 CPU、内存、磁盘 I/O 等基础资源状态
  • 数据库监控:关注数据库连接数、慢查询、锁等待等关键指标

1.2 监控的五层逻辑架构

从逻辑层次划分,监控可分为由下至上的五个层级,形成完整的监控体系:

(1)基础设施监控

基础设施监控是整个监控体系的基石,主要面向网络设备(交换机、路由器、防火墙)、物理机房环境(温度、湿度、电源)等底层设施。核心监控指标包括:

  • 网络接口流量(流入 / 流出速率、总带宽利用率)
  • 网络质量(丢包率、错包率、平均延迟)
  • 设备状态(端口 UP/DOWN、CPU 负载、内存使用率)

这类监控通常由运维团队负责,直接影响上层服务的稳定性。例如,核心交换机端口故障可能导致整个业务网段瘫痪,因此需配置实时告警。

(2)系统层监控

系统层监控覆盖物理机、虚拟机及操作系统,是最基础也是应用最广泛的监控类型。主要监控指标包括:

  • CPU:使用率、负载均衡指数(1 分钟 / 5 分钟 / 15 分钟)、上下文切换频率
  • 内存:总容量、已使用 / 空闲 / 缓存内存占比、Swap 交换分区使用率
  • 磁盘:分区使用率、I/O 吞吐量(读 / 写速度)、IOPS、磁盘队列长度
  • 网络:网卡流量、连接数(ESTABLISHED/TIME_WAIT 状态占比)
(3)应用层监控

应用层监控与业务服务紧密相关,需结合具体应用类型定制监控方案。典型监控对象包括:

  • Web 服务:HTTP 响应码(4xx/5xx 错误占比)、页面加载时间、并发请求数
  • 中间件:Tomcat/Jetty 的线程池状态、连接池利用率、JVM 垃圾回收频率
  • 数据库:SQL 执行效率(慢查询数量)、事务提交 / 回滚率、锁等待时间
  • 缓存系统:Redis/Memcached 的命中率、内存碎片率、键过期数量
(4)业务监控

业务监控聚焦核心业务流程,直接反映业务运营状态,是企业管理层最关注的监控维度。以电商平台为例,关键监控指标包括:

  • 用户行为:注册量、登录次数、活跃用户数
  • 交易流程:商品浏览量(PV/UV)、加入购物车次数、下单量、支付成功率
  • 业务转化:各环节转化率(浏览→下单→支付)、客单价、复购率

业务监控数据通常通过埋点采集,可直观展示业务健康度,为运营决策提供依据。

(5)端用户体验监控

端用户体验监控从最终用户视角出发,跟踪应用在用户侧的实际表现。核心监控内容包括:

  • 页面加载性能(首屏加载时间、DOM 渲染完成时间)
  • 终端错误信息(JS 报错、资源加载失败)
  • 地域与运营商差异(不同地区 / 运营商的访问延迟)
  • 终端环境(浏览器版本、操作系统、设备类型)

通过这类监控,可及时发现特定用户群体面临的体验问题,例如某地区联通用户访问缓慢。

二、监控系统的技术原理

2.1 监控系统的核心模块

任何监控系统都离不开两大核心模块,共同构成数据处理闭环:

  • 数据采集层:通过 Agent、探针或协议对接方式收集监控指标
  • 数据处理层:包括数据存储(数据库)、分析引擎(指标计算)、告警系统(阈值判断)、可视化展示(图表界面)

2.2 数据采集协议分类

监控系统的数据采集协议可分为私有协议和公有协议两类:

协议类型 典型实现 适用场景
私有协议 Zabbix Agent、Prometheus Exporter 深度定制化监控,需安装专用客户端
公有协议 SNMP、IPMI、SSH、Telnet 通用设备监控(如网络设备、服务器),无需安装客户端
  • SNMP(简单网络管理协议):广泛用于网络设备监控,通过 OID 标识具体监控项,支持 v1/v2c/v3 三个版本(v3 支持加密认证)
  • IPMI(智能平台管理接口):用于监控服务器硬件状态(如风扇转速、温度、电源状态),无需依赖操作系统
  • SSH/Telnet:通过远程命令执行获取监控数据,适合无 Agent 场景

2.3 数据采集模式

监控系统的数据采集分为两种模式,各有适用场景:

(1)被动模式
  • 工作原理:监控服务器主动向被监控端发起请求,获取监控数据
  • 优势:架构简单,服务器端可集中控制采集频率
  • 劣势:服务器压力随被监控节点增加而线性增长,不适合大规模集群
  • 适用场景:小规模环境(节点数 < 100),如小型机房
(2)主动模式
  • 工作原理:被监控端主动向服务器上报监控数据,无需服务器轮询
  • 优势:降低服务器压力,支持大规模监控
  • 劣势:需在被监控端配置上报策略,管理相对复杂
  • 适用场景:大型分布式环境(节点数 > 100),如云计算平台

2.4 分布式代理架构

在超大规模监控场景(如上万节点),单靠主动模式仍难以应对,需引入代理架构(C/S/P 架构:Client/Proxy/Server):

  • Agent(客户端):部署在被监控节点,负责采集本地数据
  • Proxy(代理服务器):汇总区域内 Agent 的数据,进行初步处理后转发给 Server
  • Server(服务器):集中存储、分析所有 Proxy 转发的数据

代理架构的优势:

  • 减轻 Server 压力,实现负载分担
  • 支持跨网段监控(如多机房场景)
  • 减少网络流量(Proxy 可本地聚合数据)

三、主流开源监控系统对比

目前开源监控工具种类繁多,各具特色,选择时需结合业务需求:

3.1 Zabbix

  • 特点:企业级分布式监控解决方案,支持多维度监控(服务器、网络、应用),提供完善的告警机制和可视化能力
  • 优势
    • 支持多种采集方式(Agent、SNMP、IPMI 等)
    • 强大的触发器(trigger)机制,支持复杂阈值判断
    • 完善的 Web 管理界面,配置操作简单
    • 支持分布式部署,适合大规模环境
  • 劣势
    • 自定义监控项配置较复杂
    • 高并发场景下数据库压力较大
  • 适用场景:中大型企业的全方位监控需求,尤其适合混合环境(物理机 + 虚拟机 + 容器)

3.2 Prometheus+Grafana

  • 特点:云原生监控的事实标准,时序数据库 + 可视化面板的组合方案
  • 优势
    • 适合容器化环境(K8s 原生集成)
    • 强大的 PromQL 查询语言,支持复杂指标计算
    • 轻量化架构,部署简单
  • 劣势
    • 告警配置相对复杂
    • 长期数据存储需要对接第三方存储(如 Thanos)
  • 适用场景:云原生环境、微服务架构监控

3.3 Nagios

  • 特点:老牌监控工具,以插件化架构著称
  • 优势
    • 插件生态丰富,支持自定义开发
    • 资源占用低,适合老旧服务器
  • 劣势
    • 界面简陋,需配合第三方工具(如 PNP4Nagios)实现可视化
    • 配置复杂,学习成本高
  • 适用场景:传统服务器监控,对界面要求不高的场景

3.4 Cacti

  • 特点:专注于网络流量监控,基于 RRDTool 绘图
  • 优势
    • 网络流量图表展示能力强
    • 支持用户权限精细化管理
  • 劣势
    • 功能单一,扩展性弱
  • 适用场景:中小型网络环境的流量监控

3.5 其他工具

  • Netdata:实时性能监控工具,支持秒级数据采集,适合问题排查
  • LibreNMS:网络设备监控专用,支持自动发现网络拓扑
  • Checkmk:高可扩展性,支持服务器、网络、数据库等全方位监控

四、Zabbix 系统深度解析

4.1 Zabbix 简介

Zabbix 是一款企业级开源监控解决方案,由 Alexei Vladishev 创建,目前由 Zabbix SIA 公司主导开发。其核心优势包括:

  • 支持跨平台部署(Linux、Windows、AIX、Solaris 等)
  • 采用 GPL v2 开源协议,免费使用且源代码可定制
  • 提供 Web 可视化界面,支持多语言(包括中文)
  • 既能监控小规模环境(几台服务器),也能通过 Proxy 架构支持上万节点的分布式监控

4.2 Zabbix 核心功能特性

Zabbix 的功能覆盖监控全流程,主要特性包括:

(1)数据收集
  • 支持可用性及性能指标采集
  • 兼容多种协议:SNMP(trap/poll)、IPMI、JMX、SSH 等
  • 支持自定义监控项(通过脚本 / API 实现)
  • 可配置采集间隔(从秒级到天级)
  • 三种核心角色:Server(主服务器)、Proxy(代理服务器)、Agent(客户端)
(2)阈值管理与告警
  • 触发器(Trigger)机制:基于表达式定义阈值,支持多条件组合
  • 告警升级(Escalation):可配置告警接收者的顺序和间隔
  • 告警方式:支持邮件、短信、钉钉、企业微信等多种渠道
  • 宏变量(Macro):告警信息中可嵌入动态变量(如主机名、监控值)
  • 自动动作(Action):支持触发远程命令(如自动重启服务)
(3)可视化与报表
  • 实时绘图:内置图表引擎,支持折线图、柱状图、饼图等
  • 网络拓扑图:直观展示设备连接关系及状态
  • 自定义仪表盘:可组合多个监控图表,支持幻灯片展示
  • 报表功能:支持周期性生成 PDF 报表(如周报 / 月报)
(4)配置管理
  • 模板(Template)机制:可预定义监控项、触发器、图表,实现快速部署
  • 模板继承:子模板可继承父模板的配置,减少重复工作
  • 自动发现:支持网络设备、文件系统、网卡等资源的自动识别
  • Agent 自动注册:新节点可自动上报至 Server,简化大规模部署
(5)扩展性
  • Zabbix API:提供 RESTful 接口,支持与第三方系统集成(如 CMDB、工单系统)
  • 权限管理:基于角色的访问控制(RBAC),支持精细化权限分配
  • 二进制守护进程:C 语言开发,性能高效且内存占用低

4.3 Zabbix 架构组件

Zabbix 采用分布式架构,主要由以下组件构成:

(1)Zabbix Server

Zabbix Server 是整个系统的核心,负责:

  • 接收 Agent/Proxy 发送的监控数据
  • 存储数据至数据库(MySQL、PostgreSQL 等)
  • 处理触发器逻辑,判断是否触发告警
  • 管理整个监控系统的配置

默认监听 10051 端口,用于接收数据。

(2)Zabbix Agent

部署在被监控节点上的客户端程序,支持主动 / 被动两种模式:

  • 被动模式:等待 Server 请求后返回数据(默认端口 10050)
  • 主动模式:主动向 Server/Proxy 发送数据

Agent 负责采集本地系统指标(CPU、内存等)和应用数据。

(3)Zabbix Proxy

代理服务器,作为 Server 和 Agent 之间的中间层:

  • 减轻 Server 的负载,尤其适合大规模监控
  • 支持跨网络监控(如不同网段的节点)
  • 本地存储临时数据,断网后可缓存数据
(4)Zabbix Web

基于 PHP 开发的 Web 管理界面,提供:

  • 监控配置(主机、模板、触发器等)
  • 数据可视化(图表、拓扑图、仪表盘)
  • 告警管理(查看告警、手动关闭告警)
  • 用户权限控制

通常与 Server 部署在同一台服务器,默认通过 80 端口访问(可自定义)。

(5)数据库

存储监控系统的所有配置数据和历史指标,支持多种数据库:

  • MySQL(最常用,社区版免费)
  • PostgreSQL(开源,适合大规模部署)
  • Oracle(商业数据库,适合企业级环境)
  • SQLite(轻量级,适合小规模单机部署)

五、Zabbix 企业级部署实战(基于 openEuler 24.03)

5.1 环境准备

(1)节点规划

本次部署采用分布式架构,包含 1 个 Server 节点、1 个 Proxy 节点、2 个被监控节点,具体配置如下:

节点角色 操作系统 硬件配置 主机名 IP 地址
Zabbix Server openEuler 24.03 2C4G zabbix 192.168.207.137
Zabbix Proxy openEuler 24.03 2C4G proxy 192.168.207.138
被监控节点 1 openEuler 24.03 2C4G server01 192.168.207.139
被监控节点 2 openEuler 24.03 2C4G server02 192.168.207.140
(2)基础环境配置(所有节点执行)
① 关闭防火墙
复制代码
# 停止防火墙服务
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld
② 关闭 SELinux
复制代码
# 临时关闭(立即生效)
setenforce 0
# 永久关闭(重启生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
③ 时间同步
复制代码
# 设置时区为上海
timedatectl set-timezone Asia/Shanghai
# 安装chrony时间同步工具
dnf install -y chrony
# 启动并设置开机自启
systemctl enable --now chronyd
# 验证同步状态
chronyc sources -v
④ 修改主机名
复制代码
# 在Zabbix Server节点执行
hostnamectl set-hostname zabbix
# 在Proxy节点执行
hostnamectl set-hostname proxy
# 在被监控节点1执行
hostnamectl set-hostname server01
# 在被监控节点2执行
hostnamectl set-hostname server02
⑤ 配置 hosts 解析
复制代码
cat >> /etc/hosts << EOF
192.168.207.137 zabbix
192.168.207.138 proxy
192.168.207.139 server01
192.168.207.140 server02
EOF

5.2 部署 Zabbix Server

(1)添加 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 makecache
(2)安装依赖包及组件

Zabbix Server 需要安装的核心组件包括:

  • zabbix-server-mysql:Server 主程序(MySQL 支持)
  • zabbix-web-mysql:Web 界面(MySQL 支持)
  • zabbix-nginx-conf:Nginx 配置文件
  • zabbix-sql-scripts:数据库初始化脚本
  • zabbix-agent:Server 节点自身也需要安装 Agent
  • mysql-server:数据库服务

执行安装命令:

复制代码
# 安装Zabbix组件
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

# 安装MySQL 8.0
dnf -y install mysql-server-8.0.41 mysql

# 安装net-snmp依赖(解决监控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

版本说明:Zabbix 6.4.8 对依赖组件的版本要求如下:

  • MySQL:8.0.30-8.1.x
  • MariaDB:10.5.0-11.1.x
  • Nginx:1.20 或更高版本
  • PHP:7.4.0-8.2.x
(3)配置 MySQL 数据库
① 启动 MySQL 并设置开机自启

bash

复制代码
systemctl enable --now mysqld
# 验证状态
systemctl status mysqld
② 初始化数据库配置

bash

复制代码
# 登录MySQL(初始无密码,直接回车)
mysql -uroot

# 执行以下SQL语句(逐条执行)
# 设置root密码
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节点连接)
create user zabbix@'%' identified by 'zabbix';
# 授权Proxy数据库权限
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;

# 退出MySQL
quit;
(4)导入 Zabbix 初始化数据

Zabbix 的数据库初始化脚本位于/usr/share/zabbix-sql-scripts/mysql/server.sql.gz,执行以下命令导入:

复制代码
# 导入数据(输入密码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

修改 Zabbix Server 的主配置文件/etc/zabbix/zabbix_server.conf

复制代码
# 编辑配置文件
vim /etc/zabbix/zabbix_server.conf

# 找到以下配置项,取消注释并修改密码
DBPassword=zabbix  # 大约在129行

其他核心配置项说明:

  • DBHost=localhost:数据库主机(默认本地)
  • DBName=zabbix:数据库名
  • DBUser=zabbix:数据库用户
  • ListenPort=10051:Server 监听端口
(6)配置 Web 界面(Nginx)

Zabbix 的 Web 界面通过 Nginx 提供服务,配置文件为/etc/nginx/conf.d/zabbix.conf

复制代码
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

# 验证服务状态
systemctl status zabbix-server zabbix-agent nginx php-fpm

5.3 Zabbix Web 界面初始化配置

(1)访问 Web 界面

通过浏览器访问 Zabbix Server 的 IP: 端口(本文为http://192.168.207.137:8080/

(2)初始化配置步骤
① 欢迎页面

点击 "Next step" 进入下一步。

② 环境检查

系统会自动检查依赖组件是否满足要求,全部通过后点击 "Next step"。

③ 数据库配置
  • Database type:选择 MySQL
  • Database host:localhost
  • Database port:3306(默认)
  • Database name:zabbix
  • User:zabbix
  • Password:zabbix(之前设置的密码)

点击 "Next step"。

④ Server 设置
  • Zabbix server name:可自定义(如 "企业监控系统")
  • Default time zone:选择 Asia/Shanghai(上海时区)

点击 "Next step"。

⑤ 安装汇总

确认配置信息无误后,点击 "Next step" 完成安装。

⑥ 登录界面

默认账号:Admin,默认密码:zabbix(注意大小写)。

(3)首次登录后配置
  • 登录后建议立即修改密码:点击右上角用户名→"Profile"→"Password"
  • 设置中文界面:Administration→General→Locale→选择 "Chinese (zh_CN)"→点击 "Update"

5.4 部署 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
dnf makecache
(2)安装 Proxy 组件
复制代码
# 安装Proxy(MySQL支持)及依赖
dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql

# 安装net-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)导入 Proxy 数据库初始化数据

Proxy 需要使用之前在 Server 节点创建的zabbix_proxy数据库:

复制代码
# 先在Server节点开启存储函数创建权限
mysql -uroot -p
set global log_bin_trust_function_creators=1;
quit;

# 在Proxy节点执行导入(输入密码zabbix)
mysql -uzabbix -p -h 192.168.207.137 zabbix_proxy < /usr/share/zabbix-sql-scripts/mysql/proxy.sql

# 导入完成后,在Server节点关闭权限
mysql -uroot -p
set global log_bin_trust_function_creators=0;
quit;
(4)配置 Zabbix Proxy

修改 Proxy 配置文件/etc/zabbix/zabbix_proxy.conf

复制代码
vim /etc/zabbix/zabbix_proxy.conf

# 修改以下配置项
Server=192.168.207.137  # Zabbix Server的IP(约32行)
Hostname=Zabbix proxy    # Proxy名称(约42行,需与Web界面配置一致)
DBHost=192.168.207.137   # 数据库主机(Server节点IP,约157行)
DBPassword=zabbix        # 数据库密码(约194行)
(5)启动 Proxy 服务
复制代码
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
# 验证状态
systemctl status zabbix-proxy
(6)在 Web 界面添加 Proxy
  1. 登录 Zabbix Web 界面
  2. 导航至:Administration→Proxies→Create proxy
  3. 配置参数:
    • Proxy name:Zabbix proxy(需与配置文件中 Hostname 一致)
    • Proxy type:Active(主动模式)
  4. 点击 "Add" 完成添加

5.5 部署 Zabbix Agent(被监控节点)

以 server01 节点为例,部署步骤如下:

(1)添加 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 makecache
(2)安装 Zabbix Agent
复制代码
dnf -y install zabbix-agent
(3)配置 Agent

修改配置文件/etc/zabbix/zabbix_agentd.conf

复制代码
vim /etc/zabbix/zabbix_agentd.conf

# 修改以下配置项
Server=192.168.207.137        # 被动模式:Server或Proxy的IP(约118行)
ServerActive=192.168.207.138  # 主动模式:Proxy的IP(约171行)
Hostname=server01             # 本机主机名(约182行,需与Web界面配置一致)
(4)启动 Agent 服务
复制代码
systemctl start zabbix-agent
systemctl enable zabbix-agent
# 验证状态
systemctl status zabbix-agent
(5)在 Web 界面添加被监控主机
  1. 导航至:Configuration→Hosts→Create host
  2. 配置主机参数:
    • Host name:server01(需与 Agent 配置文件中 Hostname 一致)
    • Groups:选择 "Linux servers"(或自定义群组)
    • Interfaces:点击 "Add"→选择 "Agent"→IP 地址填写 192.168.207.139→端口 10050
  3. 关联模板:
    • 点击 "Templates"→"Select"→搜索 "Template OS Linux"→添加
  4. 选择 Proxy(如需通过 Proxy 监控):
    • Proxy:选择之前创建的 "Zabbix proxy"
  5. 点击 "Add" 完成添加

重复以上步骤添加 server02 节点。

5.6 解决 Zabbix 图形中文乱码问题

Zabbix 默认字体不支持中文,需替换字体文件:

(1)查找字体配置文件
复制代码
# 查找定义字体的PHP文件
find / -name defines.inc.php
# 输出:/usr/share/zabbix/include/defines.inc.php

# 查看字体路径和名称
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');
(2)替换字体文件
复制代码
# 上传中文字体文件(如msyh.ttc,微软雅黑)到字体目录
cd /usr/share/zabbix/assets/fonts/

# 备份原字体
mv graphfont.ttf graphfont.ttf.bak

# 创建软链接(将中文字体链接为默认字体)
ln -s msyh.ttc graphfont.ttf
(3)验证效果

刷新 Zabbix Web 界面,查看图表中的中文是否正常显示。

六、Zabbix 监控实战配置

6.1 自定义监控项

以监控服务器的 TCP 连接数为例,创建自定义监控项:

  1. 在被监控节点的 Agent 配置文件中添加:

    vim /etc/zabbix/zabbix_agentd.d/custom.conf

    添加以下内容

    UserParameter=tcp.established,netstat -ant | grep ESTABLISHED | wc -l

  2. 重启 Agent:

    systemctl restart zabbix-agent

  3. 在 Web 界面创建监控项:

    • 导航至对应主机→Items→Create item
    • Name:TCP Established Connections
    • Key:tcp.established
    • Type:Zabbix agent
    • Units:connections
    • Update interval:30s

6.2 配置触发器

为 TCP 连接数设置阈值告警(超过 1000 时告警):

  1. 导航至对应主机→Triggers→Create trigger
  2. Name:High number of TCP connections
  3. Expression:{server01:tcp.established.last()} > 1000
  4. Severity:Warning
  5. 点击 "Add"

七、总结与扩展

本文详细讲解了 Zabbix 企业级分布式监控系统的部署过程,从监控体系架构到实际操作步骤,涵盖了 Server、Proxy、Agent 的完整部署流程。通过本文的步骤,可搭建一套支持多节点、跨网络的分布式监控平台。

扩展建议

  • 高可用部署:生产环境中建议对 Zabbix Server 和数据库进行高可用配置(如主从复制、集群)
  • 监控扩展:结合 Zabbix API 开发自定义告警插件(如对接企业微信、钉钉)
  • 性能优化:对于大规模监控(>1000 节点),需优化数据库(分表分区)、调整 Proxy 缓存策略
  • 安全加固:配置 SSL 加密(Agent 与 Server 通信)、限制数据库访问权限、定期更新 Zabbix 版本
相关推荐
小冷coding1 小时前
【面试】面试官:请举例回答Elasticsearch的数据模型有哪些核心概念?
java·分布式·elasticsearch·面试·es
cui_win2 小时前
kafka主题管理详解 - kafka-topics.sh
分布式·kafka
武子康2 小时前
Java-78 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战
java·数据库·分布式·后端·缓存·rpc·dubbo
码字的字节2 小时前
深入解析Hadoop中的Region分裂与合并机制
大数据·hadoop·分布式·合并·region·分裂
程序员小羊!2 小时前
(一)ZooKeeper 发展历史
分布式·zookeeper·云原生
快乐肚皮2 小时前
ZooKeeper学习专栏(六):集群模式部署与解析
分布式·学习·zookeeper
朱包林12 小时前
ansible批量部署zabbix客户端
linux·运维·服务器·云计算·ansible·zabbix
霖檬ing12 小时前
zabbix
zabbix
眠修12 小时前
部署 Zabbix 企业级分布式监控
笔记·分布式·zabbix