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端将监控项类型设为 "主动式"。
1.被动模式如何添加监控节点
#在要被监控节点中安装agent
[root@servera ~]# rpm -Uvh
https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest
7.0.el9.noarch.rpm
[root@servera ~]# dnf install zabbix-agent.x86_64 -y
[root@servera ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.100
ServerActive=172.25.254.100
Hostname=servera
UnsafeUserParameters=1
AllowKey=system.run[*]
LogRemoteCommands=1
[root@servera ~]# systemctl enable --now zabbix-agent.service
创建主机群组
Zabbix 主机群组(Host Group)的核心作用是按业务 / 环境 / 用途对主机做逻辑归类,从而实现权限、 配置、告警、可视化的批量与分层管理,是大规模监控的基础组织单元Zabbix

在zabbix的server端添加要被监控的主机

此时 被监控主机可用性为铅色,意味着没有取到监控数据,这是因为没有添加监控项的原因
创建监控项
要在Zabbix管理页面创建一个监控项,请执行以下操作:
进入到: 数据采集→ 主机
在主机所在的行单击 监控项
点击屏幕右上角的创建监控项
输入表单中监控项的参数
你也可以打开一个已经存在的监控项,点击克隆 按钮,然后重命名保存。
任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent 端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应 的有其名字,被我们称之为 key 。



创建不带参数监控项

bash
[root@zabbix ~]# zabbix_get -s 172.25.254.10 -k system.uptime -p 10050
1518
带参数的监控项
示例1:监控一个文件大小
bash
#在要被监控的主机中建立一个大文件
[root@servera ~]# dd if=/dev/zero of=/mnt/timinglee bs=1M count=1024



示例2.监控cpu负载

示例3.监控端口

创建触发器
触发器简介
触发器就是用来判断监控项监控到的数据是否是在一个合理的范围之内
当我们的采集的值定义完了以后,就可以来定义触发器了。
我们触发器的定义是:界定某特定的监控项采集到的数据的非合理区间或非合理状态。通常为逻辑 表达式。
一般,我们评定采样数值是否为合理区间的比较稳妥的方法是------根据最后N次的平均值来判定结 果;这个最后N几分钟通常有两种定义方式:
-
最近N分钟所得结果的平均值
-
最近N次所得结果的平均值
触发器表达式
bash
{<server>:<key>.<function>(<parameter>)}<operator><constant>
server: 主机名称;
key: 主机上关系的相应监控项的key;
function: 评估采集到的数据是否在合理范围内时所使用的函数,目前触发器所支持的函数有
avg(平均)、count(计数)、change(变化)、date(日期)、dayofweek(星期)、
delta(增量)
diff、iregexp、last()、max(最大值)、min(最小值)、nodata(无数据)、now(现
在)
sum(总和)等
parameter: 函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用"#"做为前
缀
则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和
而sum(#10)则表示最近10次取值之和
配置一个触发器
进入: 数据采集 → 主机
点击主机一行的 触发器
点击右上角的 创建触发器 (或者点击触发器名称去修改一个已存在的触发器)
在窗口中输入触发器的参数


模拟问题观察数据
bash
[root@servera ~]# systemctl stop sshd

自动执行脚本动作(action)
创建脚本并提权zabbix用户

bash
[root@servera ~]# echo "zabbix ALL=(ALL)
[root@servera ~]# sudo -u zabbix sudo whoami
root
创建触发器动作
bash
#记录远程动作执行情况
[root@servera ~]# vim /etc/zabbix/zabbix_agentd.conf
LogRemoteCommands=1
创建动作脚本

创建触发器动作

测试问题
bash
[root@servera ~]# systemctl stop sshd

报警设置
一旦发生问题,我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢? 可以是发送邮件,让我们及时知道问题仍然存在,然后人工介入紧急处理;
邮箱报警,需要创建媒介
邮箱类型有很多种,比如QQ邮箱,阿里云邮箱,163邮箱等;想用邮箱接收报警,要开启邮箱的SMTP服 务
我们这里用163邮箱:
163邮箱官网: https://mail.163.com/
开启邮箱POP3/SMTP服务


设置告警媒介



添加告警


测试:
bash
[root@servera ~]# systemctl stop sshd

中文告警模板
bash
问题 模板配置如下
主题: 故障发生 {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}

2.zabbix创建自定义模板
zabbix创建自定义模板的意义
-
告别一台一台手动配置
-
统一监控标准,杜绝配置混乱
-
后期维护只改模板,所有主机自动更新
-
可打包全套监控能力
-
区分业务类型,分类管理
-
不碰官方内置模板,升级不被覆盖
-
支持导入导出,备份 / 迁移超方便
创建自定义模板



创建磁盘监控项

bash
fs 是文件系统的具体实例。一个具体的挂载点,如/home或者/boot等等;
<mode> 参数决定了如何计算文件系统的大小。通常,以下是一些常见的模式:
total: 返回文件系统的总大小,包括所有已使用的和未使用的空间。
used:返回文件系统中已经使用的空间大小。
free: 返回文件系统中剩余的可用空间大小。
available: 返回文件系统中可以分配给普通用户的空间。
创建监控项图形


添加自定义模板到主机


3.主动模式如何添加监控节点
bash
#在要被监控节点中安装agent
[root@serverb ~]# dnf install zabbix-agent-6.0.41-release1.el9.x86_64.rpm -y
[root@serverb ~]# dnf install zabbix-agent.x86_64 -y
[root@serverb ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.100
ServerActive=172.25.254.100
Hostname=serverb
UnsafeUserParameters=1
AllowKey=system.run[*]
[root@serverb ~]# systemctl enable --now zabbix-agent.service
配置自动发现动作
当 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,并自动执行配置 操作(如添加主机、关联模板等)。
在做自动注册实验时确保自动发现动作已经全部停止

