资讯动态

Zabbix 8.0 模板实战:使用 SNMP 监控 D-Link DES/DGS 交换机(D-Link DES_DGS Switch by SNMP)

发布时间:2026/10/8 7:50:56 来源:尧图企业网站定制
指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载本技术指南以 Zabbix 官方仓库中的 D-Link DES/DGS 交换机 SNMP 模板说明文档 为骨架结合 模板 YAML 定义 展开完整讲解该模板的宏参数、监控项、触发器与六类低层自动发现LLD规则。读完本文你将掌握如何零脚本地导入并调优 D-Link DES/DGS 交换机监控模板理解其 CPU、内存、温度、电源、风扇与接口监控的实现原理与阈值调优方法。模板概览D-Link DES_DGS Switch by SNMP是 Zabbix 官方为 D-Link DES/DGS 系列交换机设计的内置模板。它的核心设计目标是通过 SNMP 即可完成对交换机的无缝监控不依赖任何外部脚本导入后只需在主机上配置 SNMP 接口即可开始采集数据。模板定义于 templates/net/dlink_des_snmp/其中README.md模板的官方说明文档本文讲解主体template_net_dlink_des_snmp.yaml可导入 Zabbix 8.0 的完整模板定义约 2000 行包含所有监控项、触发器、LLD 规则、值映射与宏配置。模板在 YAML 描述中声明了其使用的 MIB 集EQUIPMENT-MIB、IF-MIB、DLINK-AGENT-MIB、EtherLike-MIB、HOST-RESOURCES-MIB、SNMPv2-MIB、ENTITY-MIB。所有监控项与 LLD 规则的 OID 均可在 模板 YAML 中逐一核对。已知问题Known Issues官方文档明确记录了一个值得注意的已知问题D-Link 将缺失的 PSU 上报为 fail(4)固件版本Firmware: 1.73R008硬件版本 B1设备型号DGS-3420-26SC Gigabit Ethernet Switch这意味着在该固件版本上电源槽位未插入电源时swPowerStatus返回的是fail值 4而非disconnect值 6。在使用{$PSU_CRIT_STATUS}电源告警触发器时需注意该行为避免产生误报。支持版本与测试情况Zabbix 版本要求8.0 及以上官方测试设备DGS-3420-26SC Gigabit Ethernet Switch固件 1.73R008硬件版本 B1。部署与配置官方说明中关于部署的要求如下Zabbix 应按照官方手册中Templates out of the box章节的说明进行配置即正确配置主机 SNMP 接口、SNMP 版本、社区字符串/认证参数等交换机侧的具体 SNMP 开启方式启用 SNMP、配置只读团体名等请参考 D-Link 厂商文档模板通过wizard_ready: YES标记支持向导式快速导入见 模板 YAML 头部。导入后将模板链接到主机主机需具备至少一个 SNMP 接口Zabbix server 的 poller 进程即可按模板定义的频率轮询各项 OID同时内置的 ICMP 简单检查与 SNMP trap 采集也会一并生效。宏参数Macros详解模板在 YAML 的 macros 段 中为每个宏定义了数值校验正则方便在导入时通过 UI 校验输入。完整宏清单与默认值如下名称说明默认值{$CPU.UTIL.CRIT}CPU 利用率告警阈值90{$TEMP_CRIT_LOW}温度过低告警阈值5{$PSU_CRIT_STATUS}电源严重状态值4{$FAN_CRIT_STATUS}风扇严重状态值2{$TEMP_CRIT}温度过高严重阈值75{$TEMP_WARN}温度过高警告阈值65{$MEMORY.UTIL.MAX}内存利用率告警阈值90{$SNMP.TIMEOUT}SNMP 可用性触发器的时间窗口5m{$SNMP.UPTIME.WARN}主机已重启问题自动恢复的运行时间阈值10m{$ICMP_LOSS_WARN}ICMP 丢包告警阈值%20{$ICMP_RESPONSE_TIME_WARN}平均 ICMP 响应时间告警阈值秒0.15{$IF.ERRORS.WARN}错误包速率告警阈值可使用接口名作为上下文2{$IF.UTIL.MAX}接口带宽利用率告警阈值90{$IFCONTROL}是否对接口启用链路告警1 启用 / 0 停用可用接口名作上下文1{$NET.IF.IFNAME.MATCHES}接口名称匹配正则^.*${$NET.IF.IFNAME.NOT_MATCHES}接口名称排除正则默认过滤 loopback、null、docker veth 与 docker0 网桥完整值见模板见模板{$NET.IF.IFOPERSTATUS.MATCHES}接口运行状态匹配正则^.*${$NET.IF.IFOPERSTATUS.NOT_MATCHES}接口运行状态排除正则默认忽略 notPresent(6)^6${$NET.IF.IFADMINSTATUS.MATCHES}接口管理状态匹配正则^.*{$NET.IF.IFADMINSTATUS.NOT_MATCHES}接口管理状态排除正则默认忽略 down(2)^2${$NET.IF.IFDESCR.MATCHES}接口描述匹配正则.*{$NET.IF.IFDESCR.NOT_MATCHES}接口描述排除正则CHANGE_IF_NEEDED{$NET.IF.IFALIAS.MATCHES}接口别名匹配正则.*{$NET.IF.IFALIAS.NOT_MATCHES}接口别名排除正则CHANGE_IF_NEEDED{$NET.IF.IFTYPE.MATCHES}接口类型匹配正则.*{$NET.IF.IFTYPE.NOT_MATCHES}接口类型排除正则CHANGE_IF_NEEDED调优要点阈值类宏CPU、内存、温度、ICMP、接口错误等在 YAML 中均带regex校验如^-?([0-9]|(([0-9])\.([0-9])))$保证输入为合法数字{$TEMP_WARN}/{$TEMP_CRIT}/{$TEMP_CRIT_LOW}支持以{#SNMPVALUE}为上下文进行逐传感器覆盖例如{$TEMP_CRIT:Shelf 1}适合同一设备不同位置温度差异较大的场景接口相关宏{$IFCONTROL}、{$IF.UTIL.MAX}、{$IF.ERRORS.WARN}支持以{#IFNAME}为上下文按接口覆盖例如将某条不重要链路的{$IFCONTROL:port1}置为0即可屏蔽其链路告警{$NET.IF.*}系列正则宏共同作用于网络接口与 EtherLike-MIB 两条 LLD 规则中用于精确控制参与发现与监控的接口集合。监控项Items详解模板的基础监控项覆盖系统信息、健康状态与可达性三大类均定义于 YAML items 段。系统信息类名称MIB键值key预处理CPU utilizationDLINK-AGENT-MIBget[1.3.6.1.4.1.171.12.1.1.6.2.0]system.cpu.util[agentCPUutilizationIn1min.0]无FLOAT单位 %Hardware model nameSNMPv2-MIBsystem.hw.modelDiscard unchanged with heartbeat:1dHardware serial numberDLINK-AGENT-MIBget[1.3.6.1.4.1.171.12.1.1.12.0]system.hw.serialnumberDiscard unchanged with heartbeat:1dFirmware versionENTITY-MIBget[1.3.6.1.2.1.47.1.1.1.1.9.1]system.hw.firmwareDiscard unchanged with heartbeat:1dHardware version(revision)ENTITY-MIBget[1.3.6.1.2.1.47.1.1.1.1.8.1]system.hw.versionDiscard unchanged with heartbeat:1dUptime (network)SNMPv2-MIBsysUpTime.0system.net.uptime[sysUpTime.0]Custom multiplier:0.01百分之一秒 → 秒Uptime (hardware)HOST-RESOURCES-MIBhrSystemUptime.0system.hw.uptime[hrSystemUptime.0]Check for not supported value失败置 0 Custom multiplier0.01System locationSNMPv2-MIBsysLocation.0system.location[sysLocation.0]Discard unchanged with heartbeat:12hSystem contact detailsSNMPv2-MIBsysContact.0system.contact[sysContact.0]Discard unchanged with heartbeat:12hSystem object IDSNMPv2-MIBsysObjectID.0system.objectid[sysObjectID.0]Discard unchanged with heartbeat:12hSystem nameSNMPv2-MIBsysName.0system.nameDiscard unchanged with heartbeat:12hSystem descriptionSNMPv2-MIBsysDescr.0system.descr[sysDescr.0]Discard unchanged with heartbeat:12h从源码结构看硬件型号与系统描述共用sysDescr.0固件版本与硬件版本来自 ENTITY-MIB 的entPhysicalSoftwareRev/entPhysicalHardwareRev实例索引 1串号来自 DLINK-AGENT-MIB 私有 MIB。这些字符串类监控项统一采用心跳去重预处理12h/1d避免低频变化数据白白占用数据库空间。健康与可达性类名称类型键值key说明SNMP traps (fallback)SNMP trapsnmptrap.fallback收集未被其他 snmptrap 监控项匹配的所有 SNMP trapSNMP agent availabilityZabbix internalzabbix[host,snmp,available]SNMP 检查可用性0-不可用 / 1-可用 / 2-未知ICMP pingSimple checkicmpping主机 ICMP 可达性0-失败 / 1-成功ICMP lossSimple checkicmppingloss丢包百分比ICMP response timeSimple checkicmppingsecICMP 响应时间秒其中zabbix[host,snmp,available]直接驱动主机列表中的 SNMP 可用性图标是无 SNMP 数据采集触发器的数据源。触发器Triggers详解模板内置的静态触发器分为系统级与网络连通性两组均使用min()/max()/avg()/last()等 Zabbix 函数聚合配合宏阈值实现告警。系统级触发器名称表达式级别附加信息High CPU utilizationmin(/…/system.cpu.util[…],5m){$CPU.UTIL.CRIT}Warning5 分钟平均 CPU 超过阈值Device has been replacedlast(serial,#1)last(serial,#2) and length(last(serial))0Info串号变化需手动确认关闭Firmware has changedlast(firmware,#1)last(firmware,#2) and length(last(firmware))0Info固件版本变化需手动确认关闭Host has been restarted双分支表达式见下Warning需手动确认依赖No SNMP data collectionSystem name has changedlast(name,#1)last(name,#2) and length(last(name))0Info系统名变化需手动确认关闭No SNMP data collectionmax(zabbix[host,snmp,available],{$SNMP.TIMEOUT})0Warning依赖Unavailable by ICMP pingUnavailable by ICMP pingmax(/…/icmpping,#3)0High最近三次探测超时High ICMP ping lossmin(icmppingloss,5m){$ICMP_LOSS_WARN} and min(…)100Warning依赖 ICMP 不可达High ICMP ping response timeavg(icmppingsec,5m){$ICMP_RESPONSE_TIME_WARN}Warning依赖丢包与不可达触发器Host has been restarted触发器的精巧设计见 README 原文(last(hw.uptime)0 and change(hw.uptime)0 and last(hw.uptime,#2)42949672.96-(lastclock(…)-lastclock(…,#2))) or (last(hw.uptime)0 and change(net.uptime)0 and last(net.uptime,#2)42949672.96-(lastclock(…)-lastclock(…,#2)))该表达式同时处理硬件与网络两套 uptime当 uptime 计数器出现下降时判定为重启同时通过42949672.962^32 百分之一秒约 497 天的上限判断排除 32 位 SNMP 计数器回绕造成的误判。问题在 uptime 超过{$SNMP.UPTIME.WARN}默认 10m后自动恢复。Device has been replaced与Firmware has changed属于设备资产变更审计类告警length(...)0保证设备从未上报串号/固件时不产生告警。触发器依赖关系模板为触发器配置了完整的依赖链避免告警风暴Unavailable by ICMP ping (High) └─ No SNMP data collection (Warning) └─ Host has been restarted (Warning) └─ High ICMP ping loss (Warning) └─ High ICMP ping response time (Warning)即上层不可达告警触发后下层依赖告警自动抑制符合网络监控的常规排障逻辑。低层自动发现LLD与原型详解模板最核心的扩展能力来自6 条 LLD 规则它们把同一模型不同槽位/接口的监控对象动态实例化。LLD 规则的 OID、过滤条件、监控项原型与触发器原型均可从 YAML discovery_rules 段 中精确核对。1. Memory Discovery内存发现发现规则memory.discoveryOIDdiscovery[{#SNMPVALUE},1.3.6.1.4.1.171.12.1.1.9.1.1]DLINK-AGENT-MIB 的 agentDRAMutilization 表索引列轮询间隔 1h监控项原型vm.memory.util[agentDRAMutilization.{#SNMPINDEX}]OIDget[1.3.6.1.4.1.171.12.1.1.9.1.4.{#SNMPINDEX}]描述为已用 DRAM 占总量百分比0% 空闲到 100% 繁忙触发器原型min(…,5m){$MEMORY.UTIL.MAX}级别Average系统可用内存不足。2. Temperature Discovery温度发现发现规则temperature.discoveryOIDdiscovery[{#SNMPVALUE},1.3.6.1.4.1.171.12.11.1.8.1.1]EQUIPMENT-MIB 的 swTemperatureCurrent 索引列监控项原型sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}]OIDget[1.3.6.1.4.1.171.12.11.1.8.1.2.{#SNMPINDEX}]FLOAT 类型、单位 °C间隔 3m触发器原型支持{#SNMPVALUE}上下文宏覆盖阈值高于警告阈值avg(…,5m){$TEMP_WARN:{#SNMPVALUE}}Warning依赖严重阈值触发器高于严重阈值avg(…,5m){$TEMP_CRIT:{#SNMPVALUE}}High温度过低avg(…,5m){$TEMP_CRIT_LOW:{#SNMPVALUE}}Average。在 YAML 中这三个温度触发器都定义了恢复表达式如max(…,5m){$TEMP_CRIT}-3引入 3 度回差hysteresis避免温度在阈值附近抖动时告警反复触发/恢复。3. PSU Discovery电源发现发现规则psu.discoveryOIDdiscovery[{#SNMPVALUE},1.3.6.1.4.1.171.12.11.1.6.1.2,{#STATUS},1.3.6.1.4.1.171.12.11.1.6.1.3]swPowerIDof EQUIPMENT-MIB::swPowerTable并带过滤器{#STATUS} [^0]——只发现状态非 0 的电源槽位监控项原型sensor.psu.status[swPowerStatus.{#SNMPINDEX}]OIDget[1.3.6.1.4.1.171.12.11.1.6.1.3.{#SNMPINDEX}]单位 3m不保存趋势trends: 0使用EQUIPMENT-MIB::swPowerStatus值映射触发器原型count(/…/sensor.psu.status[…],#1,eq,{$PSU_CRIT_STATUS})1级别Average请检查电源单元故障。swPowerStatus的完整状态枚举来自 YAML 值映射段值含义0other1lowVoltage电压过低2overCurrent电流过高3working正常工作4fail故障5connect已连接但未上电6disconnect未连接默认{$PSU_CRIT_STATUS}4与 README 记录的缺失 PSU 被上报为 fail(4)的已知问题一致——若你的固件存在该行为且不希望误报可将此宏调整或结合{#SNMPVALUE}上下文区分槽位。4. FAN Discovery风扇发现发现规则fan.discoveryOIDdiscovery[{#SNMPVALUE},1.3.6.1.4.1.171.12.11.1.7.1.2,{#STATUS},1.3.6.1.4.1.171.12.11.1.7.1.3]swFanIDof EQUIPMENT-MIB::swFanTable过滤器{#STATUS} [^0]监控项原型sensor.fan.status[swFanStatus.{#SNMPINDEX}]OIDget[1.3.6.1.4.1.171.12.11.1.7.1.3.{#SNMPINDEX}]使用EQUIPMENT-MIB::swFanStatus值映射触发器原型count(…,#1,eq,{$FAN_CRIT_STATUS})1级别Average。swFanStatus状态枚举值含义0other1working2fail3speed-0风扇正常但未达阈值未转动4speed-low最低转速5speed-middle中速6speed-high最高转速默认{$FAN_CRIT_STATUS}2即仅fail触发风扇严重状态告警speed-0属于正常温控行为不会误报。5. Network interfaces discovery网络接口发现发现规则net.if.discoveryOID 从 IF-MIB 采集{#IFOPERSTATUS}、{#IFADMINSTATUS}、{#IFALIAS}、{#IFNAME}、{#IFDESCR}、{#IFTYPE}六个宏轮询 1h并使用全部{$NET.IF.*}正则宏做 AND 过滤监控项原型间隔 3m详见 README名称键值预处理Operational statusnet.if.status[ifOperStatus.{#SNMPINDEX}]无Bits receivednet.if.in[ifHCInOctets.{#SNMPINDEX}]Change per second 乘 8字节→比特Bits sentnet.if.out[ifHCOutOctets.{#SNMPINDEX}]Change per second 乘 8Inbound packets with errorsnet.if.in.errors[ifInErrors.{#SNMPINDEX}]Change per secondOutbound packets with errorsnet.if.out.errors[ifOutErrors.{#SNMPINDEX}]Change per secondOutbound packets discardednet.if.out.discards[ifOutDiscards.{#SNMPINDEX}]Change per secondInbound packets discardednet.if.in.discards[ifInDiscards.{#SNMPINDEX}]Change per secondInterface typenet.if.type[ifType.{#SNMPINDEX}]Discard unchanged with heartbeat:1dSpeednet.if.speed[ifHighSpeed.{#SNMPINDEX}]乘 1000000 Discard unchanged 1h触发器原型Link downAverage手动关闭{$IFCONTROL:{#IFNAME}}1 and last(operstatus)2 and (last(…,#1)last(…,#2))——结合diff()语义仅在实际发生过 up→down 状态变迁时触发避免对从未 up 过的接口报警README 特别警告若手动关闭由于.diff的存在下次轮询状态仍为 down 时不会再次触发High bandwidth usageWarning15 分钟平均入/出流量与({$IF.UTIL.MAX:{#IFNAME}}/100)×当前接口速度比较并要求speed0High error rateWarning5 分钟错误包速率超过{$IF.ERRORS.WARN:{#IFNAME}}恢复条件为低于阈值的 80%Ethernet has changed to lower speedInfo检测到接口速率下降且接口类型属于以太网类型集合6/7/11/62/69/117 等提示可能存在自协商问题。此外LLD 规则还生成Interface {#IFNAME}({#IFALIAS}): Network traffic图形原型将入/出流量、错误、丢弃叠加展示见 YAML graph_prototypes 段。6. EtherLike-MIB Discovery双工模式发现发现规则net.if.duplex.discovery从 IF-MIB EtherLike-MIB 采集{#SNMPVALUE}dot3StatsDuplexStatus、{#IFOPERSTATUS}、{#IFALIAS}、{#IFNAME}、{#IFDESCR}过滤器要求接口运行状态为 up(1)且{#SNMPVALUE}匹配(2|3)即 halfDuplex/fullDuplex并带一段 JavaScript 预处理为缺失字段补空字符串、保证 JSON 解析健壮性监控项原型net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}]使用EtherLike-MIB::dot3StatsDuplexStatus值映射1-unknown / 2-halfDuplex / 3-fullDuplex触发器原型In half-duplex modeWarning手动关闭——last(…)2提示请检查自协商设置与线缆。告警联动的设计总结从 README 与 模板 YAML 可以总结出这套模板的三个设计特征便于你在实际使用中按需裁剪零脚本依赖全部数据来自 SNMP GET、SNMP trap、ICMP 简单检查与 Zabbix 内部检查无任何外部脚本或 UserParameter自动发现为主温度、电源、风扇、接口、双工模式五类对象全部通过 LLD 动态实例化接口过滤交给正则宏换设备、换槽位无需改模板防误报机制完整温度触发器带 3 度回差恢复表达式重启检测排除 32 位计数器回绕接口告警通过{$IFCONTROL}上下文宏按接口开关电源/风扇状态使用数值枚举值映射仅在明确故障状态{$PSU_CRIT_STATUS}/{$FAN_CRIT_STATUS}下告警。若在使用中发现问题可按照 README 的 Feedback 章节将问题反馈给 Zabbix 官方支持渠道对告警策略的个性化调整优先通过覆盖宏值与上下文宏完成必要时再在导入模板的副本上修改触发器表达式。赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐Zabbix 8.0 模板深度解析基于 SNMP 监控 Brocade FC 光纤交换机Zabbix 8.0 模板深度解析基于 SNMP 监控 Brocade FC 光纤交换机 本篇文章以 Zabbix 官方模板 Brocade FC by SN指标监控可观测性告警运维使用 Zabbix 官方模板 HP Enterprise Switch by SNMP 监控 HP 企业级交换机宏、监控项与触发器全解析使用 Zabbix 官方模板 HP Enterprise Switch by SNMP 监控 HP 企业级交换机宏、监控项与触发器全解析 导读 本文以 Z指标监控可观测性告警运维Zabbix SNMP 监控 Brocade/Foundry 交换机Nonstackable 与 Stackable 模板完全指南Zabbix SNMP 监控 Brocade/Foundry 交换机Nonstackable 与 Stackable 模板完全指南 本篇指南以 Zabbix指标监控可观测性告警运维上一篇Basdonax AI RAG的配置文档自动生成从代码提取注释下一篇react-jsonschema-form中的表单字段帮助PDF链接创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑