☰
使用 Zabbix LLD 自动发现并监控 Quagga BGP 对等体会话:community-templates 中的 Quagga BGP 模板全解析
2026/10/16 2:43:22 网站建设 项目流程

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载

本篇文章以 Zabbix Community Templates 仓库(community-templates)中收录的 Quagga BGP 模板 为对象,完整讲解如何通过 Zabbix Agent 的自动发现(LLD)机制动态发现 Quagga 路由器上的 BGP 邻居(Peer),并为每个邻居建立会话状态监控项与告警触发器。读完本文,你将掌握该模板的发现规则、监控项原型、触发器设计、三种 Zabbix 版本(5.0/5.4/6.0)下的导入文件差异,以及模板落地到实际 Quagga 环境所需的关键前置条件。

模板概览:监控 Quagga BGP 对等体的自动发现方案

Quagga 是一套经典的开源路由协议套件,其中bgpd守护进程负责 BGP 路由协议的运行。在实际网络运维中,一个 Quagga 路由器往往与多个自治系统(AS)建立 BGP 对等关系,如果逐一为每个 Peer 手工创建监控项,既繁琐又难以应对拓扑变化。本模板解决的正是这一痛点:通过 Zabbix 的 LLD(Low Level Discovery,低级自动发现)机制,自动枚举 Quagga 上所有 BGP 邻居,并为每个邻居动态生成监控项和触发器。

模板作者为 Renan Rodrigues,官方描述为“Template for auto-discovery bgp peers and monitor they”(自动发现 BGP 对等体并监控它们),适用于通过 Zabbix Agent 采集数据的监控场景。模板本身不包含任何宏定义,也没有链接其他模板,是一个完全自包含的轻量级模板。

在仓库中,该模板按 Zabbix 大版本号分目录存放:

目录导入文件格式对应 Zabbix 版本
Network_Appliances/template_quagga_bgp_sessions_monitor/5.0XML(template_quagga_bgp_sessions_monitor.xml)Zabbix 5.0
Network_Appliances/template_quagga_bgp_sessions_monitor/5.4YAML(template_quagga_bgp_sessions_monitor.yaml)Zabbix 5.4
Network_Appliances/template_quagga_bgp_sessions_monitor/6.0YAML(template_quagga_bgp_sessions_monitor.yaml)Zabbix 6.0

三个版本的监控逻辑完全一致,差异仅体现在导出格式(5.0 为 XML,5.4 及以后为 YAML)和触发器表达式的语法上(详见下文“版本差异”一节)。仓库根目录的 README.md 的索引中也将该模板收录在 Network_Appliances 分类下,方便用户检索。

模板的组成结构

从 5.0 的 XML 导出文件 中可以清晰看到模板的完整定义:

  • 模板组(groups):Quagga BGP,模板与所属组同名;
  • 应用(applications):BGP,所有监控项归属该应用,便于在“监控项”页按应用分组浏览;
  • 发现规则(discovery_rules):1 条;
  • 监控项原型(item_prototypes):1 个(挂载在发现规则下);
  • 触发器原型(trigger_prototypes):1 个(挂载在监控项原型下)。

在 5.4/6.0 的 YAML 导出文件 中,模板还带有tags(标签)定义:监控项原型带有Application: BGP标签,这是 5.4+ 版本相比 5.0 在元数据组织上的一个增量——Zabbix 5.4 之后引入了“标签”体系,可用于过滤、分组与告警路由。YAML 文件同时为模板、发现规则、监控项原型、触发器原型各自生成了uuid字段(如模板级baf99583c9b14e41ab4d438a4b5b0a6f),便于跨环境同步与模板去重。

自动发现规则:bgpdiscovery

模板的核心是一条名为BGP discovery的自动发现规则,关键参数如下:

参数值说明
名称BGP discovery在 Zabbix 前端展示的发现规则名称
类型Zabbix agent由被监控主机上的 Zabbix Agent 返回数据
键值(Key)bgpdiscovery发现规则使用的 item key
更新间隔(delay)3600 秒每小时执行一次发现,输出当前全部 BGP 邻居列表
生命周期(lifetime)1d未再被发现的 Peer 相关监控项在 1 天后被清理

该发现规则返回的数据中,每个 BGP 邻居会携带宏{#BGPPEER}——它代表一个 BGP 对等体的标识(典型实现中可解析为对端 IP 地址),后续监控项原型和触发器原型都依赖这个宏实现“每个 Peer 一套监控项”的模板化生成。

需要特别说明的是:发现规则的键值bgpdiscovery并非 Zabbix 内置键,而是依赖用户在 Agent 侧自定义的 UserParameter 实现。从仓库内容看,模板目录下只提供了模板导出文件,并未附带 Agent 端脚本(如解析show ip bgp summary输出的 shell 脚本),因此这是部署时必须自行补齐的一环。常见做法是在 Quagga 主机上通过vtysh -c "show ip bgp summary"等命令抓取邻居列表,将 JSON 化的{#BGPPEER}宏列表输出给 Zabbix 解析。这一部分是模板能否实际工作的关键前置条件,将在下文“落地前置条件”小节进一步说明。

监控项原型:Peer {#BGPPEER}

发现规则下挂载了一个监控项原型Peer {#BGPPEER},其参数为:

参数值说明
名称Peer {#BGPPEER}每个发现的邻居会生成同名监控项,宏被替换为实际 Peer 标识
键值bgpmon[{#BGPPEER}]带参数的 item key,参数为 Peer 标识
类型Zabbix agent数据由 Agent 采集
更新间隔60 秒每分钟检查一次会话状态
单位(units)state以“状态”为单位展示
归属应用BGP(5.4/6.0 另带标签Application: BGP)用于前端分组

该监控项返回的数值语义为0 或非 0 的状态值:结合触发器的判断逻辑可以确认,0 表示 BGP 会话处于 down(断开)状态,非 0 表示会话存活。监控项原型上标记了LLD,表明它是由上述发现规则动态实例化生成的,而非手工创建的静态监控项。

由于键值bgpmon[{#BGPPEER}]同样是自定义键,Agent 端需要实现对应的 UserParameter(例如通过vtysh查询指定邻居的会话状态,可用show ip bgp neighbor <peer>输出或show ip bgp summary的状态字段判断 Established 与否,转换为 1/0 返回)。这同样属于部署时需自行提供的部分,仓库模板本身只负责 Zabbix 侧的采集定义。

触发器原型:会话断开告警

监控项原型下挂载了一个触发器原型,用于在 Peer 会话断开时产生告警:

参数值
名称BGP session with {#BGPPEER} is down
描述Bgp session is down
优先级warning(警告)
表达式(5.0){Quagga BGP:bgpmon[{#BGPPEER}].last()}=0
表达式(5.4/6.0)last(/Quagga BGP/bgpmon[{#BGPPEER}])=0

表达式的逻辑非常直白:当对应 Peer 的监控项最新值为 0 时触发告警,即会话 down。注意模板未配置恢复表达式(Recovery expression 为空),告警的恢复将依赖 Zabbix 对触发器“问题”状态的自动清除机制(当表达式条件不再成立、即值恢复为非 0 时自动关闭)。

另外,在 5.0 的 README 触发器表格中,该触发器出现了两条记录(一条普通触发器、一条标注 LLD 的触发器),这实际是同一触发器原型在不同文档段落中的重复列举;从 XML 导出文件看,模板内只定义了一个触发器原型,不会造成重复告警。

版本差异:表达式语法与导出格式

该模板在 5.0、5.4、6.0 三个版本中的功能完全等价,但存在两处值得注意的差异:

  1. 触发器表达式语法:5.0(XML)使用旧式表达式{Quagga BGP:bgpmon[{#BGPPEER}].last()}=0,其中{<模板名>:<键值>.<函数>()}是 Zabbix 4.4 及之前风格;5.4/6.0(YAML)则使用 Zabbix 5.4 引入的新函数式语法last(/Quagga BGP/bgpmon[{#BGPPEER}])=0,路径以/开头。在导入模板时务必选择与目标 Zabbix 版本匹配的文件,否则可能因表达式语法不被解析而报错。
  2. 导出格式与元数据:5.0 使用 XML 格式(template_quagga_bgp_sessions_monitor.xml),5.4/6.0 使用 YAML 格式,且 YAML 版本为模板、发现规则、监控项原型、触发器原型都生成了uuid,并增加了tags标签定义。

部署与使用步骤

参照仓库根目录 README.md 给出的模板使用通用流程,结合本模板特性,完整落地步骤如下:

  1. 准备 Agent 端采集能力:在运行 Quagga(bgpd)的 Linux 主机上安装 Zabbix Agent,并在 Agent 配置(如zabbix_agentd.conf或*.conf的 UserParameter 段落)中定义两个自定义键:
    • bgpdiscovery:输出 BGP 邻居列表(JSON 格式,包含{#BGPPEER}宏);
    • bgpmon[{#BGPPEER}]:返回指定 Peer 的会话状态(1 存活 / 0 断开)。 典型实现思路是封装vtysh命令解析show ip bgp summary的输出,并确保 Agent 运行用户具备执行vtysh的权限。由于仓库未提供现成脚本,这一步需要根据自身 Quagga 环境自行编写(可参考仓库中同类 BGP 模板的采集思路,如 Mikrotik - BGP LLD 使用 SSH 采集、Cisco BGP SNMP 走 SNMP,而本模板走的是 Zabbix Agent 通道)。
  2. 导入模板:登录 Zabbix Web 前端,进入“配置 → 模板 → 导入”,按目标版本选择 5.0 XML、5.4 YAML 或 6.0 YAML 文件,导入成功后会生成名为Quagga BGP的模板。
  3. 关联主机:将目标 Quagga 主机(需已配置指向其 Agent 的接口)链接该模板。
  4. 验证发现结果:等待发现规则按 3600 秒间隔执行一次(或手动执行“立即刷新”),随后在“监控项”中应能看到每个 Peer 自动生成的Peer {#BGPPEER}监控项,在“触发器”中看到对应的会话断开告警。
  5. 按需调整轮询频率:发现间隔默认 3600 秒、状态检查间隔默认 60 秒,若网络规模或实时性要求不同,可在前端直接调整这些参数。

使用要点与限制

  • 模板不含宏:README 明确说明 “There are no macros links in this template”,即没有可配置的宏,如需调整监控频率,直接改发现规则/监控项原型的更新间隔即可。
  • 无模板链接:同样地,模板不依赖任何其他模板(“There are no template links in this template”),导入后开箱即用,无需额外挂载依赖。
  • 自定义键是运行前提:bgpdiscovery与bgpmon[...]均非内置键,必须由 Agent 端 UserParameter 提供实现;这是该模板与“纯内置键模板”最大的不同,也是排障时优先检查的点(zabbix_get/zabbix_sender手动测试键值是否返回预期 JSON 与 0/1 数值)。
  • 告警语义单一:触发器仅判断“会话 down”(值为 0),未包含前缀数量、路由抖动(flap)等更细粒度的监控;如需扩展,可在现有监控项原型基础上补充预处理或新增触发器原型。

小结

Quagga BGP 模板是一个“小而精”的 LLD 实战范例:用一条 3600 秒的发现规则枚举邻居,用一条 60 秒的带参监控项bgpmon[{#BGPPEER}]检查每个 Peer 的状态,再用一条 warning 级触发器在会话断开时告警——三个对象构成完整闭环,充分体现了 Zabbix 自动发现机制在“动态拓扑监控”场景下的典型用法。它在仓库中同时提供了 5.0/5.4/6.0 三种版本的导入文件,覆盖了多数存量与较新版本的 Zabbix 环境。部署时只需牢记一点:模板负责定义“监控什么、怎么告警”,而 Agent 端的bgpdiscovery/bgpmon[]采集脚本需要结合自身 Quagga 环境自行补齐,二者配合才能让这套 BGP 会话监控真正跑起来。

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载
上一篇:30 Seconds of Code 数组分组实战:用 reduce 按函数或属性名实现 groupBy
下一篇:OpCore Simplify:3步搞定黑苹果配置,告别复杂技术困扰

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询