RHEL——Zabbix监控系统

Zabbix 是企业级开源监控平台,通过 Agent 采集服务器、数据库、中间件等组件的运行数据,提供可视化图表、告警规则和多渠道通知功能,可对 CPU、内存、磁盘、网络等指标进行实时监控,保障系统稳定运行。


一、Zabbix 简介

1. Zabbix 功能

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

全面监控能力

  • 硬件监控:采集 CPU、内存、磁盘、网络接口等服务器或设备硬件指标。
  • 软件与应用监控:监测操作系统进程、服务运行状态(如 Apache、Nginx)、数据库性能(MySQL、PostgreSQL 等)、中间件(如 Tomcat)等。
  • 网络监控:监控网络带宽、延迟、丢包率,以及交换机、路由器等网络设备的端口状态。
  • 自定义监控:支持通过脚本、API 等方式采集特定业务指标(如订单量、用户在线数)。

告警机制

  • 当监控指标超过预设阈值(如 CPU 使用率过高、服务宕机)时,可通过邮件、短信、微信、Slack 等渠道发送告警通知。
  • 支持告警分级(严重、警告等)和升级策略(如多次告警未处理时通知上级)。

数据可视化与分析

  • 提供折线图、柱状图、饼图等图表,实时展示监控数据变化趋势。
  • 支持自定义仪表盘,集中展示关键指标,便于快速掌握系统状态。
  • 历史数据存储在数据库(如 MySQL、PostgreSQL)中,用于趋势分析和容量规划。

自动发现

  • 自动扫描网络中的设备和服务(如新增服务器、数据库实例),并自动添加监控项,减少手动配置工作量。

分布式监控

  • 通过 Proxy 节点实现分布式监控,适用于跨机房、大规模部署场景,可减轻中心服务器压力并提高监控效率。

2. 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

准备三台主机,一台部署 Zabbix,两台部署测试测试主机

  • zabbix------192.168.153.100/24
  • server-n1------192.168.153.10/24
  • server-n2------192.168.153.20/24

(1)搜索 zabbix 版本

官网:Zabbix: The enterprise-class open source observability solution


(2)安装 zabbix

安装 zabbix

  1. 添加 Zabbix 7.0 官方 YUM 仓库,查看仓库配置文件是否生成。

  2. 安装 Zabbix 服务端、Web 界面、Nginx 配置、数据库脚本、SELinux 策略和 Agent 组件。

    [root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
    [root@zabbix ~]# ls /etc/yum.repos.d/
    [root@zabbix ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent -y


2. 安装数据库

(1)搜索 mysql 版本

mysql 数据库官网:MySQL


(2)下载 mysql

  1. 下载 MySQL 8.0.39 的 RPM 捆绑包,查看下载后的文件。

  2. 解压 RPM 捆绑包,查看解压后的所有 RPM 文件。

  3. 安装 MySQL 服务端、客户端和依赖库的核心组件。

    [root@zabbix ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar
    [root@zabbix ~]# ls
    [root@zabbix ~]# tar xf mysql-8.0.39-1.el9.x86_64.rpm-bundle.tar
    [root@zabbix ~]# ls
    [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


(3)启动 mysql

  1. 启动 MySQL 服务并设置开机自启,查看日志中的临时 root 密码。

  2. 执行 MySQL 安全配置脚本,输入临时密码登录后设置新密码(123456Zabbix.),依次选择删除匿名用户、禁止 root 远程登录、删除 test 数据库、重新加载权限表。

    [root@zabbix ~]# systemctl enable --now mysqld
    [root@zabbix ~]# grep password /var/log/mysqld.log
    [root@zabbix ~]# mysql_secure_installation
    Enter password for user root: #输入临时密码
    New password: #输入新密码(数字、英文大小写、特殊符号)
    Re-enter new password: #再次输入新密码
    ······
    Change the password for root ? ((Press y|Y for Yes, any other key for No) : no
    ······
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : yes
    ······
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : yes
    ······
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : yes
    ······
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : yes


(4)创建 Zabbix 的数据库

创建 zabbix 数据库

  1. 创建 Zabbix 数据库、用户并授权,启用函数创建信任。

  2. 导入 Zabbix 初始表结构到数据库。

  3. 关闭函数创建信任,恢复 MySQL 安全设置。

    [root@zabbix ~]# mysql -uroot -p123456Zabbix.
    mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
    mysql> create user zabbix@localhost identified by '123456Zabbix.';
    mysql> grant all privileges on zabbix.* to zabbix@localhost;
    mysql> set global log_bin_trust_function_creators = 1;
    mysql> quit;
    [root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
    Enter password: # 输入密码
    [root@zabbix ~]# mysql -uroot -p123456Zabbix.
    mysql> set global log_bin_trust_function_creators = 0;
    mysql> quit;


3. 启动 Zabbix Server

(1)启动 Zabbix 监控

启动 Zabbix

  1. 编辑 Zabbix Server 配置文件,设置数据库密码。

  2. 启动 Zabbix Server、Zabbix Agent、Nginx 和 PHP-FPM 服务并配置开机自启。

    [root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
    131 DBPassword=123456Zabbix.
    [root@zabbix ~]# systemctl enable --now zabbix-server zabbix-agent nginx php-fpm


(2)设置 Zabbix Server

下载中文包

复制代码
[root@zabbix ~]# dnf install glibc-langpack-zh -y

(3)修正字体文件

监测主机图形


修正字体

  • 删除默认字体,复制中文字体文件到 Zabbix 字体目录,创建软链接替换默认字体。

    [root@zabbix ~]# cd /usr/share/zabbix/assets/fonts/
    [root@zabbix fonts]# ls
    [root@zabbix fonts]# rm -rf graphfont.ttf
    [root@zabbix fonts]# ls /root/
    [root@zabbix fonts]# cp /root/simkai.ttf /usr/share/zabbix/assets/fonts/
    [root@zabbix fonts]# ls
    [root@zabbix fonts]# ln -s /usr/share/zabbix/assets/fonts/simkai.ttf /usr/share/zabbix/assets/fonts/graphfont.ttf


三、Zabbix Agent 部署

当需要监控服务器、虚拟机或网络设备的系统级指标(如 CPU、内存、磁盘、进程)时,直接通过 SNMP 或 IPMI 等方式采集的数据粒度较粗,无法获取应用层面的详细信息。

所以需要在目标设备上部署 Zabbix Agent,通过 Agent 采集更精细的系统指标、执行远程命令、主动上报数据,并能更高效地处理大规模监控场景。

1. Zabbix Agent 简介

(1)核心作用

  • 数据采集:主动或被动收集被监控设备的性能指标、系统状态和应用程序数据。
  • 数据传输:将采集的数据发送到 Zabbix Server 或 Proxy,保证监控数据的实时性和准确性。
  • 执行命令:接收并执行 Zabbix Server 下发的远程指令(如脚本运行、服务启停),实现自动化运维。

(2)两种运行模式

被动模式(默认)

  • Zabbix Server 主动向 Agent 请求数据,Agent 被动响应。
  • 优势:节省 Agent 端资源,适合大规模设备监控。
  • 劣势:Server 端请求压力较大,需合理调整超时和并发设置。

主动模式

  • Agent 主动将采集的数据发送给 Server 或 Proxy,无需 Server 发起请求。
  • 优势:减轻 Server 端请求压力,适合跨网段或广域网环境。
  • 配置:在 Agent 配置文件中设置 ServerActive(指定 Server/Proxy 地址),并将监控项类型设为"主动式"。

2. 部署被动模式

(1)添加监控节点

安装 zabbix-agent


配置启动 zabbix-agent

  1. 编辑 hosts 文件添加域名解析,并同步到其他主机。

  2. 修改 Zabbix Agent 配置文件,设置 Server 地址和主机名。

  3. 启动 Zabbix Agent 服务并确认端口监听正常。

    添加地址解析

    [root@zabbix ~]# vim /etc/hosts
    3 192.168.153.100 zabbix
    4 192.168.153.10 server-n1
    5 192.168.153.20 server-n2
    [root@zabbix ~]# for i in 10 20 ;do scp /etc/hosts root@192.168.153.$i:/etc/hosts ;done

    配置zabbix-agent

    [root@server-n1 ~]# vim /etc/zabbix/zabbix_agentd.conf
    93 AllowKey=system.run[*]

    102 LogRemoteCommands=1

    118 Server=192.168.153.100

    174 ServerActive=192.168.153.100

    185 Hostname=server-n1
    [root@server-n1 ~]# systemctl enable --now zabbix-agent.service
    [root@server-n1 ~]# netstat -antlupe | grep zabbix


(2)创建主机群组

当需要对多台主机进行批量配置、权限分配或告警设置时,逐一操作每台主机效率很低。

所以需要创建主机群组,将相同业务或环境的主机归类,实现批量管理和分层控制。

Zabbix 主机群组(Host Group)的核心作用是按业务、环境或用途对主机做逻辑归类,从而实现权限、配置、告警、可视化的批量与分层管理,是大规模监控的基础组织单元。

创建主机群组

  • 要在 Zabbix 管理页面创建主机群组,进入"数据采集"→"主机群组",点击右上角"创建主机群组",输入群组名称后点击"添加"即可。

创建监测主机

  1. 要在 Zabbix 管理页面创建主机,进入"数据采集"→"主机",点击右上角"创建主机"。
  2. 填写主机名称、可见名称,选择对应的主机群组,输入 Agent 或 SNMP 接口的 IP 地址和端口,然后点击"添加"即可。

(3)创建监控项

当需要采集主机的 CPU、内存、磁盘、端口状态等具体指标时,Zabbix 自身并不知道要采集什么。

所以需要创建监控项,通过定义 Key 告诉 Zabbix 要采集哪个数据、从哪里采集、多久采集一次。

创建监控项

  • 要在 Zabbix 管理页面创建监控项,进入"数据采集"→"主机",在目标主机所在行点击"监控项",然后点击右上角"创建监控项"并填写参数。也可以通过克隆现有监控项并重命名的方式快速创建。

  • 监控项能够正常工作,需要 Zabbix Server 能连接到 Agent 并执行采集命令,或 Agent 能主动上报数据。每个监控项对应一个内建的 Key,用于标识要采集的数据类型。

① 创建"系统启动时间"监控项(无参数)

② 创建"监听 tcp 端口"监控项(含参数)

安装 httpd 服务

复制代码
[root@server-n1 ~]# dnf install httpd -y
[root@server-n1 ~]# systemctl enable --now httpd

(4)创建触发器

当监控项采集到的数据超出合理范围时,需要及时发现问题并通知相关人员处理。

所以需要创建触发器,通过定义逻辑表达式来判断采集值是否异常,并在异常时触发告警。

① 触发器简介

触发器

  • 触发器用于判断监控项采集到的数据是否在合理范围内。
  • 采集值定义完成后,就可以定义触发器。
  • 触发器的定义是:界定特定监控项采集到的数据的异常区间或异常状态,通常用逻辑表达式表示。

评定采样数值是否在合理范围内,比较稳妥的方法是根据最后 N 次的平均值来判定。

  • 最近 N 分钟采集结果的平均值
  • 最近 N 次采集结果的平均值

② 触发器表达式

触发器表达式

|-----------|---------------------|------------------------------|
| 组成部分 | 示例 | 含义 |
| server | server-n1 | 主机名称 |
| key | net.tcp.port,80 | 主机上对应的监控项的 key |
| function | avg()、last()、max() | 评估数据是否在合理范围内所使用的函数 |
| parameter | 300 或 #10 | 函数参数;秒数表示时间范围,# 前缀表示最近 N 次取值 |
| operator | >、<、= | 比较运算符 |
| constant | 0、100、1024 | 用于比较的常量值 |


function 函数

|-------------|--------------|
| 函数 | 说明 |
| avg() | 平均值 |
| count() | 计数 |
| change() | 变化 |
| date() | 日期 |
| dayofweek() | 星期 |
| delta() | 增量 |
| diff() | 差异 |
| iregexp() | 正则匹配(不区分大小写) |
| last() | 最新值 |
| max() | 最大值 |
| min() | 最小值 |
| nodata() | 无数据 |
| now() | 当前时间 |
| sum() | 总和 |


函数参数示例

|----------|----------------|
| 参数 | 含义 |
| sum(300) | 秒内所有取值之和 |
| sum(#10) | 最近 10 次取值之和 |
| avg(60) | 最近 60 秒内取值的平均值 |
| avg(#5) | 最近 5 次取值的平均值 |
| last(#1) | 最后一次取值 |


③ 配置触发器

创建触发器

  1. 进入 Zabbix Web 界面,打开"数据采集"→"主机",找到目标主机并点击"触发器"标签页,点击右上角"创建触发器"。
  2. 填写触发器名称,在表达式输入框中配置触发条件(如 `{server-n1:net.tcp.port,80.last()}=0`),设置严重性级别,点击"添加"保存。

④ 测试触发器

关闭 http 服务,测试是否会触发告警

复制代码
[root@server-n1 ~]# systemctl stop httpd.service
[root@server-n1 ~]# netstat -antlupe | grep sshd
[root@server-n1 ~]# systemctl start httpd.service

(5)自动执行脚本动作

当触发器检测到服务异常时,如果只发送告警通知,运维人员需要手动登录服务器重启服务,响应慢且容易延误。

所以需要创建自动执行脚本动作,让 Zabbix 在触发告警时自动执行远程命令(如重启服务),实现自动化恢复。

① 创建重启 httpd 脚本
  1. 进入 Zabbix Web 界面,打开"配置"→"动作",点击右上角"创建动作"。
  2. 动作名称填写"重启 httpd 服务",条件类型选择"触发器",在触发器中勾选对应的触发器(如"httpd 服务停止")。
  3. 在"操作"标签页中点击"添加",操作类型选择"远程命令",命令内容填写:sudo systemctl restart httpd
  4. 目标列表选择当前主机(server-n1),类型选择"Zabbix Agent"。
  5. 将操作步骤持续时间设为 0,点击"添加"保存。

② 给 zabbix 授权
  • 配置 zabbix 用户免密 sudo 权限,测试 sudo 切换是否成功。

    [root@server-n1 ~]# echo "zabbix ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    [root@server-n1 ~]# sudo -u zabbix sudo whoami


③ 创建触发器动作
  1. 进入 Zabbix Web 界面,打开"配置"→"动作",点击"创建动作"。
  2. 填写动作名称,在"条件"标签页添加触发条件(如选择对应的触发器)。
  3. 切换到"操作"标签页,点击"添加"按钮,操作类型选择"远程命令",填写要执行的命令内容,目标选择当前主机,类型选择"Zabbix Agent"。

④ 测试触发器动作

再次关闭 http 服务,测试触发器是否会自动监测执行脚本

复制代码
[root@server-n1 ~]# systemctl stop httpd.service

(6)设置报警

当系统或服务出现异常时,运维人员无法24小时盯着监控屏幕。

所以需要设置报警,让 Zabbix 在检测到异常时主动通过邮件、短信等方式通知相关人员,及时处理故障。

① 获取授权码

开启邮箱的 POP3/SMTP 服务

以163邮箱为例:https://mail.163.com/

  1. 登录 163 邮箱网页版,进入"设置"→"POP3/SMTP/IMAP",开启"POP3/SMTP 服务"或"IMAP/SMTP 服务"。系统会弹出一个窗口显示授权码,复制保存下来。
  2. 这个授权码用于在 Zabbix 或其他客户端中配置邮件发送时作为密码使用,而不是邮箱的登录密码。如果之前开启过,需要先关闭再重新开启才能获取新的授权码。

② 创建报警媒介

创建报警媒介

  1. 进入 Zabbix Web 界面,打开"管理"→"报警媒介类型",点击"创建报警媒介类型"。
  2. 填写名称(如"Email"),类型选择"电子邮件",在"设置"标签页中配置 SMTP 服务器(如 smtp.163.com:587)、SMTP HELO 值、发件人邮箱地址、认证方式(用户名和密码/授权码)。
  3. 切换到"消息模板"标签页,添加默认的告警消息模板(故障和恢复),完成后点击"添加"。

设置报警媒介类型


获取163邮箱的服务器地址

复制代码
[root@zabbix ~]# dig -t mx 163.com

设置消息模版


测试报警媒介


③ 添加报警

添加报警

  1. 进入 Zabbix Web 界面,打开"告警"→"动作",选择已有的动作或点击"创建动作",填写动作名称(如"发送邮件告警"),在"条件"标签页添加触发条件(如触发器严重性级别)。
  2. 切换到"操作"标签页,点击"添加",操作类型选择"发送消息",选择告警媒介(如 Email),选择发送到管理员用户,点击"添加"。

给用户添加报警媒介


④ 测试报警

关闭 http 服务,测试邮箱是否收到报警

复制代码
[root@server-n1 ~]# systemctl status httpd
[root@server-n1 ~]# systemctl stop httpd.service
[root@server-n1 ~]# systemctl status httpd

(7)设置中文告警

修改报警模版为中文

复制代码
# 问题 模版配置
主题:   故障发生 {EVENT.NAME}
消息:
**************错误**************
告警地址: {HOSTNAME1}
告警主机: {HOST.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE1}
当前状态: {TRIGGER.STATUS}
事件ID:   {EVENT.ID}

# 问题恢复 模版配置
主题:  故障恢复 {TRIGGER.NAME} {EVENT.DURATION}: {EVENT.NAME}
消息:
**************恢复**************
恢复地址: {HOSTNAME1}
恢复主机: {HOST.NAME}
恢复时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
恢复信息: {TRIGGER.NAME}
恢复项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE1}
当前状态: {TRIGGER.STATUS}
持续时间: {EVENT.AGE}
事件ID:   {EVENT.ID}

再次关闭 http 服务,测试中文报警

复制代码
[root@server-n1 ~]# systemctl status httpd
[root@server-n1 ~]# systemctl stop httpd.service
[root@server-n1 ~]# systemctl status httpd

3. 自定义监控模版

当需要监控多台相同类型的主机(如 Web 服务器、数据库服务器)时,每台主机都手动添加相同的监控项、触发器和告警配置,工作量大且容易出错。

所以需要创建自定义模板,将监控配置打包复用。模板关联到主机后,所有主机自动继承配置,后期修改模板即可批量更新,无需逐一调整。

(1)自定义模板的意义

  • 不用再一台一台手动去配置
  • 统一监控标准,避免配置不一致
  • 后期维护只改模板,所有主机自动同步更新
  • 可以把全套监控能力打包复用
  • 按业务类型区分,实现分类管理
  • 不碰官方内置模板,升级时不会被覆盖
  • 支持导入导出,备份和迁移非常方便

(2)创建自定义模版

① 删除触发器和监控项

② 创建模版组

③ 创建模版

(3)创建监控项

① 创建"系统启动时间"监控项

② 创建"监听端口"监控项

③ 创建"磁盘"监控项

fs 是文件系统的具体实例,对应一个具体的挂载点(如 /home 或 /boot)。

<mode> 参数决定了如何计算文件系统的大小,常见模式包括:

  • total:返回文件系统的总大小(包含已使用和未使用的空间)
  • used:返回文件系统中已经使用的空间大小
  • free:返回文件系统中剩余的可用空间大小
  • available:返回文件系统中可以分配给普通用户的空间大小

(4)创建监控项图形

创建/分区监控图形


(5)添加模版到主机

添加模版到主机中


4. 部署主动模式

当监控环境跨多个网段、网络延迟较高或防火墙限制较多时,Zabbix Server 主动向 Agent 发起连接可能被拦截或超时。

所以需要部署主动模式,让 Agent 主动将采集的数据上报给 Server,减轻 Server 的连接压力,同时适应网络条件复杂的场景。

(1)添加监控节点

复制代码
# 添加地址解析
[root@zabbix ~]# vim /etc/hosts
  3 192.168.153.100     zabbix
  4 192.168.153.10      server-n1
  5 192.168.153.20      server-n2
[root@zabbix ~]# for i in 10 20 ;do scp /etc/hosts root@192.168.153.$i:/etc/hosts ;done

# 添加监控节点
[root@server-n2 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
[root@server-n2 ~]# dnf search zabbix-agent
[root@server-n2 ~]# dnf install zabbix-agent.x86_64 -y
[root@server-n2 ~]# vim /etc/zabbix/zabbix_agentd.conf
 93 AllowKey=system.run[*]
------------------
102 LogRemoteCommands=1
------------------
118 Server=192.168.153.100
------------------
174 ServerActive=192.168.153.100
------------------
185 Hostname=server-n2
[root@server-n2 ~]# systemctl enable --now zabbix-agent.service
[root@server-n2 ~]# netstat -antlupe | grep zabbix

(2)配置自动发现动作

当 Zabbix Server 通过自动发现规则检测到新设备(如服务器、交换机)或资源(如磁盘、端口)时,自动发现动作会根据预设的条件和操作,自动执行以下任务:

  • 将新发现的设备加入 Zabbix 监控
  • 为新设备自动关联相应的监控模板(如 Linux 模板、网络设备模板)
  • 自动将设备添加到指定的主机组
  • 发送发现通知(邮件、短信等)
  • 执行自定义脚本(例如初始化监控配置)

删除主机


添加自动发现动作

  1. 进入 Zabbix Web 界面,打开"告警"→"动作",在右上角选择"发现动作"类型,点击"创建动作"。
  2. 填写动作名称,在"条件"标签页设置匹配条件(如服务类型、IP 范围等)。
  3. 切换到"操作"标签页,点击"添加",设置要执行的操作(如添加主机、主机群组、关联模板、启用主机等)。

(3)设置自动发现

  1. 进入 Zabbix Web 界面,打开"数据采集"→"自动发现",点击"创建发现规则"。
  2. 填写名称,设置 IP 地址范围(如 192.168.153.10-50),选择检查类型(如"Zabbix 客户端 "system.uname""),设置更新间隔(如 1h),勾选已启用,点击"添加"保存。

5. 自动注册

当监控环境中有大量新增主机时,手动在 Zabbix 前端逐一添加主机效率很低且容易遗漏。

所以需要做自动注册,让 Zabbix Agent 启动后主动向 Server 注册,Server 根据预设的自动注册动作自动添加主机、关联模板并加入主机组,实现监控配置的自动化。

(1)自动注册简介

在 Zabbix 中,自动注册是一种由 Zabbix Agent 主动向 Zabbix Server 发起注册请求并纳入监控的机制。与 Server 主动扫描的"自动发现"不同,自动注册是 Agent 主动发起注册,适用于容器、云服务器等动态环境中快速纳入新部署的设备。

核心原理

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

自动发现与自动注册区别:

  • 自动发现(Discovery) 是 Zabbix Server 主动去扫描 IP 范围,找到设备后再进行添加。Server 去问"谁在吗",设备被动响应。
  • 自动注册(Auto-registration) 是 Zabbix Agent 主动向 Server 报告"我在这里,快来监控我"。Agent 主动发起,Server 被动接收。
  • 两者同时启用时容易产生冲突,所以做自动注册实验时建议停止自动发现动作。

|------|---------------|--------------------|
| 区别 | 自动发现 | 自动注册 |
| 谁发起 | Zabbix Server | Zabbix Agent |
| 方向 | Server 主动扫描 | Agent 主动上报 |
| 适用场景 | 固定 IP 范围、网络设备 | 动态环境、云服务器、容器 |
| 依赖条件 | 配置发现规则(IP 范围) | 配置 ServerActive 地址 |
| 发现方式 | 轮询扫描 | 启动时主动注册 |


(2)关闭自动发现

关闭自动发现服务,防止与自动注册冲突


(3)设置自动注册

设置 ServerActive 主动采集地址

复制代码
[root@server-n1 ~]# vim /etc/zabbix/zabbix_agentd.conf
174 ServerActive=192.168.153.100

[root@server-n2 ~]# vim /etc/zabbix/zabbix_agentd.conf
174 ServerActive=192.168.153.100

添加自动注册

  • 进入 Zabbix Web 界面,打开"告警"→"动作",在右上角选择"自动注册动作"类型,点击"创建动作"。
  • 填写动作名称,在"条件"标签页设置匹配条件(如主机名称包含、IP 范围等)。
  • 切换到"操作"标签页,点击"添加",设置要执行的操作(如添加主机、主机群组、关联模板、启用主机等)。

相关推荐
蜀道山老天师6 小时前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
mosaic_born12 小时前
centos 7.9 离线部署Zabbix 6.0.46 监控详细方案(解决数据库字符集问题)
数据库·centos·zabbix
爱莉希雅&&&1 天前
Zabbix监控linux服务器和Windows服务器
linux·运维·服务器·zabbix·监控
ElevenS_it1882 天前
连锁门店IT运维监控实战:200+门店网络设备+POS统一纳管+按区域分组告警路由完整配置(Zabbix Proxy架构)
运维·网络·架构·zabbix
万山寒4 天前
redhat 9 安装zabbix server pgsql
zabbix
.柒宇.6 天前
Zabbix7.0部署完整指南
linux·运维·zabbix·监控
ElevenS_it1887 天前
Redis监控实战:内存使用+命中率+连接数三类核心指标接入Zabbix+分级告警完整配置方案
运维·网络·redis·mybatis·zabbix
齐潇宇8 天前
Zabbix 7 概述与配置
linux·zabbix·监控告警
东北甜妹8 天前
Zabbix7设置警告
zabbix