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		# 此处解出来即可,后续会有安装步骤

image-20250825160714331

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

image-20250825165506773

image-20250825165535583 image-20250825170108964

image-20250825183639720

image-20250825183718563

image-20250825183909239

4.9.修改字体文件

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

image-20250825195555451

image-20250825195732089

image-20250825195705179

image-20250825195804253

但是仔细观察之后会发现有些数据(汉字)并不能显示出来

解决字体问题方法:

[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 端将监控项类型设为 “主动式”。

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端添加要被监控的主机

image-20250826163110044

Snipaste_2025-08-26_16-32-26 Snipaste_2025-08-26_16-33-23
[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 模板、网络设备模板)
  • 加入指定的主机组
  • 发送发现通知(邮件、短信等)
  • 执行自定义脚本(如初始化监控配置)

image-20250826173711316

image-20250826173818026

image-20250826173841086

image-20250826173916548

image-20250826174725644

image-20250826174921633

image-20250826174244071

[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

image-20250826182258521

image-20250826181116739

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

image-20250826181905479

image-20250826190210042

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]

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

# 将自动发现停止且将动作停止

image-20250826191021672

image-20250826191912153

image-20250826192129162

image-20250826192626749

image-20250826192702122

image-20250826192908996

image-20250826192941343

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐