用 Zabbix SNMP + LLD 监控 Cisco SG300/SG200 交换机:community-templates 中 Cisco_SG300-52-d 模板实战解析

发布时间:2026/10/17 10:31:25
用 Zabbix SNMP + LLD 监控 Cisco SG300/SG200 交换机:community-templates 中 Cisco_SG300-52-d 模板实战解析 【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载本指南以 Zabbix Community Templates 仓库中的Cisco_SG300-52-d模板为核心完整讲解如何基于 SNMP 与 LLD低级别发现监控 Cisco Small Business 系列SG300 / SG200交换机。读完本文你将掌握该模板的三条 LLD 发现规则、全部采集项与预处理机制、触发器体系、值映射设计以及如何在 Zabbix 5.0 / 5.4 / 6.0 中导入部署并关联主机。模板概述与适用场景Cisco_SG300-52-d由社区作者 padamiak 于 2019 年 5 月完成最初面向 Zabbix 4.0 设计并在 SG300 与 SG200 两款交换机上实测通过。仓库为不同 Zabbix 版本提供了对应格式的模板文件Zabbix 版本模板文件5.0Network_Devices/Cisco/template_cisco_sg300_and_sg200/5.0/template_cisco_sg300_and_sg200.xml5.4Network_Devices/Cisco/template_cisco_sg300_and_sg200/5.4/template_cisco_sg300_and_sg200.yaml6.0Network_Devices/Cisco/template_cisco_sg300_and_sg200/6.0/template_cisco_sg300_and_sg200.yaml虽然模板名取自 SG300-52 这一 52 口型号但其监控逻辑完全基于标准 MIB 与 Cisco Small Business 私有 MIB因此可以套用到整个 SG300 / SG200 系列。有一点需要特别注意SG200 的老版本固件不支持 SNMP在使用本模板前建议先将交换机固件升级到支持 SNMP 的版本否则所有采集项都将无法取到数据。模板设计思路SNMP LLD 的数据精简策略该模板的核心设计理念是按需发现、按状态过滤从源码结构看主要包含三个层次基础采集项通过 SNMP agent 直接轮询系统级信息名称、描述、位置、联系人、运行时间、CPU、温度不依赖任何发现机制接口级发现通过Net If Discovery与Net vlan Discovery两条 LLD 规则动态发现物理接口与 VLAN 虚拟接口硬件健康发现通过Fan Discovery动态发现风扇如果该型号存在风扇。原文档特别强调接口只有在 operational up 时才被发现这是控制数据量、减少无意义数据的关键设计。对应到 YAML 实现中Net If Discovery的过滤器明确要求{#IFOPERSTATUS}1即 ifOperStatus 为 up同时排除了若干不会产生真实流量的接口类型。这样即使交换机有几十个物理口Zabbix 也只会为实际在用的接口创建监控项与触发器。模板整体由两部分模板组成主模板Cisco_SG300-52-d负责 SNMP 数据采集并链接了 Template Module ICMP PingICMP Ping 官方模块 v0.12提供 ICMP 连通性、丢包与响应时间的补充监控。基础采集项系统信息、CPU、温度与运行时间主模板包含 6 个非 LLD 的基础采集项在 6.0 YAML 模板 中定义如下采集项名称Item keySNMP OID更新间隔类型/单位说明Device namesystem.name1.3.6.1.2.1.1.5.01hCHARsysName设备主机名Device descriptionsystem.descr1.3.6.1.2.1.1.1.01hCHARsysDescr设备型号/固件描述Device contact detailssystem.contact1.3.6.1.2.1.1.4.01hCHARsysContact管理联系人Device locationsystem.location1.3.6.1.2.1.1.6.01hCHARsysLocation设备物理位置snmp uptimesystem.uptime1.3.6.1.2.1.1.3.0120sssysUpTimeSNMP 服务运行时间CPU utilizationsystem.cpu.util1.3.6.1.4.1.9.6.1.101.1.8.060s百分比Cisco Small Business 私有 MIB1 分钟平均 CPUtemperature statussystem.temp.status1.3.6.1.4.1.9.6.1.101.53.15.1.13.1180s枚举机箱温度状态CPU 利用率的三个 OIDCPU utilization是私有 MIB1.3.6.1.4.1.9.6.1.101.1.7/8/9.0下的三个兄弟节点模板的 item 描述中完整列出了它们1.3.6.1.4.1.9.6.1.101.1.7.0最近 5 秒 CPU 利用率1.3.6.1.4.1.9.6.1.101.1.8.0最近 1 分钟 CPU 利用率模板实际采集此值1.3.6.1.4.1.9.6.1.101.1.9.0最近 5 分钟 CPU 利用率。模板选择了 1 分钟平均值作为system.cpu.util的取值兼顾了响应速度与平滑度若希望趋势更平缓可以把 item 的 SNMP OID 改为.9.0。uptime 的预处理与重启触发器system.uptime读取标准 MIB 的 sysUpTime该对象的单位为百分之一秒1/100 s因此模板为其配置了MULTIPLIER 0.01的预处理步骤把原始计数换算为以秒为单位的真实运行时间对应 YAML 中preprocessing: MULTIPLIER段落。触发器{HOST.NAME} snmp has been restarted在last(/Cisco_SG300-52-d/system.uptime)600时触发优先级 WARNING需手动关闭。由于这里采集的是 sysUpTime本质上反映的是SNMP 服务的重启而非设备整机重启——这一点在触发器的波兰语描述 Właściwie to jest uptime usługi snmp实际上这是 SNMP 服务的 uptime中写得很直白解读告警时要注意区分。温度状态值映射与告警分级temperature status读取私有 MIB 的rlPhdUnitEnvParamMonitorTemperatureStatus1.3.6.1.4.1.9.6.1.101.53.15.1.13返回 13 三个枚举值。模板通过值映射valuemapSNMP Cisco rlPhdUnitEnvParamMonitorTemperatureStatus将其翻译为可读文本并设计了两个分级触发器触发器名称表达式优先级含义{HOST.NAME} overTemperatureThresholdlast(/Cisco_SG300-52-d/system.temp.status)2AVERAGE超过温度告警阈值{HOST.NAME} overCriticalTemperatureThresholdlast(/Cisco_SG300-52-d/system.temp.status)3HIGH超过临界温度阈值两个触发器均设置了manual_close: YES即需要运维人员确认处理后才能手动关闭避免温度回落前告警反复横跳。值映射的完整定义可在 6.0 YAML 模板 的valuemaps段中找到ok(1)、overTemperatureThreshold(2)、overCriticalTemperatureThreshold(3)。另外CPU utilization还带有一个基础触发器high CPU utilization表达式为avg(/Cisco_SG300-52-d/system.cpu.util,5s)80优先级 WARNING即 5 秒内平均 CPU 超过 80% 即告警配套提供了名为CPU util.的独立图形。三条 LLD 发现规则详解原文档列出的三条发现规则及其更新间隔如下发现规则名称类型Key更新间隔Net vlan DiscoverySNMP agentnet.vlan.discovery89mFan DiscoverySNMP agentfan.discovery1dNet If DiscoverySNMP agentnet.if.disco88m三条规则全部使用 Zabbix 的 SNMP 动态索引发现语法discovery[{宏1},{OID1},{宏2},{OID2},...]通过一次 SNMP walk 同时抓取多个列OID 表把{#SNMPINDEX}、{#IFNAME}、{#IFTYPE}等宏注入原型从而实现接口、VLAN、风扇的批量发现。Net If Discovery物理接口发现发现规则的 SNMP OID 一次抓取了 4 个表列discovery[{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFTYPE},1.3.6.1.2.1.2.2.1.3,{#IFXENTRY},1.3.6.1.2.1.31.1.1.1.18]对应关系{#IFNAME}← ifName1.3.6.1.2.1.31.1.1.1.1接口名称如 Gi1/0/1{#IFOPERSTATUS}← ifOperStatus1.3.6.1.2.1.2.2.1.8操作状态{#IFTYPE}← ifType1.3.6.1.2.1.2.2.1.3接口类型编码{#IFXENTRY}← ifAlias1.3.6.1.2.1.31.1.1.1.18接口别名/描述{#SNMPINDEX}← 自动生成的行索引。过滤器AND 逻辑对应 YAML 的filter段条件操作符作用{#IFOPERSTATUS}匹配1MATCHES_REGEX仅发现 operational up 的接口原文档interface is discovered only if its operational up的落地实现{#IFTYPE}不匹配22NOT_MATCHES_REGEX排除 proprietary serial串口等管理口{#IFTYPE}不匹配131NOT_MATCHES_REGEX排除 tunnel隧道接口{#IFTYPE}不匹配53NOT_MATCHES_REGEX排除 proprietary virtual/internal虚拟接口由 vlan 发现规则单独处理{#IFTYPE}不匹配24NOT_MATCHES_REGEX排除 softwareLoopback回环口该规则生成的接口原型共 13 项详见下文采集项原型一节并配套 2 个利用率触发器原型和 1 个{#IFNAME} {#IFXENTRY}: traffic图形原型——图形包含 RX/TX bps、RX/TX errors、RX/TX broadcast、RX/TX multicast、RX/TX unicast 共 10 条曲线颜色与 Y 轴侧在 YAML 的graph_prototypes段逐一指定。Net vlan DiscoveryVLAN 虚拟接口发现该规则与接口发现互为补充专门抓取 VLANSVI虚拟接口discovery[{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFTYPE},1.3.6.1.2.1.2.2.1.3,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFXENTRY},1.3.6.1.2.1.31.1.1.1.18]注意此处抓取的是{#IFADMINSTATUS}ifAdminStatus1.3.6.1.2.1.2.2.1.7而非操作状态。过滤器逻辑与接口发现正好互补条件操作符作用{#IFADMINSTATUS}不匹配2NOT_MATCHES_REGEX排除管理状态为 down 的接口{#IFTYPE}不匹配22NOT_MATCHES_REGEX排除 proprietary serial{#IFTYPE}不匹配131NOT_MATCHES_REGEX排除 tunnel{#IFTYPE}匹配53MATCHES_REGEX只保留 proprietary virtual/internal 类型即 VLAN 虚拟接口{#SNMPINDEX}不匹配300000NOT_MATCHES_REGEX排除索引 300000 的特殊内部接口从源码结构可以推断ifType53的过滤设计正是为了把 VLAN SVI 与物理接口分开管理——物理接口走net.if.*系列 keyVLAN 接口走net.vlan.*系列 key互不干扰。该规则同样带有一组完整的流量原型与vlan {#IFNAME} {#IFXENTRY}: traffic图形原型。Fan Discovery风扇状态发现discovery[{#FANINDEX},1.3.6.1.4.1.9.6.1.101.83.1.1.1.3]该规则从 Cisco Small Business 私有 MIB 的风扇状态表rlPhdFanStatus1.3.6.1.4.1.9.6.1.101.83.1.1.1.3中枚举风扇{#SNMPINDEX}即为风扇索引。过滤器为{#FANINDEX}不匹配5从索引值看可以推断这是为了排除某个并不存在风扇的槽位编号不同型号风扇数量不一避免为不存在的风扇生成监控项。由于风扇属于设备硬件、不会频繁变化该规则更新间隔设为 1 天。风扇状态原型读取1.3.6.1.4.1.9.6.1.101.83.1.1.1.3.{#SNMPINDEX}通过值映射SNMP Cisco Fan Status将 16 翻译为normal(1)、warning(2)、critical(3)、shutdown(4)、notPresent(5)、notFunctioning(6)。采集项原型与预处理机制模板的全部 30 余个接口级采集项均由两条接口发现规则的原型生成命名统一为{#IFNAME} {#IFXENTRY}: 指标VLAN 规则为vlan {#IFNAME} {#IFXENTRY}: 指标。以物理接口原型为例完整清单如下采集项原型Item key 原型SNMP OID更新间隔单位{#IFNAME} {#IFXENTRY}: RX bpsnet.if[ifInBits.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.1060sbps{#IFNAME} {#IFXENTRY}: TX bpsnet.if[ifOutBits.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.1660sbps{#IFNAME} {#IFXENTRY}: RX unicastnet.if[ifInUcastPkts.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.11180spps{#IFNAME} {#IFXENTRY}: TX unicastnet.if[ifOutUcastPkts.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.17180spps{#IFNAME} {#IFXENTRY}: RX errorsnet.if[ifInErrors.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.14180spps{#IFNAME} {#IFXENTRY}: TX errorsnet.if[ifOutErrors.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.20180spps{#IFNAME} {#IFXENTRY}: RX multicastnet.if[ifInMulticastPkts.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.2180spps{#IFNAME} {#IFXENTRY}: TX multicastnet.if[ifOutMulticastPkts.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.4180spps{#IFNAME} {#IFXENTRY}: RX broadcastnet.if[ifInBroadcastPkts.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.3180spps{#IFNAME} {#IFXENTRY}: TX broadcastnet.if[ifOutBroadcastPkts.{#SNMPINDEX}]1.3.6.1.2.1.31.1.1.1.5180spps{#IFNAME} {#IFXENTRY}: speednet.if[ifSpeed.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.51hbps{#IFNAME} {#IFXENTRY}: Duplexnet.if[dot3StatsDuplexStatus.{#SNMPINDEX}]1.3.6.1.2.1.10.7.2.1.191h枚举{#IFNAME} {#IFXENTRY}: If Typenet.if[ifType.{#SNMPINDEX}]1.3.6.1.2.1.2.2.1.386400s枚举VLAN 规则的原型与之几乎一一对应只是 key 前缀改为net.vlan[ifInBits.{#SNMPINDEX}]等且没有 Duplex 与 speed 原型。两个关键预处理步骤计数器类指标ifInOctets、ifInErrors、各类包计数在 SNMP 中都是单调递增的累计值直接入库没有意义。模板在每个流量/包计数原型上配置了两段预处理对应 YAML 中的preprocessing段CHANGE_PER_SECOND计算相邻两次取值的每秒变化量差分/速率这是把累计计数器转换为瞬时速率的核心步骤MULTIPLIER 8仅用于 RX/TX bps 原型。因为 ifInOctets/ifOutOctets 以字节为单位乘以 8 转换为比特配合units: bps得到以 bps 为单位的接口速率包计数类指标则不再乘 8单位直接标记为pps。这套差分 乘系数 单位的组合是 Zabbix SNMP 监控流量的标准做法也解释了为什么接口利用率触发器可以直接用 bps 数值与 ifSpeed 相除。值映射体系模板共定义了 4 个业务值映射在 YAML 的valuemaps段值映射名称映射内容EtherLike-MIB::dot3StatsDuplexStatus1unknown、2halfDuplex、3fullDuplexSNMP Cisco Fan Status1normal、2warning、3critical、4shutdown、5notPresent、6notFunctioningSNMP Cisco rlPhdUnitEnvParamMonitorTemperatureStatus1ok、2overTemperatureThreshold、3overCriticalTemperatureThresholdSNMP interface type (ifType)6ethernet-like、22proprietary serial、24softwareLoopback、53proprietary virtual/internal、131tunnel、161link aggregate其中ifType值映射不仅用于If Type采集项其映射值与三条发现规则的过滤器取值也完全对应22/24/53/131 都被用作排除或保留条件实现了发现过滤与结果展示的语义统一。触发器体系从利用率到硬件健康原文档的触发器表完整罗列了模板的告警逻辑结合 6.0 YAML 模板 可整理出以下完整的触发器清单LLD 触发器原型会在发现后为每个接口/风扇生成实例接口流量与状态类触发器名称表达式优先级触发条件解读{#IFNAME} {#IFXENTRY}: high input utilizationavg(/Cisco_SG300-52-d/net.if[ifInBits.{#SNMPINDEX}],5m)/last(/Cisco_SG300-52-d/net.if[ifSpeed.{#SNMPINDEX}])0.9warning5 分钟平均入向速率超过端口速率 90%{#IFNAME} {#IFXENTRY}: high output utilizationavg(/Cisco_SG300-52-d/net.if[ifOutBits.{#SNMPINDEX}],5m)/last(/Cisco_SG300-52-d/net.if[ifSpeed.{#SNMPINDEX}])0.9warning5 分钟平均出向速率超过端口速率 90%{#IFNAME} {#IFXENTRY}: In half-duplex modelast(/Cisco_SG300-52-d/net.if[dot3StatsDuplexStatus.{#SNMPINDEX}])2information端口处于半双工提示检查自协商与线缆描述Please check autonegotiation settings and cabling{#IFNAME} {#IFXENTRY}: RX errorsmax(/Cisco_SG300-52-d/net.if[ifInErrors.{#SNMPINDEX}],20m)0warning最近 20 分钟内出现入向错误{#IFNAME} {#IFXENTRY}: TX errorsmax(/Cisco_SG300-52-d/net.if[ifOutErrors.{#SNMPINDEX}],20m)0warning最近 20 分钟内出现出向错误vlan {#IFNAME} {#IFXENTRY}: RX errorsmax(/Cisco_SG300-52-d/net.vlan[ifInErrors.{#SNMPINDEX}],20m)0warningVLAN 接口入向错误vlan {#IFNAME} {#IFXENTRY}: TX errorsmax(/Cisco_SG300-52-d/net.vlan[ifOutErrors.{#SNMPINDEX}],20m)0warningVLAN 接口出向错误利用率触发器通过avg(5m)/last(speed)计算带宽占用率0.9 的阈值意味着端口持续 5 分钟超过 90% 才告警可有效过滤瞬时峰值错误类触发器采用max(20m)0的窗口式判断任何一次计数错误都会在 20 分钟窗口内保持告警。硬件健康类触发器名称表达式优先级fan status problemlast(/Cisco_SG300-52-d/system.fan[status.{#SNMPINDEX}])1warning{HOST.NAME} overTemperatureThresholdlast(/Cisco_SG300-52-d/system.temp.status)2average{HOST.NAME} overCriticalTemperatureThresholdlast(/Cisco_SG300-52-d/system.temp.status)3highhigh CPU utilizationavg(/Cisco_SG300-52-d/system.cpu.util,5s)80warning{HOST.NAME} snmp has been restartedlast(/Cisco_SG300-52-d/system.uptime)600warning风扇触发器1的含义是只要风扇状态偏离normal(1)即出现 warning / critical / shutdown / notPresent / notFunctioning 中任何一种即触发告警。ICMP Ping 模块联动主模板链接的 Template Module ICMP Ping 提供了 3 个标准采集项icmpping、icmppingloss、icmppingsec均为 60s 间隔和 3 个带依赖关系的触发器触发器名称表达式优先级依赖Unavailable by ICMP pingmax(/Template Module ICMP Ping/icmpping,#3)0high无High ICMP ping lossmin(/Template Module ICMP Ping/icmppingloss,5m){$ICMP_LOSS_WARN} and min(...)100warning依赖Unavailable by ICMP pingHigh ICMP ping response timeavg(/Template Module ICMP Ping/icmppingsec,5m){$ICMP_RESPONSE_TIME_WARN}warning依赖前两个该模块带有两个可覆盖宏{$ICMP_LOSS_WARN}默认 20%与{$ICMP_RESPONSE_TIME_WARN}默认 0.15s可在主机或模板级覆盖用于调整丢包率与响应时间的告警阈值。部署与使用步骤仓库中的模板文件均可直接导入 Zabbix整个过程不涉及修改仓库内容。以 Zabbix 6.0 为例导入模板进入 Zabbix 前端 → 数据采集Data collection→ 模板Templates→ 右上角导入Import选择 template_cisco_sg300_and_sg200.yaml按版本对应关系5.0 导入 XML 文件5.4 / 6.0 导入各自的 YAML 文件确认模板加载导入后应能看到Cisco_SG300-52-d与Template Module ICMP Ping两个模板且前者已链接后者关联主机在主机Hosts配置中为主机添加Cisco_SG300-52-d模板链接配置 SNMP 接口在主机的接口Interfaces页签添加 SNMP 接口填写交换机管理 IP、SNMP 版本与团体名/凭据并确保交换机侧已开启 SNMP 且 ACL 允许 Zabbix server/proxy 访问确认 ICMP 探测主机的接口配置中包含 ICMP 接口否则icmpping系列采集项将无法工作观察发现结果等待首个 LLD 周期接口发现约 88 分钟、VLAN 发现约 89 分钟、风扇发现 1 天执行后在最新数据中即可看到自动生成的接口、VLAN 与风扇监控项。由于接口发现周期较长初次导入后建议耐心等待首个发现周期完成也可临时调低发现规则更新间隔加快验证验证后再恢复原值。版本差异与扩展建议对比仓库中 5.0 / 5.4 / 6.0 三份模板文件可以发现5.0XML使用 applicationsGeneral、Status、Network interfaces对监控项分组表达式采用{Cisco_SG300-52-d:key.func(period)}旧式函数语法5.4 / 6.0YAML改用 tags 标签体系Application: General/Status/Network interfaces表达式采用func(/host/key,period)新式函数语法并引入了 uuid 字段便于模板版本追踪与部分更新三者的核心采集逻辑、OID、过滤器与触发器语义完全一致可放心在同一监控体系中按 Zabbix 版本选用对应文件。在实际使用中可以按需扩展例如为ifType值映射补充更多类型将 CPU 采集 OID 切换为 5 分钟平均值以平滑曲线或参考 仓库中其他 Cisco 模板 的做法为接口增加 CRC 错误、光模块收发功率等更深层的健康指标。参考文件索引模板说明文档Network_Devices/Cisco/template_cisco_sg300_and_sg200/6.0/README.md6.0 模板定义YAMLNetwork_Devices/Cisco/template_cisco_sg300_and_sg200/6.0/template_cisco_sg300_and_sg200.yaml5.4 模板定义YAMLNetwork_Devices/Cisco/template_cisco_sg300_and_sg200/5.4/template_cisco_sg300_and_sg200.yaml5.0 模板定义XMLNetwork_Devices/Cisco/template_cisco_sg300_and_sg200/5.0/template_cisco_sg300_and_sg200.xml5.0 / 5.4 版本的 README5.0/README.md、5.4/README.md赞分享【免费下载链接】community-templatesZabbix Community Templates repository项目地址https://gitcode.com/gh_mirrors/co/community-templates点击查看免费下载相关推荐Zabbix 监控 Cisco SG300/SG200 交换机基于 SNMP 与 LLD 的 Cisco_SG300-52-d 模板实战指南Zabbix 监控 Cisco SG300/SG200 交换机基于 SNMP 与 LLD 的 Cisco_SG300 52 d 模板实战指南 本指南以 comZabbix 监控 Cisco SG300 / SG200 交换机基于 SNMP 与 LLD 的社区模板深度解析Zabbix 监控 Cisco SG300 / SG200 交换机基于 SNMP 与 LLD 的社区模板深度解析 本文围绕 Zabbix 社区模板仓库中的 CZabbix 监控 Cisco Nexus 3xxx 交换机community-templates 中 NEXUS 3xxx SNMP 模板实战解析Zabbix 监控 Cisco Nexus 3xxx 交换机community templates 中 NEXUS 3xxx SNMP 模板实战解析 导读 c上一篇git-bug WebUI 组件体系完全指南从状态清单读懂 Component 分层、GraphQL Fragment 与测试策略下一篇MooTool 编码解码三列分栏与 Electron 布局迁入Compose 端可拖分栏实现解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询