Zabbix-企业级监控详解
Zabbix是一款开源的企业级监控解决方案,由Zabbix SIA开发,支持跨平台运行,可监控网络、服务器、应用等IT基础设施。其核心功能包括硬件/软件监控、告警机制、数据可视化、自动发现和分布式监控。架构由Server、Agent、Proxy、数据库和Web界面等组件组成。部署过程涉及安装Zabbix服务端、前端及客户端,配置MySQL数据库,并导入Zabbix数据。最后通过浏览器访问Web界面
Zabbix–企业级监控
1.Zabbix简介
官网:https://www.zabbix.com/
Zabbix 是一款开源的企业级监控解决方案,主要用于实时监控网络、服务器、应用程序等 IT 基础设施的状态和性能,帮助管理员及时发现并解决问题,保障系统的稳定运行
-
开发与发布:由拉脱维亚公司 Zabbix SIA 开发,首个版本于 2001 年发布,目前已更新至多个版本(截至 2024 年 5 月,最新稳定版为 Zabbix 6.4)
-
开源性质:基于 GPL v2 许可证开源,用户可免费使用、修改源代码,适合企业根据自身需求定制监控方案。
-
跨平台支持:可运行在 Linux、Windows、Solaris 等主流操作系统上,能监控各类设备(服务器、路由器、交换机等)和应用(数据库、Web 服务、容器等)。
2.核心功能

-
全面监控能力
-
硬件监控:
- CPU、内存、磁盘、网络接口等服务器 / 设备硬件指标。
-
软件与应用监控:
- 操作系统进程、服务状态(如 Apache、Nginx)、数据库性能(MySQL、PostgreSQL 等)、中间件(如 Tomcat)等。
-
网络监控:
- 网络带宽、延迟、丢包率,以及交换机、路由器等网络设备的端口状态。
-
自定义监控:
- 支持通过脚本、API 等方式监控特定业务指标(如订单量、用户在线数)。
-
-
告警机制
-
当监控指标超过预设阈值(如 CPU 使用率过高、服务宕机)时,可通过邮件、短信、微信、Slack 等多种渠道发送告警。
-
支持告警分级(严重、警告等)和升级策略(如多次告警未处理时通知上级)。
-
-
数据可视化与分析
-
提供丰富的图表(折线图、柱状图、饼图等),实时展示监控数据趋势。
-
支持自定义仪表盘,集中展示关键指标,方便管理员快速掌握系统状态。
-
历史数据存储在数据库(如 MySQL、PostgreSQL)中,可用于趋势分析和容量规划。
-
-
自动发现
- 能自动扫描网络中的设备和服务(如新增服务器、数据库实例),并自动添加监控项,减少手动配置工作量。
-
分布式监控
- 支持通过 Proxy 节点实现分布式监控,适合跨机房、大规模部署的场景,减轻中心服务器压力,提高监控效率。
3.架构组成

3.1 Zabbix 架构主要包含以下组件
-
Zabbix Server:
- 核心组件,负责接收 Agent 发送的监控数据、处理告警、存储数据、管理配置等。
-
Zabbix Agent:
- 安装在被监控设备上,采集本地硬件和软件指标,发送给 Server 或 Proxy。
-
Zabbix Proxy:
- 可选组件,用于分布式监控,代理 Server 收集数据并转发,减轻 Server 负载。
-
Database:
- 存储监控配置、历史数据、告警信息等(支持 MySQL、PostgreSQL、Oracle 等)。
-
Web 界面:
- 基于 PHP 开发,提供图形化操作界面,用于配置监控、查看数据和管理系统。
-
Java Gateway:
- 用于监控 Java 应用程序(如 JVM 性能),通过 JMX 协议与 Java 进程通信。
4.部署zabbix
4.1 通过官方网站下载zabbix资源



哈哈哈,你会发现找软件会疯掉,所以还是使用我们自己的资源包吧
4.2 部署zabbix安装源
网络环境好,并且不嫌麻烦的,可以使用下面的方法
# 安装官方源到系统中
[root@zabbix ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# 查看信息
[root@zabbix ~]# cd /etc/yum.repos.d/
[root@zabbix yum.repos.d]# ls
redhat.repo rhel9.repo zabbix.repo zabbix-tools.repo
想省事的看下面这个办法
[root@zabbix-server ~]# cd /mnt/
[root@zabbix-server mnt]# ls
mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar zabbix-6
[root@zabbix-server mnt]# cd zabbix-6/
[root@zabbix-server zabbix-6]# dnf install -y *.rpm
[root@zabbix-server zabbix-6]# cd ..
[root@zabbix-server mnt]# tar xvf mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar # 此处解出来即可,后续会有安装步骤

4.3 安装zabbix服务端
# 上面使用资源包的话,此处省略
[root@zabbix ~]# dnf install zabbix-agent.x86_64 zabbix-server-mysql.x86_64 -y
4.4 安装zabbix前端及客户端
# 上面使用资源包的话,此处省略
[root@zabbix ~]# dnf install zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y
4.5 安装数据库
# 解压mysql8软件包归档文件
[root@zabbix ~]# tar xf mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar
# 安装mysql8
[root@zabbix ~]# dnf install -y mysql-community-client-8.0.39-1.el9.x86_64.rpm \
mysql-community-client-plugins-8.0.39-1.el9.x86_64.rpm \
mysql-community-common-8.0.39-1.el9.x86_64.rpm \
mysql-community-icu-data-files-8.0.39-1.el9.x86_64.rpm \
mysql-community-server-8.0.39-1.el9.x86_64.rpm \
mysql-community-libs-8.0.39-1.el9.x86_64.rpm
# 启动数据库
[root@zabbix ~]# systemctl enable --now mysqld
# 查看数据库密码
[root@zabbix ~]# cat /var/log/mysqld.log | grep localhost
2025-08-25T08:40:32.107000Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: pdqXF;xsN4xa
# 数据库安全初始化
[root@zabbix ~]# mysql_secure_installation
pdqXF;xsN4xa
Openlab@123 # 新密码
Openlab@123 # 再次输出新密码
# 一路回车即可
4.6.为zabbix建立数据库
# 建立zabbix所需用户并授权
[root@zabbix ~]# mysql -uroot -pOpenlab@123
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'Openlab@123';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
#向数据库中导入zabbix的数据
[root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pOpenlab@123 zabbix
4.7 设置zabbix服务端配置并启动
# 编辑主配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
129 DBPassword=Openlab@123
# 开启服务
[root@zabbix-server ~]# systemctl disable --now firewalld
[root@zabbix-server ~]# systemctl enable -now zabbix-server zabbix-agent.service httpd php-fpm.service
# 随后去浏览器中访问172.25.254.100/zabbix即可并设置语言为中文
4.8 设置zabbix server





4.9.修改字体文件
在zabbix中如果使用中文字体图形显示会有错误,需要手动调整字体来解决问题




但是仔细观察之后会发现有些数据(汉字)并不能显示出来
解决字体问题方法:
[root@zabbix zabbix]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix fonts]# cp /mnt/zabbix-6/simkai.ttf .
[root@zabbix fonts]# rm -rf graphfont.ttf
[root@zabbix fonts]# ln -s /usr/share/zabbix/assets/fonts/simkai.ttf /usr/share/zabbix/assets/fonts/graphfont.ttf
5.zabbix agent部署与使用
Zabbix Agent 是 Zabbix 监控系统的重要组件,主要部署在被监控的目标设备(如服务器、虚拟机、网络设备等)上,负责收集本地系统的各类数据(如 CPU 使用率、内存占用、磁盘空间、进程状态等),并将数据发送给 Zabbix Server 或 Zabbix Proxy 进行处理和存储。
5.1 Zabbix Agent 的核心作用
-
数据采集:
- 主动主动或被动方式收集被监控设备的性能指标、系统状态、应用程序数据等。
-
数据传输:
- 将采集到的数据发送给 Zabbix Server/Proxy,确保监控数据的实时性和准确性。
-
执行命令:
- 接收并执行 Zabbix Server 下发的远程命令(如脚本执行、服务启停等),支持监控场景的自动化操作。
5.2 两种运行模式
5.2.1 被动模式(默认)
-
由 Zabbix Server 主动向 Agent 发起数据请求,Agent 被动响应并返回数据。
-
优势:
- 节省 Agent 端资源,适合监控大规模设备时降低客户端压力。
-
劣势:
- Server 端请求压力可能较大,需合理配置超时时间和并发数。
5.2.2 主动模式
-
Agent 主动向 Server/Proxy 发送采集到的数据,无需 Server 发起请求。
-
优势
- :减轻 Server 端请求压力,适合跨网段、广域网等网络条件复杂的场景。
-
配置:
- 需在 Agent 配置文件中指定
ServerActive(目标 Server/Proxy 地址),并在 Server 端将监控项类型设为 “主动式”。
- 需在 Agent 配置文件中指定
5.3 被动模式如何添加监控节点
# zabbix--ip--172.25.254.100
# 新增两台业务主机:
# servera--ip--172.25.254.10
# serverb--ip--172.25.254.20
# 在每台主机中做好解析并关闭火墙,以免影响实验效果
]# systemctl disable --now firewalld
]# vim /etc/hosts
172.25.254.10 servera
172.25.254.20 serverb
172.25.254.100 zabbix-server
# 在要被监控节点中安装zabbix-agent
[root@zabbix-server ~]# cd /mnt/zabbix-6/
[root@zabbix-server zabbix-6]# scp zabbix-agent-6.0.41-release1.el9.x86_64.rpm root@172.25.254.10:/mnt
[root@zabbix-server zabbix-6]# scp zabbix-agent-6.0.41-release1.el9.x86_64.rpm root@172.25.254.20:/mnt
[root@servera & serverb ~]# dnf install /mnt/zabbix-agent-6.0.41-release1.el9.x86_64.rpm -y
# 以下使用servera进行操作
[root@servera ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.100 # zabbix server主机
ServerActive=172.25.254.100 # 默认采集方式server端主动agent端被动,所有需要打开端口
Hostname=servera # 指定主机名
# 启动agent
~]# systemctl enable --now zabbix-agent.service
# 检测zabbix-agent的端口开放
[root@servera ~]# netstat -antlupe | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 980 59055 32814/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 980 59056 32814/zabbix_agentd
在zabbix的server端添加要被监控的主机

[root@zabbix-server zabbix-6]# systemctl restart zabbix-server.service

5.2 主动模式如何添加监控节点
# 在要被监控节点中安装agent
[root@serverb ~]# dnf /mnt/install zabbix-agent-6.0.41-release1.el9.x86_64.rpm -y
[root@serverb ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.100 # zabbix server主机
ServerActive=172.25.254.100 # 主动模式下Agent向哪个Zabbix Server发送数据。
Hostname=serverb # 指定主机名
# 启动agent
[root@serverb ~]# systemctl enable --now zabbix-agent.service
[root@serverb ~]# netstat -antlupe | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 980 59055 32814/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 980 59056 32814/zabbix_agentd
配置自动发现动作
当 Zabbix Server 通过自动发现规则发现新的设备(服务器、交换机等)或资源(如磁盘、端口等)时,自动发现动作会根据预设的条件和操作,自动完成以下任务:
- 将新设备添加到 Zabbix 监控中
- 为新设备关联对应的监控模板(如 Linux 模板、网络设备模板)
- 加入指定的主机组
- 发送发现通知(邮件、短信等)
- 执行自定义脚本(如初始化监控配置)







[root@zabbix-server zabbix-6]# zabbix_get -s 172.25.254.20 -k system.uname
Linux serverb 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Oct 3 11:12:36 EDT 2023 x86_64


[root@zabbix-server zabbix-6]# systemctl restart zabbix-server.service


5.3 自动注册
在 Zabbix 中,自动注册(Auto-registration) 是一种让 Zabbix Agent 主动向 Zabbix Server 报到并请求被监控的机制。与 “自动发现”(Server 主动扫描)不同,自动注册是 Agent 主动发起注册请求,适用于动态环境(如容器、云服务器)中快速纳入新部署的设备。
5.3.1 核心原理
当Zabbix Agent 启动时,会根据配置文件中的 ServerActive 参数,向指定的 Zabbix Server/Proxy 发送注册请求(包含自身 Hostname、IP 等信息)。
Zabbix Server 接收请求后,根据预设的 “自动注册动作” 判断是否接受该 Agent,并自动执行配置操作(如添加主机、关联模板等)。
[!NOTE]
在做自动注册实验时确保自动发现动作已经全部停止
# 将自动发现停止且将动作停止







[root@zabbix-server zabbix-6]# systemctl restart zabbix-server.service


更多推荐



所有评论(0)