【免费下载链接】community-templates
Zabbix Community Templates repository
本文基于 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.0 | XML | Network_Devices/D-Link/template_d-link_dgs_1100/5.0/template_d-link_dgs_1100.xml |
| 5.4 | YAML | Network_Devices/D-Link/template_d-link_dgs_1100/5.4/template_d-link_dgs_1100.yaml |
| 6.0 | YAML | Network_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,用于刻画设备的基本身份与运行时长:
| 监控项名称 | 监控项 Key | SNMP OID(MIB 对象) | 更新间隔 | 值类型 | 备注 |
|---|---|---|---|---|---|
| Desctiption | SYSDescr | .1.3.6.1.2.1.1.1.0(sysDescr.0) | 24h | TEXT | 关联资产管理字段 MODEL(inventory_link: MODEL) |
| Location | SYSLocation | .1.3.6.1.2.1.1.6.0(sysLocation.0) | 24h | TEXT | 关联资产管理字段 LOCATION(inventory_link: LOCATION) |
| Uptime | SYSUptime | .1.3.6.1.2.1.1.8.0(sysUpTime.0) | 1m | TEXT | 设备运行时长 |
对应源码见 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 OID | discovery[{#IFDESCR}, ifDescr] |
| 监控项 Key | net.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):
| 监控项名称 | 监控项 Key | SNMP OID | 更新间隔 | 单位/类型 |
|---|---|---|---|---|
| Interface {#IFDESCR} Inbound packets discarded | net.if.in.discards[ifInDiscards.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.13.{#SNMPINDEX}(ifInDiscards) | 1m | 数值 |
| Interface {#IFDESCR}: Inbound packets with errors | net.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) | 1m | bps |
| Interface {#IFDESCR}: Outbound packets discarded | net.if.out.discards[ifOutDiscards.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.19.{#SNMPINDEX}(ifOutDiscards) | 1m | 数值 |
| Interface {#IFDESCR}: Outbound packets with errors | net.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) | 1m | bps |
| Interface {#IFDESCR}: Speed | net.if.speed[ifSpeed.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.5.{#SNMPINDEX}(ifSpeed) | 5m | bps |
| Interface {#IFDESCR}: Operational status | net.if.status[ifOperStatus.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.8.{#SNMPINDEX}(ifOperStatus) | 1m | 数值(关闭趋势) |
| Interface {#IFDESCR}: Interface description | net.if.type[ifDescr.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.2.{#SNMPINDEX}(ifDescr) | 1h | TEXT(关闭趋势) |
| Interface {#IFDESCR}: Interface last change | net.if.type[ifLastChange.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.9.{#SNMPINDEX}(ifLastChange) | 10m | uptime |
| Interface {#IFDESCR}: Interface MAC address | net.if.type[ifPhysAddress.{#SNMPINDEX}] | 1.3.6.1.2.1.2.2.1.6.{#SNMPINDEX}(ifPhysAddress) | 1h | TEXT(关闭趋势) |
| Interface {#IFDESCR}: Interface type | net.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告警逻辑拆解如下:
- 依据 IF-MIB 标准,
ifOperStatus取值为 1 表示 up(运行)、2 表示 down(关闭)。表达式第一段last()=2判断接口当前处于 down 状态; - 第二段
diff()=1判断该监控项的值较上一次采集发生了变化——两者结合,确保仅在"接口从 up 刚切换为 down"的时刻触发告警,而不是设备刚接入、接口尚未初始化时误报; - 恢复表达式
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.in | BOLD_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.speed | GRADIENT_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
相关推荐
Zabbix 监控 D-Link DGS 1100 交换机:SNMPv2 模板(LLD 接口发现)深度解析与实战指南
Zabbix 监控 D Link DGS 1100 交换机:SNMPv2 模板(LLD 接口发现)深度解析与实战指南 本指南以 community templa
基于 SNMPv2 与 LLD 的 D-Link DGS 1100 交换机监控模板全解析
基于 SNMPv2 与 LLD 的 D Link DGS 1100 交换机监控模板全解析 本指南以 Zabbix Community Templates 仓库中
Zabbix 监控 D-Link DGS-1100 交换机:community-templates 官方 SNMPv2 模板全解析
Zabbix 监控 D Link DGS 1100 交换机:community templates 官方 SNMPv2 模板全解析 本指南以 Zabbix Co
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考