zabbix使用

5669 字
28 分钟
zabbix使用

一、zabbix使用#

1.1 前提准备#

  • zabbix server 端开启
  • zabbix agent 监控端开启

1.2 添加主机#

image-20260402160559948
image-20260402160559948

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

image-20260402160823166
image-20260402160823166

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

image-20260402163924828
image-20260402163924828

1.3 查看最新数据#

image-20260402164638745
image-20260402164638745

1.4 查看监控项#

image-20260402165511673
image-20260402165511673

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

image-20260402165608663
image-20260402165608663

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

image-20260402170033337
image-20260402170033337

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

image-20260402170157086
image-20260402170157086

1.5 查看模板#

主机:显示使用该模版的主机

监控项:定义采集那些监控指标

触发器:定义报警规则

图形:有几个数据会展示,提供了可视化展示

仪表盘:综合展示面板,一个可以自定义的大屏,你可以把上面提到的“图形”、系统状态、报警列表等拼凑在一起

自动发现:自动化扫描,设定一个 IP 段,会自动去扫描这个网段里有哪些活着的机器,并自动把它们加入监控

web检测:模拟用户访问,如模拟登录流程:打开首页 -> 点击登录 -> 输入账号密码。如果哪一步打不开或超时,就报警

image-20260402171940742
image-20260402171940742

1.6 创建自定义模版#

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

image-20260403111153331
image-20260403111153331

1.6.1 标记#

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

image-20260403111424054
image-20260403111424054

显示效果

image-20260403111529706
image-20260403111529706

1.6.2 宏#

宏”本质上就是“变量,“宏”就是为了让监控配置更灵活、更通用。它允许定义一个占位符(比如 {$PORT}),在不同的场景下自动替换成具体的数值。

可以在模板里把端口号写成 {$MYSQL.PORT}

  • 当模板链接到 服务器 A 时,你只需告诉它 {$MYSQL.PORT} = 3306
  • 当模板链接到 服务器 B 时,你只需告诉它 {$MYSQL.PORT} = 3307

image-20260403112019397
image-20260403112019397

1.6.3 值映射#

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

image-20260403130840369
image-20260403130840369

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>],其中中括号里面的为参数,尖括号为可选参数,其余为必填参数

image-20260403134550381
image-20260403134550381

1.7.1 标记#

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

image-20260403134716907
image-20260403134716907

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。

image-20260403135842661
image-20260403135842661

1.8 创建自定义触发器#

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

image-20260403150712268
image-20260403150712268

1.8.1 标记#

image-20260403150728553
image-20260403150728553

1.8.2 依赖关系#

依赖关系 = 只有当“上游”没问题时,“下游”的报警才有效,当上游有问题时,只告警上游的问题,因为上游问题导致的告警不触发

场景模拟: 假设你有一个 核心交换机,下面连了 10台服务器

  • 如果没有依赖关系: 一旦核心交换机断电,10台服务器都会连不上。Zabbix 会瞬间给你发 11条 报警短信:

    • 1条:核心交换机宕机
    • 10条:服务器A不可达、服务器B不可达……服务器J不可达

    结果:你的手机狂响,你根本不知道是交换机坏了,还是机房全停电了,还是光缆被挖断了,因为信息太杂乱。

  • 如果设置了依赖关系: 你告诉 Zabbix:“如果核心交换机已经报警了,那么下面那10台服务器的报警就先别告诉我。”

    • 配置:让“服务器A~J的触发器” 依赖 于 “核心交换机的触发器”。
    • 结果:交换机断电时,你只会收到 1条 短信:“核心交换机宕机”。
    • 逻辑:既然交换机都挂了,服务器肯定也是挂的,没必要重复报警。等交换机修好了,如果服务器还没好,那时候再报服务器的警。

设置:点击 “添加”“添加主机触发器”

  1. 选择父级触发器
    • 点击后会弹出一个列表,让你选择**“谁是大哥”**(即:谁出事了,我就不报警了)。
    • 在这个例子里,你会选择那个**“核心交换机端口断开”或者“核心交换机Ping不通”**的触发器。
  2. 保存
    • 设置完成后,点击“添加”,然后“更新”。

设置后的效果:

  • 父触发器(交换机)处于“问题”状态时,子触发器(服务器)即使满足了报警条件,也会处于 “已禁用”“不发送通知” 的状态(具体取决于版本和动作配置,通常表现为不发送消息,但在问题列表中可能会显示为“依赖未满足”或类似的抑制状态)。
  • 只有当 父触发器 恢复正常后,子触发器 才会重新开始正常报警。

图中理解就是若关联的huawei触发器如果告警了,那么这条触发器就不再触发了

image-20260403151515231
image-20260403151515231

1.9创建自定义图形#

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

image-20260403153334744
image-20260403153334744

1.10 创建仪表盘#

仪表盘分为全局仪表盘模板仪表盘

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

1.10.1 全局仪表盘#

image-20260407142606336
image-20260407142606336

  1. 添加小组件

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

image-20260407143119959
image-20260407143119959

  1. 添加页面

image-20260407143303783
image-20260407143303783

1.10.2 模板仪表盘#

image-20260407143350931
image-20260407143350931

image-20260407143423279
image-20260407143423279

之后创建小组件的配置与全局仪表盘一致。

不同的是全局仪表盘配置好后可以实时看到数据展示,而模板配置好仪表盘后需要前往应用该模板的主机里去查看数据

image-20260407143735518
image-20260407143735518

image-20260407143826586
image-20260407143826586

1.11 创建告警媒介#

image-20260408112940683
image-20260408112940683

image-20260408113004032
image-20260408113004032

  • 名称邮件告警(保持默认即可,方便识别)。

  • 类型电子邮件(保持默认)。

  • 邮箱提供商:选择 Generic SMTP(通用 SMTP)兼容性最好。

  • SMTP 服务器:填写你的邮件服务器地址。

  • SMTP 服务器端口:如果是 SSL 加密,通常填 465;如果是普通连接,通常填 25

  • 电子邮件:填写发件人邮箱地址、

  • SMTP HELO:留空即可。

  • 安全连接:根据你填写的端口选择:

    • 如果端口是 465,请点击选中 SSL/TLS
    • 如果端口是 25,通常选择 STARTTLS
  • 认证:选择 用户名和密码

  • 用户名:填写完整的发件人邮箱账号

  • 密码:

    • 注意:这里填的不一定是你的邮箱登录密码。很多企业邮箱(如腾讯企业邮)为了安全,需要开启 SMTP 服务并生成一个**“客户端专用密码”“授权码”**。
    • 如果你不知道,先尝试填登录密码;如果测试失败,请去网页版邮箱的设置里找“客户端设置”或“POP/SMTP”选项获取授权码。
  • 消息格式:选择 HTML,这样告警邮件排版会更好看。

1.11.1 创建消息模板#

创建消息通知的模板,选择模板类型模板格式(可自定义)

image-20260408113837234
image-20260408113837234

1.11.2 配置选项#

image-20260408114317022
image-20260408114317022

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

1.12 创建触发器动作#

image-20260408114558981
image-20260408114558981

image-20260408132749453
image-20260408132749453

名称:触发动作的名称

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

image-20260408133052470
image-20260408133052470

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

image-20260408133229727
image-20260408133229727

**注意:**所选的用户组或用户中,需要配置相应的报警媒介(邮箱地址等

二、zabbix剩余功能使用#

2.1 自动发现#

Zabbix 的自动发现(Auto Discovery)主要用于自动扫描网络中的设备并自动将其添加到监控中,非常适合大规模或动态变化的网络环境,能极大减少手动添加主机的工作量。

2.1.1 新建自动发现规则#

image-20260408150133559
image-20260408150133559

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

2.1.2 创建自动发现动作#

image-20260408150702460
image-20260408150702460

image-20260408150738040
image-20260408150738040

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

image-20260408150840719
image-20260408150840719

设置之后的动作

2.2 关联事件规则#

触发器中的依赖关系逻辑相同

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

2.3 维护#

image-20260408162832696
image-20260408162832696

作用:在指定的时间段内,告诉 Zabbix“不要给这些主机发报警”,但后台依然会继续收集数据。

维护类型:有数据收集 vs 无数据收集:两者的区别在于**“数据还在不在”**:

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

2.4 脚本#

image-20260408165724640
image-20260408165724640

在创建脚本的时候需要选择脚本的范围和类型,**“范围”决定了“谁”能运行这个脚本,而“类型”决定了脚本“怎么”**执行。

  • 类型:
    • 脚本:
      • 机制:Zabbix Server/Proxy 调用配置文件中定义的 UserParameter,或者通过 Zabbix Agent 执行命令。
      • 要求:目标主机必须安装并运行 Zabbix Agent。
      • 适用:绝大多数 Linux/Windows 命令(如 ls, ipconfig, systemctl)。
    • 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 自动运行这个脚本。

image-20260409110130079
image-20260409110130079

添加触发器动作

image-20260409112902270
image-20260409112902270

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

image-20260409113045571
image-20260409113045571

2.4.2 手动执行主机操作#

  • 含义:这是最常用的模式。脚本会出现在主机列表主机详情页的菜单里。

选择手动执行主机操作,类型选择脚本,填写命令,该命令会在zabbix客户端执行,执行身份为运行zabbix进程的用户,因此需要查看该用户是否有运行该命令的权限。如果没有则需要修改visuo配置,添加免密规则

还需修改agent的配置文件zabbix_agentd.conf,修改配置EnableRemoteCommands=1

Terminal window
# 格式
<你的用户名> ALL=(ALL:ALL) NOPASSWD: ALL
# <你的用户名>: 你想要赋予免密权限的用户。
# ALL=(ALL:ALL): 允许在任何主机上,以任何用户和任何用户组的身份执行命令。
# NOPASSWD: ALL: 执行任何命令都不需要密码。
# 具体示例
zabbix ALL=(ALL) NOPASSWD: /usr/bin/systemctl

image-20260409100910743
image-20260409100910743

  • 主机群组:设置哪些主机可以出现该脚本

​ 路径:监测->主机,之后点击名称下的主机名称即可出现

​ 也可在监测->问题中,点击问题事件中的主机

image-20260409104045468
image-20260409104045468

  • 用户群组:设置哪些用户可以使用该脚本

2.4.3 手动执行事件操作#

  • 含义:脚本会出现在告警事件列表(“监测 -> 问题”)的操作菜单里。

image-20260409105500933
image-20260409105500933

image-20260409105939149
image-20260409105939149

三、自定义监控key#

被监控端修改主配置文件zabbix_agentd.conf,开启配置文件子目录

Terminal window
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#

Terminal window
cat >/usr/local/zabbix/etc/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=LISTEN,netstat -ant|grep -c LISTEN
UserParameter=TIME_WAIT,netstat -ant|grep -c TIME_WAIT
UserParameter=ESTABLISHED,netstat -ant|grep -c ESTABLISHED
EOF

3.2 基于脚本的key#

Terminal window
UserParameter=custom.check_disk_usage,/etc/zabbix/scripts/check_disk.sh

3.3 自定义参数的key#

Terminal window
# 定义一个通用的端口检查 Key
UserParameter=port.listen[*],netstat -tln | grep -c ":$1 "

使用方法: 在 Zabbix 前端或 zabbix_get 中调用时传入参数:

  • 检查 80 端口:port.listen[80]
  • 检查 3306 端口:port.listen[3306]

3.4 前端配置#

新建监控项,键值填入自定义的key

image-20260409155508564
image-20260409155508564

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

zabbix使用
https://2233941.xyz/posts/zabbix使用/
作者
lumifly
发布于
2026-04-28
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
lumifly
不逐世间万丈星河,自守一隅细碎明光
✨ 今日一言
" 加载中... "
——
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
本年还剩 -- --%
本月还剩 -- --%
本周还剩 -- --%
距离--
--
--
天气预报
站点统计
文章
24
分类
1
标签
15
总字数
136,852
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录