zabbix使用
一、zabbix使用
1.1 前提准备
- zabbix server 端开启
- zabbix agent 监控端开启
1.2 添加主机

- **模版:**这个为监控模版,里面包含了
各种监控项、触发器等指标 - **主机群组:**存放主机的一个主机群组
- **接口:**根据监控端的监控类型选择,有
agent、snmp、jmx、ipmi监控类型,之后填写好对应的信息 - **从哪监控:**如果有代理监控服务器,就选择proxy

添加完成后,等待会zbx亮灯说明连通性没问题

1.3 查看最新数据

1.4 查看监控项

搜索键值数据,查看对应监控项目,有些监控项目还提供触发器

这里可以筛选更多精细数据

选择对应的监控项,可以执行更多操作

1.5 查看模板
主机:显示使用该模版的主机
监控项:定义采集那些监控指标
触发器:定义报警规则
图形:有几个数据会展示,提供了可视化展示
仪表盘:综合展示面板,一个可以自定义的大屏,你可以把上面提到的“图形”、系统状态、报警列表等拼凑在一起
自动发现:自动化扫描,设定一个 IP 段,会自动去扫描这个网段里有哪些活着的机器,并自动把它们加入监控
web检测:模拟用户访问,如模拟登录流程:打开首页 -> 点击登录 -> 输入账号密码。如果哪一步打不开或超时,就报警

1.6 创建自定义模版
创建自定义模板,先创建一个自定义模板组,之后在创建自定义模板时选择该模板组

1.6.1 标记
用于标记该模板的一些具体事项

显示效果

1.6.2 宏
宏”本质上就是“变量,“宏”就是为了让监控配置更灵活、更通用。它允许定义一个占位符(比如 {$PORT}),在不同的场景下自动替换成具体的数值。
可以在模板里把端口号写成 {$MYSQL.PORT}。
- 当模板链接到 服务器 A 时,你只需告诉它
{$MYSQL.PORT} = 3306。 - 当模板链接到 服务器 B 时,你只需告诉它
{$MYSQL.PORT} = 3307。

1.6.3 值映射
监控设备时,很多数据返回的都是枯燥的数字(比如 0、1、2),如果不加解释,你很难一眼看出它们代表什么状态。值映射就是为了解决这个问题,将难懂的字符数字这些映射为易于理解的文字描述

1.7 创建自定义监控项
在自定义模板中创建自定义监控项
-
名称:这是给人看的名字。建议写得通俗易懂
-
类型:决定了 Zabbix Server 怎么去拿数据
-
键值:这是最核心的参数,是给机器看的指令代码,不同的监控项对应不同的键值,比如
system.cpu.load就是监控 CPU 负载 -
信息类型:告诉 Zabbix 预期拿到的数据是什么格式。
-
更新间隔:默认多久采集一次数据。
1m代表 1 分钟,s、m、h、d -
自定义时间间隔:对上面“更新间隔”的补充。允许你在特定时间段使用不同的采集频率
-
Terminal window 类型 间隔 期间灵活 50s 1-7,00:00-24:00# 参数解释:在一周的每一天(1-7),全天(00:00-24:00),把采集频率强制改为每 50秒 一次类型 间隔调度 wd1-5h9-18# 参数解释
-
-
超时:超过时间没收到返回数据,Zabbix 就会放弃并报错“超时”
- 全局:使用zabbix全局的超时设置(路径:管理-常规-超时)
- 覆盖:不使用zabbix全局的超时设置,使用自定义的超时设置
-
历史记录:原始数据保留多久,决定可以看多久的详细曲线图,或选择不保存
-
趋势:归档数据保留多久,Zabbix 会把每小时的最大值、最小值、平均值存一份“压缩包”。这份数据占用空间极小,可以存很久,决定了可以看多久的宏观趋势图
-
值映射:选择模版中创建的值映射
-
填入主机资产字段:把这个监控项采集到的数值,自动写入到主机的资产信息里,需要与资产管理模块配合使用
-
监控项参数:
net.tcp.service[service,<ip>,<port>],其中中括号里面的为参数,尖括号为可选参数,其余为必填参数

1.7.1 标记
添加标记,用于更加好理解改监控项,也可以继承模板的标记

1.7.2 预处理
用于将监控获取到的数据做处理,提取出需要的数据
假设你监控一个网页,Zabbix 抓回来的原始数据是一大段 HTML 代码:
<html><body><h1>当前温度:25.5度</h1></body></html>
你只想要 25.5 这个数字来画图
- 步骤 1:模式表达式
在这里填入正则规则:
.*(\d+\.\d+)度.*(意思是:找一个小数点数字,后面跟着“度”字,把它抓出来) - 步骤 2:输出
在这里填入:
\1(意思是:只保留我抓到的第一个括号里的内容) - 结果
经过预处理,原本的一大段 HTML 变成了干净的
25.5。
失败时采取的动作:
-
勾选状态:你截图中勾选了“失败时自定义值”。
-
含义:如果正则表达式匹配失败了(比如网页结构变了,找不到温度了),Zabbix 该存什么数据?
-
选项
:
- 丢弃值:这次采集作废,不存数据。
- 错误:标记为错误,可能会触发报警。
- 特定值:比如填 0,匹配不到就给个 0。

1.8 创建自定义触发器
- 事件名称:写清楚**“谁”出了“什么问题”**。可以用宏来自动替换主机名,{HOST.NAME} 的 CPU 负载过高!
- 严重性:给报警定级别,通常对应不同的颜色
- 表达式:定义报警的逻辑条件。只有满足这个条件,才会报警
- 点击右边的 “添加”按钮,会弹出一个构造器,通常包含三部分:
- 监控项:选择你要监控的数据
- 功能:选择判断方式(比如
最近一次值、平均值、最大值) - 结果:选择比较符号和阈值(比如
> 5) 
image-20260403144418621
- 点击右边的 “添加”按钮,会弹出一个构造器,通常包含三部分:
- 事件成功迭代:定义什么时候算“好了”,即报警恢复
- 表达式(默认):通常不需要改。默认逻辑是:如果报警条件是
> 5,那么当数值变回<= 5时,自动恢复 - 恢复表达式:如果你想设置“回差”。比如:超过 90度 报警,但必须降到 60度 以下才算恢复(防止在 90度 附近反复横跳)
- 表达式(默认):通常不需要改。默认逻辑是:如果报警条件是
- 问题事件生成模式:
- 单个:只要触发器报警了(比如服务器A宕机),它就产生一条“问题”。哪怕这个触发器持续报警了一整天,在“问题”列表里,它始终只占一行。直到它恢复了,这行才会消失(或变成已解决)。
- 多重:只要触发器处于报警状态,并且触发了更新,它就会不断生成新的问题记录。列表里会出现很多条关于同一个主机的报警
- 事件成功关闭:决定了告警“恢复”或者条件满足时,系统怎么去消除那些报警记录
- 所有问题:一旦恢复条件满足(或者你手动关闭),系统会把该触发器产生的所有未解决的问题记录统统关掉
- 所有问题如果标签值匹配:精准打击,只关符合条件的,需要配合“标签”功能使用
- 菜单条目名&菜单条目URL:当这个触发器报警时,Zabbix 会在报警信息旁边生成一个超链接按钮
- **菜单条目名:**按钮上显示的文字,比如
重启服务 - 菜单条目 URL:点击按钮后跳转的地址,比如填写故障服务器的后台管理系统
- **菜单条目名:**按钮上显示的文字,比如

1.8.1 标记

1.8.2 依赖关系
依赖关系 = 只有当“上游”没问题时,“下游”的报警才有效,当上游有问题时,只告警上游的问题,因为上游问题导致的告警不触发
场景模拟: 假设你有一个 核心交换机,下面连了 10台服务器。
-
如果没有依赖关系: 一旦核心交换机断电,10台服务器都会连不上。Zabbix 会瞬间给你发 11条 报警短信:
- 1条:核心交换机宕机
- 10条:服务器A不可达、服务器B不可达……服务器J不可达
结果:你的手机狂响,你根本不知道是交换机坏了,还是机房全停电了,还是光缆被挖断了,因为信息太杂乱。
-
如果设置了依赖关系: 你告诉 Zabbix:“如果核心交换机已经报警了,那么下面那10台服务器的报警就先别告诉我。”
- 配置:让“服务器A~J的触发器” 依赖 于 “核心交换机的触发器”。
- 结果:交换机断电时,你只会收到 1条 短信:“核心交换机宕机”。
- 逻辑:既然交换机都挂了,服务器肯定也是挂的,没必要重复报警。等交换机修好了,如果服务器还没好,那时候再报服务器的警。
设置:点击 “添加” 或 “添加主机触发器”。
- 选择父级触发器:
- 点击后会弹出一个列表,让你选择**“谁是大哥”**(即:谁出事了,我就不报警了)。
- 在这个例子里,你会选择那个**“核心交换机端口断开”或者“核心交换机Ping不通”**的触发器。
- 保存:
- 设置完成后,点击“添加”,然后“更新”。
设置后的效果:
- 当 父触发器(交换机)处于“问题”状态时,子触发器(服务器)即使满足了报警条件,也会处于 “已禁用” 或 “不发送通知” 的状态(具体取决于版本和动作配置,通常表现为不发送消息,但在问题列表中可能会显示为“依赖未满足”或类似的抑制状态)。
- 只有当 父触发器 恢复正常后,子触发器 才会重新开始正常报警。
图中理解就是若关联的huawei触发器如果告警了,那么这条触发器就不再触发了

1.9创建自定义图形
- 名称:图表的标题,会显示在图表上方。
- 宽(px) / 高(px):图表的尺寸。900x200 是默认的仪表盘视图大小,如果你要全屏查看,可以设得更大。
- 图形类别:主要用于在大屏上对图表进行分类,一般选“正常”即可。
- 显示图例:建议勾选。它会在图表底部显示每条线代表什么监控项,以及当前的数值。
- 查看工作时间:如果勾选,图表背景会将非工作时间(如周末、夜间)标记为灰色阴影,方便你区分业务高峰期和低谷期。
- 查看触发器:建议勾选。它会在图表上用一条红色的虚线标出报警阈值。比如你设置了 CPU > 80% 报警,图上就会出现一条 80 的横线,让你一眼看出什么时候超标了。
- 百分比线(左/右):一般不勾选。除非你监控的是百分比数据(如内存使用率),想画一条参考线(比如 90% 的警戒线)。
- 纵轴 Y 最小值/最大值:
- 可计算的(默认):Zabbix 会根据数据的最大值和最小值自动调整刻度。比如数据在 100-200 之间,Y 轴可能就是 0-250。
- 固定:如果你想强制统一所有图表的比例,可以选固定。比如监控内存,你可以强制 Y 轴最大值为总内存大小(如 16GB),这样不管用了多少,图表的高度都是固定的,方便对比。
- 监控项配置:定了图表里画什么线
- 名称:显示在图例里的名称
- 功能:选择绘画最小值、平均值还是原始数值

1.10 创建仪表盘
仪表盘分为全局仪表盘和模板仪表盘
| 特性 | 模板仪表盘 | 全局仪表盘 |
|---|---|---|
| 配置位置 | 在 模板 级别配置 | 在 界面仪表盘 中配置 |
| 数据来源 | 动态生成,仅显示单个主机的数据 | 可整合并显示多个主机、应用的数据 |
| 主要用途 | 提供标准化的“单机视图” | 创建跨主机的综合性“上帝视角” |
| 管理方式 | 集中管理,一处修改,处处生效 | 独立管理,手动创建和调整 |
1.10.1 全局仪表盘

- 添加小组件
选择好类型和监控项,之后自定义配置好适合的数据展示表格

- 添加页面

1.10.2 模板仪表盘


之后创建小组件的配置与全局仪表盘一致。
不同的是全局仪表盘配置好后可以实时看到数据展示,而模板配置好仪表盘后需要前往应用该模板的主机里去查看数据


1.11 创建告警媒介


-
名称:
邮件告警(保持默认即可,方便识别)。 -
类型:
电子邮件(保持默认)。 -
邮箱提供商:选择
Generic SMTP(通用 SMTP)兼容性最好。 -
SMTP 服务器:填写你的邮件服务器地址。
-
SMTP 服务器端口:如果是 SSL 加密,通常填
465;如果是普通连接,通常填25。 -
电子邮件:填写发件人邮箱地址、
-
SMTP HELO:留空即可。
-
安全连接:根据你填写的端口选择:
- 如果端口是 465,请点击选中
SSL/TLS。 - 如果端口是 25,通常选择
STARTTLS或无。
- 如果端口是 465,请点击选中
-
认证:选择
用户名和密码。 -
用户名:填写完整的发件人邮箱账号
-
密码:
- 注意:这里填的不一定是你的邮箱登录密码。很多企业邮箱(如腾讯企业邮)为了安全,需要开启 SMTP 服务并生成一个**“客户端专用密码”或“授权码”**。
- 如果你不知道,先尝试填登录密码;如果测试失败,请去网页版邮箱的设置里找“客户端设置”或“POP/SMTP”选项获取授权码。
-
消息格式:选择
HTML,这样告警邮件排版会更好看。
1.11.1 创建消息模板
创建消息通知的模板,选择模板类型和模板格式(可自定义)

1.11.2 配置选项

- 并发会话:同时发送告警的线程数
- 尝试次数:如果第一次发送失败(比如网络抖动、SMTP 服务器超时),Zabbix 会重试几次
- 尝试间隔:每次重试的间隔
1.12 创建触发器动作


名称:触发动作的名称
计算方式:选择每个条件相互之间的触发条件是与、或、非、也可以自定义计算方式,zabbix会显示出全部条件的触发表达式

配置动作满足后所要执行的操作

**注意:**所选的用户组或用户中,需要配置相应的报警媒介(邮箱地址等)
二、zabbix剩余功能使用
2.1 自动发现
Zabbix 的自动发现(Auto Discovery)主要用于自动扫描网络中的设备并自动将其添加到监控中,非常适合大规模或动态变化的网络环境,能极大减少手动添加主机的工作量。
2.1.1 新建自动发现规则

- 名称:自定义,例如
扫描局域网段。 - IP 范围:填写你要扫描的网段,例如
192.168.1.1-254。 - 更新间隔:扫描频率,例如
1h(每小时扫描一次)。 - 检查:选择扫描方式。
- ICMP ping:最常用,仅检测 IP 是否存活。
- Zabbix 客户端:如果目标机器安装了 agent,可以检测端口 10050。
- SNMP:用于网络设备(交换机、路由器)。
- 设备唯一性标准:通常选择 IP 地址。
- 主机名称/可见的名称:扫描添加的主机使用的名称/可见的名称
2.1.2 创建自动发现动作


条件选择创建的自动发现规则

设置之后的动作
2.2 关联事件规则
与触发器中的依赖关系逻辑相同
- 场景一:用“恢复事件”关闭“故障事件”
- 背景: 你有一个日志监控触发器,当发现 “Error” 时报警。
- 关联规则: 当同一个主机检测到 “Service Started”(服务启动)的日志事件时,自动关闭所有该主机上之前因为 “Error” 产生的未解决问题。
- 价值: 即使故障触发器还没恢复到正常值(比如日志文件里还留着 Error 记录),只要服务重启了,我们就认为问题解决了,自动清理报警列表。
- 场景二:识别重复告警
- 背景: 某个不稳定的网络设备可能每隔几秒就断连一次。
- 关联规则: 如果 1 分钟内同一个主机产生了 5 次“断连”事件,只保留最新的一个,关闭之前堆积的 4 个。
- 价值: 防止告警列表被刷屏。
- 场景三:跨触发器关联
- 背景: 触发器 A 监控 CPU 高负载,触发器 B 监控服务无响应。
- 关联规则: 当触发器 B(服务无响应)触发时,自动关闭触发器 A(CPU 高负载)的报警。
- 逻辑: 因为服务都挂了,CPU 肯定也不转了,没必要同时报两个警。
2.3 维护

作用:在指定的时间段内,告诉 Zabbix“不要给这些主机发报警”,但后台依然会继续收集数据。
维护类型:有数据收集 vs 无数据收集:两者的区别在于**“数据还在不在”**:
- 有数据收集(默认,推荐):
- 现象:Zabbix 继续监控主机,图表上依然有数据(你会看到维护期间 CPU 飙高或网络断流的曲线)。
- 告警:不发送报警。
- 适用场景:大部分计划内维护(如重启服务、升级软件)。因为你事后需要看图表来分析维护期间的系统表现。
- 无数据收集:
- 现象:Zabbix 停止监控,图表上这段时间是空白的(断层的),就像 Zabbix 罢工了一样。
- 告警:不发送报警。
- 适用场景:极少使用。通常用于网络彻底切断,Zabbix 根本无法连上服务器的时候;或者你完全不在乎这段时间的数据。
2.4 脚本

在创建脚本的时候需要选择脚本的范围和类型,**“范围”决定了“谁”能运行这个脚本,而“类型”决定了脚本“怎么”**执行。
- 类型:
- 脚本:
- 机制:Zabbix Server/Proxy 调用配置文件中定义的
UserParameter,或者通过 Zabbix Agent 执行命令。 - 要求:目标主机必须安装并运行 Zabbix Agent。
- 适用:绝大多数 Linux/Windows 命令(如
ls,ipconfig,systemctl)。
- 机制:Zabbix Server/Proxy 调用配置文件中定义的
- ssh:
- 机制:Zabbix Server 通过 SSH 协议连接目标主机执行命令。
- 要求:目标主机开启 SSH 服务,且 Zabbix Server 配置了 SSH 的公钥/私钥认证。
- 适用:Agent 没装,但有 SSH 权限的机器。
- telnet:
- 机制:通过 Telnet 协议连接执行。
- 适用:老旧的网络设备(交换机、路由器),安全性低,现在用得很少。
- ipmi:
- 机制:通过 IPMI 协议直接控制硬件。
- 适用:硬件层面的操作,如远程开机、重启服务器、查看风扇转速。
- webhook:
- 机制:发送 HTTP 请求(通常是 JSON 格式)到外部系统的 API 接口。
- 适用:与现代 DevOps 工具集成。
- 例子:
- 调用钉钉/飞书/企业微信机器人发送消息。
- 调用 Jira API 自动创建工单。
- 调用 Jenkins API 触发构建。
- 例子:
- 脚本:
2.4.1 动作操作
- 含义:脚本不会出现在菜单里让你手动点,而是由 Zabbix 自动触发。
- 配合“告警 -> 动作”使用。
- 当满足特定条件(如报警级别为“灾难”)时,Zabbix 自动运行这个脚本。

添加触发器动作

触发问题,可以看到自动执行了脚本,解决了问题

2.4.2 手动执行主机操作
- 含义:这是最常用的模式。脚本会出现在主机列表或主机详情页的菜单里。
选择手动执行主机操作,类型选择脚本,填写命令,该命令会在zabbix客户端执行,执行身份为运行zabbix进程的用户,因此需要查看该用户是否有运行该命令的权限。如果没有则需要修改visuo配置,添加免密规则
还需修改agent的配置文件zabbix_agentd.conf,修改配置EnableRemoteCommands=1
# 格式<你的用户名> ALL=(ALL:ALL) NOPASSWD: ALL
# <你的用户名>: 你想要赋予免密权限的用户。# ALL=(ALL:ALL): 允许在任何主机上,以任何用户和任何用户组的身份执行命令。# NOPASSWD: ALL: 执行任何命令都不需要密码。
# 具体示例zabbix ALL=(ALL) NOPASSWD: /usr/bin/systemctl
- 主机群组:设置哪些主机可以出现该脚本
路径:监测->主机,之后点击名称下的主机名称即可出现
也可在监测->问题中,点击问题事件中的主机

- 用户群组:设置哪些用户可以使用该脚本
2.4.3 手动执行事件操作
- 含义:脚本会出现在告警事件列表(“监测 -> 问题”)的操作菜单里。


三、自定义监控key
被监控端修改主配置文件zabbix_agentd.conf,开启配置文件子目录
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf将自定义key文件写入到子目录中
编写 Key 定义:
格式非常严格,必须遵守以下语法:
UserParameter=<key>,<command>
<key>:你在 Zabbix 前端使用的唯一标识符(建议加前缀区分,如myapp.status)。<command>:具体的 Shell 命令或脚本路径。
3.1 基于linux命令的key
cat >/usr/local/zabbix/etc/zabbix_agentd.d/tcp_status.conf <<'EOF'UserParameter=LISTEN,netstat -ant|grep -c LISTENUserParameter=TIME_WAIT,netstat -ant|grep -c TIME_WAITUserParameter=ESTABLISHED,netstat -ant|grep -c ESTABLISHEDEOF3.2 基于脚本的key
UserParameter=custom.check_disk_usage,/etc/zabbix/scripts/check_disk.sh3.3 自定义参数的key
# 定义一个通用的端口检查 KeyUserParameter=port.listen[*],netstat -tln | grep -c ":$1 "使用方法:
在 Zabbix 前端或 zabbix_get 中调用时传入参数:
- 检查 80 端口:
port.listen[80] - 检查 3306 端口:
port.listen[3306]
3.4 前端配置
新建监控项,键值填入自定义的key

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
赣公网安备36072602000131号