news 2026/10/17 2:36:23

使用 Zabbix 模板监控 D-Link DGS 1100 交换机:SNMPv2 采集与网络接口 LLD 全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Zabbix 模板监控 D-Link DGS 1100 交换机:SNMPv2 采集与网络接口 LLD 全解析

【免费下载链接】community-templates

Zabbix Community Templates repository

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

本文基于 community-templates 仓库中 template_d-link_dgs_1100 模板文档,系统讲解如何通过 SNMPv2 对 D-Link DGS 1100 系列网管交换机进行监控。你将掌握该模板的监控项设计、网络接口自动发现(LLD)机制、告警触发器逻辑与图形配置,并能够在 Zabbix 5.0 / 5.4 / 6.0 环境中完成导入与部署,实现对交换机系统信息、接口流量、丢包与错误、链路状态的实时监控。

模板概览:适用场景与基本信息

该模板的核心用途是:通过 SNMPv2 协议采集 D-Link DGS 1100 系列交换机的运行状态,并借助低层自动发现(LLD)技术,自动为设备上每一个网络接口批量生成监控项(items)、图形(graphs)和触发器(triggers),无需为每个端口手工创建配置。

根据 5.0 README 与模板源码(5.0 XML、6.0 YAML)中的声明,模板基本信息如下:

属性内容
模板名称D-Link DGS 1100
作者Mew
所属分组Templates/Modules
采集方式SNMP agent(SNMPv2)
使用的宏无(README 明确标注 "There are no macros links in this template.")
模板链接无(不依赖其他模板)
覆盖 Zabbix 版本5.0、5.4、6.0(仓库中分别存放对应格式文件)

值得留意的是,该模板在仓库中还包含面向具体型号的变体,例如 template_d-link_dgs-1100-08v2_snmpv2,说明 DGS 1100 系列下不同硬件版本可复用相同的监控思路。

模板文件与版本对照

仓库为同一模板按 Zabbix 版本提供了三种格式的文件,导入时请务必选择与你的 Zabbix 版本匹配的文件:

Zabbix 版本文件格式仓库相对路径
5.0XMLNetwork_Devices/D-Link/template_d-link_dgs_1100/5.0/template_d-link_dgs_1100.xml
5.4YAMLNetwork_Devices/D-Link/template_d-link_dgs_1100/5.4/template_d-link_dgs_1100.yaml
6.0YAMLNetwork_Devices/D-Link/template_d-link_dgs_1100/6.0/template_d-link_dgs_1100.yaml

对比 5.0 README 与 6.0 README 可以发现,各版本之间监控项设计保持一致(均为 3 个系统级监控项 + 1 条发现规则),主要差异体现在触发器表达式的书写语法上,这一点会在后文专门说明。

数据采集设计:三个系统级监控项

模板在设备系统层面采集 3 个基础监控项,全部走标准 MIB-II(1.3.6.1.2.1.1system 子树)的 OID,用于刻画设备的基本身份与运行时长:

监控项名称监控项 KeySNMP OID(MIB 对象)更新间隔值类型备注
DesctiptionSYSDescr.1.3.6.1.2.1.1.1.0(sysDescr.0)24hTEXT关联资产管理字段 MODEL(inventory_link: MODEL)
LocationSYSLocation.1.3.6.1.2.1.1.6.0(sysLocation.0)24hTEXT关联资产管理字段 LOCATION(inventory_link: LOCATION)
UptimeSYSUptime.1.3.6.1.2.1.1.8.0(sysUpTime.0)1mTEXT设备运行时长

对应源码见 5.0 XML 中的<items>段。从配置细节可以解读出以下设计意图:

  • 更新间隔分层:静态信息(描述、位置)24 小时采集一次即可,几乎不产生额外网络负担;动态信息(运行时长)则 1 分钟刷新,保证告警与图表数据的实时性。
  • trends 关闭:三个系统级监控项均设置了trends: '0'(不保留趋势数据),因为文本型数据没有做趋势聚合的价值。
  • 资产管理联动:Desctiption与Location通过inventory_link分别映射到主机资产(inventory)的 MODEL 与 LOCATION 字段,导入并关联主机后,可在 Zabbix 的资产清单中自动填充设备型号与安装位置,省去手工登记。
  • 注意模板源码中监控项名称写作 "Desctiption"(原文拼写,非 "Description"),这是社区模板保留的原始命名,导入后不影响任何功能。

网络接口自动发现(LLD)机制

模板的核心能力来自唯一一条发现规则Network Interface Discovery,其关键配置如下:

属性值
名称Network Interface Discovery
类型SNMP agent
SNMP OIDdiscovery[{#IFDESCR}, ifDescr]
监控项 Keynet.if.discovery
更新间隔1m

该规则通过遍历 IF-MIB 的ifDescr(OID1.3.6.1.2.1.2.2.1.2)枚举设备上所有网络接口,并将每个接口的索引号填充进宏{#SNMPINDEX}、将接口描述填充进宏{#IFDESCR}。Zabbix 随后会基于这两个宏,为每个发现的接口批量实例化下层的 item prototypes、graph prototypes 与 trigger prototypes。

这种"一次发现、批量生成"的设计带来两个直接收益:其一,无论交换机是 8 口还是 24 口,接入新设备后接口监控项会自动补齐;其二,接口名称(如 Port1、Gi1/0/1)会直接体现在监控项名称与图形标题中,便于运维人员快速对号入座。

接口级监控项原型:13 个 LLD 监控项详解

在 Network Interface Discovery 规则下,模板定义了 13 个接口级监控项原型(item prototypes)。它们全部以{#SNMPINDEX}定位具体接口,覆盖流量、丢包、错误、速率与链路状态五大维度。各监控项及其对应的 IF-MIB / ifX-MIB OID 如下表(完整继承自 README 的 Items collected 表 并结合 XML/YAML 源码补充 OID):

监控项名称监控项 KeySNMP OID更新间隔单位/类型
Interface {#IFDESCR} Inbound packets discardednet.if.in.discards[ifInDiscards.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.13.{#SNMPINDEX}(ifInDiscards)1m数值
Interface {#IFDESCR}: Inbound packets with errorsnet.if.in.errors[ifInErrors.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.14.{#SNMPINDEX}(ifInErrors)1m数值
Bits received: {#IFDESCR}net.if.in[ifHCInOctets.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.6.{#SNMPINDEX}(ifHCInOctets)1mbps
Interface {#IFDESCR}: Outbound packets discardednet.if.out.discards[ifOutDiscards.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.19.{#SNMPINDEX}(ifOutDiscards)1m数值
Interface {#IFDESCR}: Outbound packets with errorsnet.if.out.errors[ifOutErrors.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.20.{#SNMPINDEX}(ifOutErrors)1m数值
Bits sent: {#IFDESCR}net.if.out[ifHCOutOctets.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.10.{#SNMPINDEX}(ifHCOutOctets)1mbps
Interface {#IFDESCR}: Speednet.if.speed[ifSpeed.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.5.{#SNMPINDEX}(ifSpeed)5mbps
Interface {#IFDESCR}: Operational statusnet.if.status[ifOperStatus.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.8.{#SNMPINDEX}(ifOperStatus)1m数值(关闭趋势)
Interface {#IFDESCR}: Interface descriptionnet.if.type[ifDescr.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.2.{#SNMPINDEX}(ifDescr)1hTEXT(关闭趋势)
Interface {#IFDESCR}: Interface last changenet.if.type[ifLastChange.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.9.{#SNMPINDEX}(ifLastChange)10muptime
Interface {#IFDESCR}: Interface MAC addressnet.if.type[ifPhysAddress.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.6.{#SNMPINDEX}(ifPhysAddress)1hTEXT(关闭趋势)
Interface {#IFDESCR}: Interface typenet.if.type[ifType.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.3.{#SNMPINDEX}(ifType)1h数值(关闭趋势)

从源码(6.0 YAML)可以进一步读出几个关键设计细节:

  • 64 位计数器保证大流量准确:入/出流量采用 ifX-MIB 的ifHCInOctets/ifHCOutOctets(OID1.3.6.1.2.1.31.1.1.1.6/1.10),而非 32 位的 ifInOctets / ifOutOctets。对千兆端口的高速率流量而言,64 位计数器不会快速回绕,因此单位可安全地直接标定为bps。前提是设备固件支持 ifX-MIB(DGS 1100 系列当前固件普遍支持,可通过snmpwalk验证,见下文部署章节)。
  • 速率单位统一:Speed与流量监控项均使用bps单位;Interface last change使用uptime单位,可直接显示为"距离上次接口状态变化经过的时间"。
  • 更新间隔差异化:流量、丢包、错误、状态类 1 分钟;速率 5 分钟;描述、MAC、类型等静态信息 1 小时;last change 10 分钟,在监控实时性与采集开销之间取得平衡。

触发器原型:Link down 告警逻辑

模板只定义了一个告警触发器原型:Interface {#IFDESCR}: Link down,优先级为average(平均/一般严重级别),针对每个被发现接口自动生成。其表达式可从 5.0 README 的 Triggers 表 完整复现:

表达式(5.0 语法): {D-Link DGS 1100:net.if.status[ifOperStatus.{#SNMPINDEX}].last()}=2 and {D-Link DGS 1100:net.if.status[ifOperStatus.{#SNMPINDEX}].diff()}=1 恢复表达式(Recovery expression): {D-Link DGS 1100:net.if.status[ifOperStatus.{#SNMPINDEX}].last()}<>2

告警逻辑拆解如下:

  1. 依据 IF-MIB 标准,ifOperStatus取值为 1 表示 up(运行)、2 表示 down(关闭)。表达式第一段last()=2判断接口当前处于 down 状态;
  2. 第二段diff()=1判断该监控项的值较上一次采集发生了变化——两者结合,确保仅在"接口从 up 刚切换为 down"的时刻触发告警,而不是设备刚接入、接口尚未初始化时误报;
  3. 恢复表达式last()<>2表示接口状态一旦不再是 down(即恢复为 up),告警自动恢复(OK 状态),无需人工干预。

从 5.0 XML 可以看到触发器原型挂载在Operational status监控项原型之下,并显式声明了recovery_mode: RECOVERY_EXPRESSION,即"使用独立恢复表达式"的恢复模式。

版本语法差异:5.4 / 6.0 版本的 YAML 中,触发器表达式改写为新的函数引用语法(见 6.0 YAML 第 122-124 行):

表达式(5.4/6.0 语法): last(/D-Link DGS 1100/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DGS 1100/net.if.status[ifOperStatus.{#SNMPINDEX}],#1) <>last(/D-Link DGS 1100/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))=1 恢复表达式: last(/D-Link DGS 1100/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2

其中last(...,#1)<>last(...,#2)等价于 5.0 语法中的diff()=1,即比较最近一次与上一次采集值是否不同。两种写法语义完全一致,只是语法随 Zabbix 版本演进做了迁移。另外 README 的 Triggers 表格中同时列出了 "Link down" 与 "Link down (LLD)" 两行内容完全相同的记录,这是文档在导出时对触发器原型的重复呈现,实际模板源码中只定义了一个同名触发器原型。

图形原型:四类可视化视图

模板为每个发现的接口自动生成 4 张图形(graph prototypes),对应源码见 6.0 YAML 的graph_prototypes段:

图形名称包含监控项线条样式与配色
Bits sent/received {#IFDESCR}net.if.out / net.if.inBOLD_LINE,出向绿色 199C0D、入向红色 F63100
Inbound/Outbound packets discarded {#IFDESCR}net.if.in.discards / net.if.out.discards常规线条,入向绿、出向红
Inbound/Outbound packets with errors {#IFDESCR}net.if.in.errors / net.if.out.errors常规线条,入向绿、出向红
Speed of {#IFDESCR}net.if.speedGRADIENT_LINE(渐变线),绿色 199C0D

这套图形设计覆盖了日常排障的主要场景:Bits sent/received用于查看端口实时带宽占用;packets discarded / errors用于快速定位丢包与错误帧(常见于双工不匹配、CRC 错误、端口拥塞);Speed用于观察端口协商速率是否正常(例如千兆端口是否意外降速到百兆)。

部署到 Zabbix 的完整步骤

按照仓库根目录 README.md 给出的通用流程,结合本模板特性,完整部署路径如下:

1. 交换机侧准备(前置条件)

  • 在 D-Link DGS 1100 的 Web 管理界面中启用 SNMP 服务,并配置 SNMPv2 的 read community(建议避免使用默认的public,改为自定义字符串);
  • 确认管理 IP 与 Zabbix Server/Proxy 网络可达,且防火墙放行 UDP 161 端口;
  • 可用snmpwalk快速验证采集通路与 64 位计数器支持情况:
snmpwalk -v 2c -c <community> <交换机IP> 1.3.6.1.2.1.1.1.0 # 验证 sysDescr snmpwalk -v 2c -c <community> <交换机IP> 1.3.6.1.2.1.31.1.1.1.6 # 验证 ifHCInOctets(64 位计数器)

若第二条命令能正常返回各接口的字节计数,说明设备支持 ifX-MIB,流量监控项将正常工作。

2. 导入模板

  • 进入 Zabbix Web 界面Configuration → Templates → Import;
  • 根据你的 Zabbix 版本选择对应文件:5.0 XML、5.4 YAML 或 6.0 YAML;
  • 导入后可在模板列表中看到名为D-Link DGS 1100的模板,归属 Templates/Modules 分组。

3. 创建主机并关联模板

  • 进入Configuration → Hosts → Create host,填写设备名称与可见名称;
  • 添加 SNMP 类型接口(IP/DNS 填交换机管理地址,端口 161);
  • 在 Templates 字段中选择并关联D-Link DGS 1100;
  • 模板本身未定义任何宏(README 已注明),因此需要在主机级宏(或模板级宏)中正确配置 SNMP community,Zabbix 默认使用宏{$SNMP_COMMUNITY},请将其值改为与交换机一致的 read community。

4. 验证采集结果

  • 等待 1-2 个采集周期后,进入Monitoring → Latest data,筛选该主机,确认SYSUptime、SYSDescr等系统项已有数据;
  • 检查 Network Interface Discovery 是否按 1 分钟周期执行,并确认 LLD 已为各接口生成监控项、图形与触发器(Monitoring → Hosts → 该主机 → Discovery,以及接口列表);
  • 拔插一根网线进行实测,验证 "Interface {#IFDESCR}: Link down" 触发器能否在 average 优先级下正确触发并在接口恢复后自动恢复。

使用注意事项与已知限制

  • 协议版本前提:模板明确基于 SNMPv2 设计,需确认交换机与 Zabbix 均以 SNMPv2c 会话通信;若设备仅开放 SNMPv1,部分 MIB 对象(尤其是 ifX-MIB 的 64 位计数器)可能无法正常返回。
  • 无内置宏:模板不携带任何宏定义,SNMP community、超时等连接参数需要在主机或模板层面自行补充,这也是该模板保持"零依赖、开箱即用"风格的一部分。
  • 命名拼写:系统级监控项名称沿用原作者的 "Desctiption" 拼写,以及 README 中重复出现的 "Link down (LLD)" 行,均为社区模板原始内容,不影响功能,导入时无需修改。
  • 适用范围:模板以 D-Link DGS 1100 系列为监控对象;仓库中另有 DGS-1100-08v2 等按具体硬件版本细分的变体模板,若你的设备型号匹配,可优先选用对应变体以获得更贴合硬件的配置。

综上所述,D-Link DGS 1100 模板以"系统级监控 + 接口级 LLD"为骨架,用最少的配置覆盖了交换机运维中最常关注的链路可用性与流量健康度问题。导入后即可获得完整的监控项、告警与图形体系,是快速纳管中小型园区/办公网络接入层交换机的高性价比方案。

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载
上一篇:OpenRig resume基线验证实战:seed-resume-baseline与verify-native-resume
下一篇:终端视频下载神器 yoinks 的 auto 主题原理:为什么"不设颜色"反而更可靠?

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 2:36:19

CANN asc-devkit 多路归并排序实战:Sort32 与 MrgSort 协同实现全局有序

人工智能深度学习算子库CANNAscend 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址&…

作者头像 李华
网站建设 2026/10/17 2:36:19

PointMesh:一个顶点渲染万粒粒子

PointMesh&#xff1a;一个顶点渲染万粒粒子 【免费下载链接】godot-docs Godot Engine official documentation 项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs 写粒子系统时&#xff0c;你有没有算过账&#xff1a;几千个粒子&#xff0c;每个还是球体…

作者头像 李华
网站建设 2026/10/17 2:35:44

资深工程师如何将业务经验转化为可落地的Agent能力

1. 这不是“让程序员学AI”&#xff0c;而是把十年代码经验锻造成业务引擎“研发团队会用 AI 之后&#xff1a;怎样把编程经验变成业务 Agent 能力”——这个标题里藏着一个被严重低估的现实转折点。它不讲怎么调大模型API&#xff0c;不教Prompt Engineering入门&#xff0c;更…

作者头像 李华
网站建设 2026/10/17 2:33:39

Langfuse + RAGAS 生产级可观测与评测方案

Langfuse RAGAS 生产级可观测与评测方案 一、核心目标与设计原则 核心目标 构建一套非侵入、自动化、可追溯、可闭环的生产级RAG/Agent质量基建&#xff0c;解决「离线评测与线上脱节、问题定位难、优化无依据、质量不可控」的行业痛点&#xff0c;实现从「被动排查问题」到「…

作者头像 李华
网站建设 2026/10/17 2:32:52

Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华