一.Zabbix简介

官网:https://www.zabbix.com/

Zabbix 是一款开源的企业级监控解决方案,主要用于实时监控网络、服务器、应用程序等 IT 基础设施的状态和性能,帮助管理员及时发现并解决问题,保障系统的稳定运行

  • 开发与发布:由拉脱维亚公司 Zabbix SIA 开发,首个版本于 2001 年发布,目前已更新至多个版本(截至 2024 年 5 月,最新稳定版为 Zabbix 6.4)

  • 开源性质:基于 GPL v2 许可证开源,用户可免费使用、修改源代码,适合企业根据自身需求定制监控方案。

  • 跨平台支持:可运行在 Linux、Windows、Solaris 等主流操作系统上,能监控各类设备(服务器、路由器、交换机等)和应用(数据库、Web 服务、容器等)。

二.核心功能

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

  1. 数据采集:主动主动或被动方式收集被监控设备的性能指标、系统状态、应用程序数据等。
  2. 数据传输:将采集到的数据发送给 Zabbix Server/Proxy,确保监控数据的实时性和准确性。
  3. 执行命令:接收并执行 Zabbix Server 下发的远程命令(如脚本执行、服务启停等),支持监控场景的自动化操作。

两种运行模式

  1. 被动模式(默认)
    • 由 Zabbix Server 主动向 Agent 发起数据请求,Agent 被动响应并返回数据。
    • 优势:节省 Agent 端资源,适合监控大规模设备时降低客户端压力。
    • 劣势:Server 端请求压力可能较大,需合理配置超时时间和并发数。
  2. 主动模式
    • 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 主动发起注册请求,适用于动态环境(如容器、云服务器)中快速纳入新部署的设备。

核心原理

  1. 当 Zabbix Agent 启动时,会根据配置文件中的 ServerActive 参数,向指定的 Zabbix Server/Proxy 发送注册请求(包含自身 Hostname、IP 等信息)。
  2. Zabbix Server 接收请求后,根据预设的 “自动注册动作” 判断是否接受该 Agent,并自动执行配置操作(如添加主机、关联模板等)。

[!NOTE]

在做自动注册实验时确保自动发现动作已经全部停止

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

更多推荐