当前位置: 首页 > news >正文

部署Zabbix企业级分布式监控

目录

1. 监控系统的核心价值与功能概述

1.1 监控在 IT 运维中的关键地位

1.2 监控的五大类型与五层架构

五大监控类型

五层监控架构

2. 监控系统的实现原理

2.1 模块组成与基本模型

2.2 数据采集协议分类

2.3 主动与被动监控模式

2.4 大规模监控的代理架构

3. 主流开源监控产品对比

4. Zabbix 系统深度解析

4.1 Zabbix 的定义与核心优势

4.2 功能特性详解

4.3 角色划分与架构设计

核心角色

整体架构

5. Zabbix 企业级部署实战

5.1 部署环境准备与资源清单

资源清单

基础环境配置

5.2 Zabbix Server 部署全流程

5.3 Zabbix Proxy 部署与配置

5.4 Zabbix Agent 客户端部署

5.5 Web 界面配置与初始化

6. Zabbix 高级配置与优化:解决图像字体问题


1. 监控系统的核心价值与功能概述

1.1 监控在 IT 运维中的关键地位

“运筹帷幄之中,决胜千里之外”,这句话精准概括了监控系统在 IT 运维中的核心价值。在 IT 运维工作中,监控占据着约 30% 的重要比例,构建一个高效可用的监控告警系统是运维工程师的核心任务之一,而能熟练掌握企业级监控系统部署的专业人才更是稀缺。

监控系统通过实时检测 IT 基础设施和业务应用的运行状态,实现故障的提前预防和快速响应,从而保障业务的持续稳定运行。没有监控系统,IT 团队将陷入 “盲人摸象” 的困境,无法及时感知和解决系统问题,可能导致业务中断和重大损失。

1.2 监控的五大类型与五层架构

五大监控类型

在计算机领域,监控可细分为五种类型,涵盖了 IT 系统的各个层面:

  • 应用性能监控:聚焦应用程序的响应时间、吞吐量、错误率等指标。
  • 业务交易监控:跟踪核心业务流程的完成情况和效率。
  • 网络性能监控:关注网络带宽、延迟、丢包等网络指标。
  • 操作系统监控:监测服务器的 CPU、内存、磁盘等系统资源。
  • 基础设施监控:覆盖网络设备、服务器硬件等底层设施至。

这些类型并非孤立存在,实际监控中通常会综合覆盖多个领域,形成全方位的监控体系。

五层监控架构

按照逻辑层次,监控行为可划分为从底层到上层的五个层次,每层对应不同的监控对象和指标:

  1. 基础设施监控
    由运维人员负责,针对网络交换机、路由器等底层设备,监控网络流量、丢包率、错包率、连接数等核心指标。这些设备的稳定性直接影响上层服务,是整个 IT 系统的基石。

  2. 系统层监控
    涵盖物理机、虚拟机和操作系统,核心监控指标包括 CPU 使用率、内存占用率、磁盘 IO 和网络带宽。这些指标直接反映服务器的运行状态,是判断系统健康度的基础。

  3. 应用层监控
    与业务服务紧密相关,包括 URL 访问性能(响应时间、调用数、延迟)、服务错误率、SQL 性能(慢 SQL)、缓存命中率等。通过监控这些指标,可及时发现应用程序的性能瓶颈。

  4. 业务监控
    针对直接影响业务交易的指标,例如交易网站的用户登录、注册、下单、支付等情况。这些数据为运营决策和公司战略提供直接支持,是连接 IT 与业务的桥梁。

  5. 端用户体验监控
    关注用户端的使用体验,包括页面加载速度、操作响应时间、错误返回码,以及用户所在地区、使用的运营商、操作系统和浏览器版本等。通过这类监控,可及时发现影响用户体验的问题。

2. 监控系统的实现原理

2.1 模块组成与基本模型

一个完整的监控系统主要由两部分组成:

  • 数据采集部分:通过 Agent(代理程序)收集被监控对象的数据。
  • 数据处理部分:由 Server 负责数据存储、分析、告警和展示。

其基本模型可简化为:Agent 采集数据后,将数据发送至 Server,Server 对数据进行处理并通过可视化界面展示,同时在异常时触发告警。

[数据采集 Agent] → [Server (分析、告警、数据存储、展示)]

(如图:监控系统的基本模型,展示了 Agent 与 Server 的数据流关系)

2.2 数据采集协议分类

监控数据采集按协议可分为两类:

  1. 专用客户端采集(私有协议):通过监控系统专属的客户端程序采集数据,通常能获取更细致的指标,但兼容性较差。
  2. 公用协议采集:基于通用协议进行数据采集,兼容性强,包括:
    • SNMP(简单网络管理协议):广泛用于网络设备监控。
    • IPMI(智能平台管理接口):用于服务器硬件监控。
    • SSH/Telnet:通过远程登录执行命令获取数据。

(如图:监控系统数据采集协议分类,清晰展示了私有协议与公有协议的包含关系)

2.3 主动与被动监控模式

监控系统的数据采集有两种工作模式:

  • 被动模式:由 Server 主动向 Agent 请求数据。此模式对 Server 开销较大,适合小规模监控环境。
  • 主动模式:由 Agent 主动将数据上报至 Server。此模式对 Server 开销较小,适合大规模监控环境。
被动模式:Server → [请求数据] → Agent → [返回数据] → Server
主动模式:Agent → [主动上报数据] → Server

(如图:监控系统数据采集的工作模式,对比展示了被动模式与主动模式的数据流方向)

2.4 大规模监控的代理架构

对于大规模监控环境(节点多、类型杂、数据量大),需采用代理架构(C/S/P 架构:Client/Proxy/Server)分摊 Server 压力,同时支持跨地域、跨网络监控。

在该架构中,Proxy 作为中转站,先收集 Client(Agent)的数据,再将汇总后的数据提交给 Server,有效降低 Server 的负载。

Client (Agent) → [主动/被动模式] → Proxy → [转发] → Server (数据存储、分析等)

(如图:监控系统的代理架构,展示了 Client、Proxy、Server 三者的层级关系和数据流向)

3. 主流开源监控产品对比

开源监控产品各有特点,适用于不同场景,以下为常见产品的核心特性:

  • Zabbix:企业级分布式监控平台,支持服务器、网络设备、Web 应用等多对象监控,适配多种操作系统,功能全面。
  • Prometheus+Grafana:Prometheus 擅长时序数据采集存储,Grafana 专注可视化,组合后适用于云原生和容器监控。
  • Cacti:基于 RRDToo1 的网络流量监测工具,图形分析能力强,适合网络设备监控。
  • Nagios:老牌监控系统,支持多种组件监控和异常通知,配置灵活但界面较简陋🔷1-47🔷。
  • Checkmk:高可扩展,部署快、自动化程度高,分基础版(开源免费)和企业版(附加功能)。
  • OpenNMS:基于 Java/XML 的分布式平台,支持多种协议收集指标,适合大规模网络监控。
  • Netdata:Linux 实时性能监测工具,指标多、收集快,支持物理机、虚拟机、容器等。
  • LibreNMS:功能丰富的网络监控系统,易安装配置,支持多厂商设备和协议。

Zabbix 凭借其企业级特性、分布式架构和广泛的适用性,成为众多企业的首选监控解决方案。

4. Zabbix 系统深度解析

4.1 Zabbix 的定义与核心优势

Zabbix 是企业级分布式开源监控系统解决方案,基于 Web 界面提供分布式系统和网络监控功能。由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发。

其核心优势包括:

  • 免费开源(基于 GPL v2 协议),源代码可公开获取。
  • 支持轮询和 trapping 两种数据获取方式,Web 界面可远程访问。
  • 提供灵活的通知机制和数据可视化功能,适合容量规划。

4.2 功能特性详解

Zabbix 功能丰富,涵盖监控全流程需求:

  1. 数据收集:支持可用性及性能检测,兼容 SNMP、IPMI、JMX 等协议,可自定义检测和采集间隔,包含 Server、Proxy、Agent 三种角色至。
  2. 阈值定义:通过 “触发器(trigger)” 灵活设置问题阈值,存储于后端数据库🔷1-74🔷。
  3. 告警配置:支持告警升级、自定义接收者和方式,告警信息可含宏变量,能通过远程命令执行自动化动作至。
  4. 实时绘图与展示:内置绘图功能,支持多监控项视图、网络拓扑图、自定义面板和报告生成至。
  5. 历史数据管理:数据存储于数据库,可配置保留策略,内置清理机制至。
  6. 配置与模板:一次配置长期有效,支持通过模板添加设备,模板可分组和继承至。
  7. 网络自动发现:能自动发现网络设备、Agent、文件系统、网卡等,提高配置效率至。
  8. Web 接口与 API:PHP 编写的 Web 前端访问便捷,提供 API 支持第三方程序接入至。
  9. 权限与扩展性:安全的权限认证,Agent 支持 Linux 和 Windows,C 语言开发性能高、易移植至。
  10. 复杂环境支持:通过 Proxy 轻松实现远程监控,适应跨地域场景。

4.3 角色划分与架构设计

核心角色

Zabbix 系统包含四个核心角色,分工明确:

  1. Zabbix Server:服务端守护进程,是系统核心。Agent 和 Proxy 的数据最终提交至 Server(或由 Server 主动获取),负责数据存储、分析、告警和展示。
  2. Zabbix Agent:客户端守护进程,部署在被监控对象上,收集 CPU、内存、硬盘等本地数据。
  3. Zabbix Proxy:代理守护进程,作为中转站收集数据并提交给 Server,分担 Server 负载。
  4. Zabbix Web:Web 界面,用于配置管理和监控信息查看,可与 Server 同机或单独部署。
整体架构

Zabbix 采用分布式架构,各组件通过特定端口通信:

  • Agent(10050 端口)与 Server/Proxy 通信(主动 / 被动模式)。
  • Proxy 与 Server(10051 端口)通信。
  • Web 界面通过 80 端口提供访问。

此外,Server 支持通过 Telnet、SNMP、IPMI、SSH 等协议直接监控无 Agent 的设备,数据存储于 MySQL、Oracle 等数据库。

(如图:Zabbix 架构示意图,展示了 Agent、Proxy、Server、Web 界面的连接方式及使用的端口)

5. Zabbix 企业级部署实战

5.1 部署环境准备与资源清单

资源清单

本次部署为企业级分布式环境,包含以下节点,均采用 openEuler 24.03 系统,配置 2C4G:

主机名IP 地址角色
zabbix192.168.207.137Zabbix 服务端
proxy192.168.207.138Zabbix 代理
server01192.168.207.139被监控节点
server02192.168.207.140被监控节点
基础环境配置

所有节点需完成以下基础配置:

  1. 关闭防火墙
[root@localhost~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

关闭 SELinux

[root@localhost ~]# setenforce 0
# 永久关闭需修改/etc/selinux/config文件

时间同步

[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost~]# chronyc sources -v

修改主机名

[root@localhost ~]# hostnamectl set-hostname zabbix  # 对应节点执行
[root@localhost~]# hostnamectl set-hostname proxy
[root@localhost~]# hostnamectl set-hostname server01
[root@localhost~]# hostnamectl set-hostname server02

5.2 Zabbix Server 部署全流程

Zabbix Server 是监控核心,负责数据处理和存储,部署步骤如下:

  1. 添加 Zabbix 源
[root@zabbix~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]# dnf clean all

安装软件包
安装 Server、Web 界面、Agent、数据库及依赖:

[root@zabbix ~]# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
[root@zabbix ~]# dnf -y install mysql-server-8.0.41 mysql
[root@zabbix ~]# 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+、Nginx 1.20+、PHP 7.4.0-8.2.X。

配置数据库
启动 MySQL 并初始化:

[root@zabbix ~]# systemctl enable mysqld --now
[root@zabbix ~]# mysql -uroot

执行 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@'%' 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;

导入数据
将 Server 初始化数据导入 zabbix 数据库:

[root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

导入后关闭 log_bin_trust_function_creators:

[root@zabbix ~]# mysql -uroot -p
mysql> set global log_bin_trust_function_creators=0;
mysql> quit;

配置 Zabbix Server
修改配置文件,设置数据库密码:

[root@zabbix ~]# vi /etc/zabbix/zabbix_server.conf
# 约129行,设置DBPassword=zabbix

配置 Web 界面(Nginx)
修改 Nginx 配置,设置监听端口:

[root@zabbix ~]# vi /etc/nginx/conf.d/zabbix.conf
# 取消注释,设置listen 8080;

启动服务
启动 Server、Agent、Nginx、PHP-FPM 并设为开机自启:

[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent nginx php-fpm

5.3 Zabbix Proxy 部署与配置

Proxy 用于分担 Server 负载,部署步骤如下:

  1. 添加 Zabbix 源(同 Server)
[root@proxy~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@proxy ~]# dnf clean all

安装软件包

[root@proxy ~]# dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
[root@proxy~]# 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

导入数据
在 Server 上临时开启 log_bin_trust_function_creators,然后在 Proxy 节点导入数据:

# Server节点
[root@zabbix ~]# mysql -uroot -p
mysql> set global log_bin_trust_function_creators =1;
mysql> quit;# Proxy节点(IP为Server地址)
[root@proxy ~]# zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137# Server节点关闭设置
[root@zabbix ~]# mysql -uroot -p
mysql> set global log_bin_trust_function_creators=0;
mysql> quit;

配置 Proxy
修改配置文件,设置 Server 地址、主机名、数据库信息:

[root@proxy ~]# vi /etc/zabbix/zabbix_proxy.conf
# 32行:Server=192.168.207.137
# 42行:Hostname=Zabbix proxy
# 157行:DBHost=192.168.207.137
# 194行:DBPassword=zabbix
  1. 启动服务
[root@proxy ~]# systemctl start zabbix-proxy
[root@proxy ~]# systemctl enable zabbix-proxy

Web 界面添加 Proxy
登录 Zabbix Web,进入 “管理→Proxy→创建 agent 代理”,选择主动式。

5.4 Zabbix Agent 客户端部署

Agent 部署在被监控节点,以 server01 为例:

  1. 添加 Zabbix 源
[root@server01~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@server01~]# dnf clean all

安装 Agent

[root@server01 ~]# dnf -y install zabbix-agent

配置 Agent
修改配置文件,设置 Server/Proxy 地址和主机名:

[root@server01 ~]# vi /etc/zabbix/zabbix_agentd.conf
# 117行:Server=192.168.207.137(或Proxy地址)
# 171行:ServerActive=192.168.207.137(同上)
# 182行:Hostname=server01

启动服务

[root@server01 ~]# systemctl start zabbix-agent
[root@server01 ~]# systemctl enable zabbix-agent

5.5 Web 界面配置与初始化

  1. 访问 Web 界面
    打开浏览器,输入地址:http://192.168.207.137:8080/。

  2. 初始化配置

    • 选择语言(如中文),检查环境依赖。
    • 配置数据库连接(数据库名 zabbix,用户 zabbix,密码 zabbix)。
    • 保持主机名默认设置,确认配置汇总后完成安装至。
  3. 登录系统
    默认账号:Admin,密码:zabbix。

  4. 添加主机

    • 直接添加:进入 “数据采集→主机→创建主机”,设置主机名(与 Agent 一致)、群组、Agent 接口(IP+10050),关联模板(如 Template OS Linux)至。
    • 通过 Proxy 添加:步骤类似,在 “由 Proxy 监测” 中选择对应 Proxy 至。

6. Zabbix 高级配置与优化:解决图像字体问题

Zabbix 默认字体可能导致中文显示乱码,解决方案如下:

  1. 查找字体配置文件
[root@zabbix ~]# find / -name defines.inc.php
/usr/share/zabbix/include/defines.inc.php

查看字体设置
确认字体路径和名称:

[root@zabbix~]# grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
# 输出:define('ZBX_FONTPATH', realpath('assets/fonts'));
[root@zabbix~]# grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
# 输出:define('ZBX_GRAPH_FONT_NAME','graphfont');
  1. 替换字体文件
    • 上传中文字体(如 msyh.ttc)至 /usr/share/zabbix/assets/fonts 目录。
    • 创建软链接替换默认字体:
[root@zabbix ~]# cd /usr/share/zabbix/assets/fonts
[root@zabbix fonts]# ln -snf msyh.ttc graphfont.ttf
  1. 刷新页面
    浏览器刷新后,中文即可正常显示。
http://www.xdnf.cn/news/1162099.html

相关文章:

  • 【Unity基础】Unity中2D和3D项目开发流程对比
  • Unity 插件Resize Pro 最快的 Texture2D 调整大小工具
  • Elasticsearch 是 NVIDIA Enterprise AI Factory 验证设计中推荐的向量数据库
  • 数据结构堆的实现(C语言)
  • Web3.0 能为你带来哪些实质性的 改变与突破
  • Vue 脚手架——render函数
  • 【算法笔记】树状数组
  • Linux学习之Linux系统权限
  • 《C++》函数内联,auto关键字
  • 用基础模型构建应用(第十章)AI Engineering: Building Applications with Foundation Models学习笔记
  • 探索无广告音乐世界:MusicFree 免费播放器
  • 海康威视视觉算法岗位30问及详解
  • BERT 的“池化策略”
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页布局实现
  • Three.js 立方体贴图(CubeMap)完全指南:从加载到应用
  • 大模型高效适配:软提示调优 Prompt Tuning
  • Python高效入门指南
  • 深入详解随机森林在放射治疗计划优化中的应用及实现细节
  • 部署 Zabbix 企业级分布式监控
  • Levels checking (filtering) in logging module
  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • Pytorch01:深度学习中的专业名词及基本介绍
  • Linux的磁盘存储管理实操——(中)——逻辑卷管理实战
  • JavaScript的引入方式和基础语法的快速入门与学习
  • 【Linux】重生之从零开始学习运维之Mysql安装
  • Linux下SPI设备驱动开发
  • 管理项目环境和在环境中使用conda或pip里如何查看库版本———Linux命令行操作
  • 装饰器模式分析
  • Android Studio 的 Gradle 究竟是什么?
  • 在 Conda 中删除环境及所有安装的库