Zabbix企业级监控系统实战指南
Zabbix是一款开源的企业级IT基础设施监控解决方案,由Zabbix SIA开发,支持跨平台运行。其核心功能包括全面监控硬件/软件/网络状态、灵活的告警机制、数据可视化分析、自动发现设备和分布式监控。系统主要由Server、Agent、Proxy、数据库和Web界面等组件构成。部署过程包括安装官方源、服务端/前端组件、MySQL数据库,并为Zabbix创建专用数据库用户和权限。Zabbix可帮助
一.Zabbix简介
官网:https://www.zabbix.com/
Zabbix 是一款开源的企业级监控解决方案,主要用于实时监控网络、服务器、应用程序等 IT 基础设施的状态和性能,帮助管理员及时发现并解决问题,保障系统的稳定运行
-
开发与发布:由拉脱维亚公司 Zabbix SIA 开发,首个版本于 2001 年发布,目前已更新至多个版本(截至 2024 年 5 月,最新稳定版为 Zabbix 6.4)
-
开源性质:基于 GPL v2 许可证开源,用户可免费使用、修改源代码,适合企业根据自身需求定制监控方案。
-
跨平台支持:可运行在 Linux、Windows、Solaris 等主流操作系统上,能监控各类设备(服务器、路由器、交换机等)和应用(数据库、Web 服务、容器等)。
二.核心功能
- 全面监控能力
- 硬件监控:CPU、内存、磁盘、网络接口等服务器 / 设备硬件指标。
- 软件与应用监控:操作系统进程、服务状态(如 Apache、Nginx)、数据库性能(MySQL、PostgreSQL 等)、中间件(如 Tomcat)等。
- 网络监控:网络带宽、延迟、丢包率,以及交换机、路由器等网络设备的端口状态。
- 自定义监控:支持通过脚本、API 等方式监控特定业务指标(如订单量、用户在线数)。
- 告警机制
- 当监控指标超过预设阈值(如 CPU 使用率过高、服务宕机)时,可通过邮件、短信、微信、Slack 等多种渠道发送告警。
- 支持告警分级(严重、警告等)和升级策略(如多次告警未处理时通知上级)。
- 数据可视化与分析
- 提供丰富的图表(折线图、柱状图、饼图等),实时展示监控数据趋势。
- 支持自定义仪表盘,集中展示关键指标,方便管理员快速掌握系统状态。
- 历史数据存储在数据库(如 MySQL、PostgreSQL)中,可用于趋势分析和容量规划。
- 自动发现
- 能自动扫描网络中的设备和服务(如新增服务器、数据库实例),并自动添加监控项,减少手动配置工作量。
- 分布式监控
- 支持通过 Proxy 节点实现分布式监控,适合跨机房、大规模部署的场景,减轻中心服务器压力,提高监控效率。
三. 架构组成

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



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
3.安装zabbix服务端
[root@zabbix ~]# dnf install zabbix-agent.x86_64 zabbix-server-mysql.x86_64 -y
4.安装zabbix前端及客户端
[root@zabbix ~]# dnf install zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y
5.安装数据库
#解压mysql8软件包归档文件
[root@zabbix ~]# tar xf mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar
#安装mysql8
[root@zabbix ~]# dnf install 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 -y
#启动数据库
[root@zabbix ~]# systemctl enable --now mysqld
#查看数据库密码
[root@zabbix ~]# cat /var/log/mysqld.log
... 省略内容 ...
2025-08-18T10:31:29.263090Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: FD9j4Q7G:;dd
... 省略内容 ...
#数据库安全初始化
[root@zabbix ~]# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : no
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
... skipping.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
... skipping.
All done!
6.为zabbix建立数据库
#建立zabbix所需用户并授权
[root@zabbix ~]# mysql -uroot -p6751515ming+ZLN
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '6751515ming+ZLN';
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 -p6751515ming+ZLN zabbix
#启动 Zabbix 服务器和代理进程,并使其在系统启动时启动
[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
7.设置zabbix服务端配置
#编辑主配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=6751515ming+ZLN
8.设置zabbix server







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
五.zabbix agent 部署与使用
Zabbix Agent 是 Zabbix 监控系统的重要组件,主要部署在被监控的目标设备(如服务器、虚拟机、网络设备等)上,负责收集本地系统的各类数据(如 CPU 使用率、内存占用、磁盘空间、进程状态等),并将数据发送给 Zabbix Server 或 Zabbix Proxy 进行处理和存储。
Zabbix Agent 的核心作用
- 数据采集:主动主动或被动方式收集被监控设备的性能指标、系统状态、应用程序数据等。
- 数据传输:将采集到的数据发送给 Zabbix Server/Proxy,确保监控数据的实时性和准确性。
- 执行命令:接收并执行 Zabbix Server 下发的远程命令(如脚本执行、服务启停等),支持监控场景的自动化操作。
两种运行模式
- 被动模式(默认)
- 由 Zabbix Server 主动向 Agent 发起数据请求,Agent 被动响应并返回数据。
- 优势:节省 Agent 端资源,适合监控大规模设备时降低客户端压力。
- 劣势:Server 端请求压力可能较大,需合理配置超时时间和并发数。
- 主动模式
- Agent 主动向 Server/Proxy 发送采集到的数据,无需 Server 发起请求。
- 优势:减轻 Server 端请求压力,适合跨网段、广域网等网络条件复杂的场景。
- 配置:需在 Agent 配置文件中指定
ServerActive(目标 Server/Proxy 地址),并在 Server 端将监控项类型设为 “主动式”。
1.被动模式如何添加监控节点
#在要被监控节点中安装agent
[root@servera ~]# dnf install zabbix-agent-6.0.41-release1.el9.x86_64.rpm -y
[root@servera ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11 #zabbix server主机
ServerActive=192.168.56.11 #默认采集方式server端主动agent端被动,所有需要打开端口
Hostname=servera #指定主机名
#启动agent
[root@servera ~]# systemctl enable --now zabbix-agent.service
[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端添加要被监控的主机



2.主动模式如何添加监控节点
#在要被监控节点中安装agent
[root@serverb ~]# dnf install zabbix-agent-6.0.41-release1.el9.x86_64.rpm -y
[root@serverb ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11 #zabbix server主机
ServerActive=192.168.56.11 #主动模式下Agent向哪个Zabbix Server发送数据。
Hostname=servera #指定主机名
#启动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 模板、网络设备模板)
- 加入指定的主机组
- 发送发现通知(邮件、短信等)
- 执行自定义脚本(如初始化监控配置)





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




更多推荐


所有评论(0)