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
-
添加 Zabbix 7.0 官方 YUM 仓库,查看仓库配置文件是否生成。
-
安装 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
-
下载 MySQL 8.0.39 的 RPM 捆绑包,查看下载后的文件。
-
解压 RPM 捆绑包,查看解压后的所有 RPM 文件。
-
安装 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
-
启动 MySQL 服务并设置开机自启,查看日志中的临时 root 密码。
-
执行 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 数据库
-
创建 Zabbix 数据库、用户并授权,启用函数创建信任。
-
导入 Zabbix 初始表结构到数据库。
-
关闭函数创建信任,恢复 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
-
编辑 Zabbix Server 配置文件,设置数据库密码。
-
启动 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
-
在监控的节点(server-n)添加 Zabbix 官方仓库并安装 zabbix-agent 软件包。
[root@server-n1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
[root@server-n1 ~]# dnf search zabbix-agent
[root@server-n1 ~]# dnf install zabbix-agent.x86_64 -y

配置启动 zabbix-agent
-
编辑 hosts 文件添加域名解析,并同步到其他主机。
-
修改 Zabbix Agent 配置文件,设置 Server 地址和主机名。
-
启动 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 管理页面创建主机群组,进入"数据采集"→"主机群组",点击右上角"创建主机群组",输入群组名称后点击"添加"即可。


创建监测主机
- 要在 Zabbix 管理页面创建主机,进入"数据采集"→"主机",点击右上角"创建主机"。
- 填写主机名称、可见名称,选择对应的主机群组,输入 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) | 最后一次取值 |
③ 配置触发器
创建触发器
- 进入 Zabbix Web 界面,打开"数据采集"→"主机",找到目标主机并点击"触发器"标签页,点击右上角"创建触发器"。
- 填写触发器名称,在表达式输入框中配置触发条件(如 `{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 脚本
- 进入 Zabbix Web 界面,打开"配置"→"动作",点击右上角"创建动作"。
- 动作名称填写"重启 httpd 服务",条件类型选择"触发器",在触发器中勾选对应的触发器(如"httpd 服务停止")。
- 在"操作"标签页中点击"添加",操作类型选择"远程命令",命令内容填写:sudo systemctl restart httpd
- 目标列表选择当前主机(server-n1),类型选择"Zabbix Agent"。
- 将操作步骤持续时间设为 0,点击"添加"保存。



② 给 zabbix 授权
-
配置 zabbix 用户免密 sudo 权限,测试 sudo 切换是否成功。
[root@server-n1 ~]# echo "zabbix ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
[root@server-n1 ~]# sudo -u zabbix sudo whoami
③ 创建触发器动作
- 进入 Zabbix Web 界面,打开"配置"→"动作",点击"创建动作"。
- 填写动作名称,在"条件"标签页添加触发条件(如选择对应的触发器)。
- 切换到"操作"标签页,点击"添加"按钮,操作类型选择"远程命令",填写要执行的命令内容,目标选择当前主机,类型选择"Zabbix Agent"。








④ 测试触发器动作
再次关闭 http 服务,测试触发器是否会自动监测执行脚本
[root@server-n1 ~]# systemctl stop httpd.service


(6)设置报警
当系统或服务出现异常时,运维人员无法24小时盯着监控屏幕。
所以需要设置报警,让 Zabbix 在检测到异常时主动通过邮件、短信等方式通知相关人员,及时处理故障。
① 获取授权码
开启邮箱的 POP3/SMTP 服务
以163邮箱为例:https://mail.163.com/
- 登录 163 邮箱网页版,进入"设置"→"POP3/SMTP/IMAP",开启"POP3/SMTP 服务"或"IMAP/SMTP 服务"。系统会弹出一个窗口显示授权码,复制保存下来。
- 这个授权码用于在 Zabbix 或其他客户端中配置邮件发送时作为密码使用,而不是邮箱的登录密码。如果之前开启过,需要先关闭再重新开启才能获取新的授权码。




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


获取163邮箱的服务器地址
[root@zabbix ~]# dig -t mx 163.com

设置消息模版




测试报警媒介



③ 添加报警
添加报警
- 进入 Zabbix Web 界面,打开"告警"→"动作",选择已有的动作或点击"创建动作",填写动作名称(如"发送邮件告警"),在"条件"标签页添加触发条件(如触发器严重性级别)。
- 切换到"操作"标签页,点击"添加",操作类型选择"发送消息",选择告警媒介(如 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 模板、网络设备模板)
- 自动将设备添加到指定的主机组
- 发送发现通知(邮件、短信等)
- 执行自定义脚本(例如初始化监控配置)
删除主机

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









(3)设置自动发现
- 进入 Zabbix Web 界面,打开"数据采集"→"自动发现",点击"创建发现规则"。
- 填写名称,设置 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 范围等)。
- 切换到"操作"标签页,点击"添加",设置要执行的操作(如添加主机、主机群组、关联模板、启用主机等)。






