ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于WGCLOUD和SNMP的华为交换机防火墙监控实战

基于WGCLOUD和SNMP的华为交换机防火墙监控实战 干运维的朋友都有这个感受服务器再好办装个agent数据全上来了真正让人头疼的是交换机、防火墙这类网络设备不让装东西平时又不敢乱动出了故障你连它当时的CPU负载、哪个口在跑满都不知道。我现在的方案很简单用WGCLOUD把公司核心交换机和防火墙全部纳管不装agent全靠SNMP协议把CPU使用率、内存使用率、端口状态、进出流量这些数据定期自动采回来并配上告警。这篇文章把我从部署到上线的完整过程都捋了一遍以华为S5700交换机和华为USG防火墙为例适合正在找轻量监控方案的运维、网管也适合实验室或工作室自己管理一堆网络设备的同学。下面内容不绕弯子直接上干货。1. 监控前先理清需求交换机防火墙盯什么和服务器有什么区别很多人上手就想着装系统、接设备结果折腾半天发现采集上来的数据根本不是自己想看的。原因很简单没有先搞清楚网络设备的监控点和服务器完全是两码事。1.1 网络设备重点看的五类数据服务器监控看的是磁盘空间、进程状态、应用日志网络设备不一样它本质是一个转发系统你真正要盯的是这五类CPU使用率代表设备控制面的繁忙程度。广播风暴、环路、大量路由刷新都会让CPU瞬间飙高严重时连远程管理都卡死。内存使用率反映路由表、MAC地址表、会话表的膨胀情况。内存吃紧的直接后果是丢包、转发性能下降。端口状态和错误包物理口down、协议down都意味着链路中断CRC错误包、碰撞包增多往往是线缆或光模块质量出了问题。端口进出流量这是最刚需的数据。哪个口跑满了、哪个链路长期闲置、上下行比例是否合理全靠流量曲线说话。光模块诊断信息尤其是光功率和温度。光纤链路最怕的不是突然断而是光模块慢慢衰退等到彻底断才发现已经晚了。交换机还要额外关注广播包占比、MAC表项数量防火墙除了上面的常规项更关键的是并发会话数、新建会话速率和会话表占用率。会话表被打满防火墙基本就处在半瘫痪状态表现是内网访问外网时断时续。这些指标在WGCLOUD的网络设备监控里大部分都能直接看到。1.2 为什么WGCLOUD适合中小规模的网络监控市面上能监控网络设备的系统不少Zabbix、Nagios、OpenNMS都能做但对中小规模的网络来说往往有点杀鸡用牛刀。Zabbix功能确实强可要配模板、搞自动发现、调触发器没有专门的人去维护很容易变成摆设。WGCLOUD的核心优势就一条上手快中文界面开箱即用。它是Java写服务端、Go写agent的开源监控平台本身主打主机监控但内置了网络设备监控模块支持通过SNMP采集交换机、路由器、防火墙的数据。几十台设备的情况下部署完当天就能看到CPU、内存、端口流量曲线不必逐一去写OID和模板。有一点要明确WGCLOUD并不是要替代Zabbix这种重型系统。如果你的环境有上千台网络设备需要细粒度的自动发现、复杂的告警依赖关系那WGCLOUD会吃力。但公司内网、园区网、实验室这种规模它就是最省事的方案尤其适合运维人员不多、需要快速见效的团队。1.3 两种采集方式agent和SNMP怎么分工WGCLOUD采集数据走两条路。服务器、PC这类可以安装agent的用agent采集系统指标交换机、防火墙这类封闭设备用SNMP协议轮询。两者在一个平台里统一展示这也是我当初选它的一个重要原因不需要两套监控系统来回切换。SNMP可以理解为一种“体检表”协议监控端发一个请求“把某个指标给我”设备从自己的MIB库里找到对应值返回。MIB就是设备上的指标字典每个指标都有一个唯一的OID编号。比如1.3.6.1.2.1.2.2.1.8代表接口运行状态1.3.6.1.2.1.31.1.1.1.6代表接口累计入方向字节数。WGCLOUD把这些常见OID都内置好了你在后台添加设备时只需填IP和团体名不用自己手工去抠OID。这里有个小知识点团体名community string相当于SNMP的访问口令默认是public生产环境强烈建议改掉并且只用只读权限。后面第3章配置设备时会讲到具体命令。2. 搭建WGCLOUD平台环境、初始化、验证三步走平台搭建本身不算复杂但有几个细节决定了后面用起来顺不顺。我把从裸机到能接设备的过程完整写出来。2.1 部署前需要准备的资源WGCLOUD服务端要求不高一台2核4G的Linux虚拟机足够跑几十台设备的监控。系统建议CentOS 7/Ubuntu 20.04这类主流版本需要安装JDK 1.8以上版本和MySQL 5.7以上版本。数据量大的话MySQL的磁盘空间留充足一些WGCLOUD默认会保存历史数据用于画趋势图。我在实际部署中使用的是CentOS 7.9JDK用系统自带的openjdk 1.8MySQL用8.0。这套组合实测下来很稳跑了两年没有因为平台本身出过问题。准备部署前先确认被监控的交换机和防火墙已经开启SNMP并且你知道它的只读团体名不然设备加进平台也采不到数据。还有一个容易忽略的点网络要放行UDP 161端口。WGCLOUD服务端到被监控设备之间如果有防火墙策略记得放通161端口的入方向访问否则SNMP请求到不了设备。2.2 服务端安装与初始化照着命令敲即可部署过程分四步安装基础软件、建库、修改配置、启动。以CentOS 7为例# 安装JDK和MySQL yum install -y java-1.8.0-openjdk mysql-community-server # 启动MySQL并初始化 systemctl start mysqld systemctl enable mysqld grep temporary password /var/log/mysqld.logMySQL初始化后会自动生成一个临时密码在日志里能看到。登录后先修改密码再创建WGCLOUD数据库mysql -uroot -p CREATE DATABASE wgcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;WGCLOUD安装包解压后目录里带一个初始化SQL脚本直接导入mysql -uroot -p wgcloud wgcloud.sql接下来修改服务端的数据库连接配置文件在解压目录下名字一般是application.properties把数据库地址、账号、密码改成你自己的。确认无误后启动./start.sh tail -f logs/wgcloud.log启动日志里看到类似“started successfully”的字样说明服务端起来了。默认管理端口是9999浏览器访问http://服务器IP:9999初始账号admin、密码123456。这里提醒一句首次登录后第一时间改密码WGCLOUD默认账号密码是公开的不改就是裸奔。2.3 先验证SNMP通不通再往平台里加设备很多人在WGCLOUD后台添加设备后发现设备状态始终是离线或者数据是空的然后怀疑平台有问题。其实大部分情况是SNMP本身就不通。所以我的习惯是在往平台加设备之前先用命令行工具验证一下。Linux下安装net-snmp-utils然后执行yum install -y net-snmp-utils snmpwalk -v2c -c WgCloudSafe2024 192.168.1.10 sysDescr命令的意思是用SNMP v2c协议、团体名WgCloudSafe2024去读192.168.1.10这台设备的系统描述。如果返回类似SNMPv2-MIB::sysDescr.0 STRING: HUAWEI S5700-28C-HI这样的信息说明SNMP是通的设备能正常响应这时候再加入WGCLOUD基本不会有问题。如果命令超时或者返回No Response就得先回头排查设备配置和网络策略这一步能帮你省掉后面一大堆无谓的排错时间。3. 实战接入华为S5700与USG防火墙命令照着敲这一章是最核心的实操部分。我从华为设备开始把命令逐条说清楚然后附上锐捷、H3C这些常见厂商的对照表方便大家直接用。3.1 华为USG防火墙开启SNMP并放行安全策略华为USG防火墙默认不开SNMP需要手动到系统视图下开启。命令如下system-view snmp-agent snmp-agent sys-info version v2c snmp-agent sys-info contact netadminexample.com snmp-agent sys-info location IDC-A snmp-agent community read cipher WgCloudSafe2024 snmp-agent trap enable逐条解释一下。snmp-agent是启动SNMP服务snmp-agent sys-info version v2c指定使用SNMP v2c版本WGCLOUD默认支持v2ccontact和location是管理信息建议填上方便以后看设备归属snmp-agent community read cipher WgCloudSafe2024是设置只读团体名cipher表示配置信息以密文形式保存团体名建议用有一定强度的随机字符串不要用publicsnmp-agent trap enable开启主动告警发送WGCLOUD也支持接收SNMP Trap开着没坏处。华为USG防火墙有一个比交换机更容易踩的坑SNMP服务开了团体名也对但从WGCLOUD还是采不到数据。原因基本都在安全策略上。防火墙默认会拦截外部访问设备自身服务的流量需要在安全策略里放行从业务口到本地的UDP 161流量。大致配置思路如下system-view security-policy rule name snmp_monitor source-zone trust destination-zone local source-address 192.168.1.100 24 service udp 161 action permitsource-zone trust是监控服务器所在的区域destination-zone local表示访问防火墙自身source-address限定为WGCLOUD服务器的IP只允许这一台机器来采集。不同版本的USG命令细节可能略有差异但思路一样只要把入接口区域、服务UDP 161、目的区域local放通数据就能采上来了。3.2 华为S5700交换机开启SNMP并用ACL锁死来源IP华为S5700交换机的配置和USG防火墙类似但它没有安全策略那套东西重点是加上ACL限制只允许监控服务器来访问SNMP服务。这样即使团体名泄露外部节点也采不到数据。system-view acl number 2001 rule 5 permit source 192.168.1.100 0 rule 10 deny snmp-agent snmp-agent sys-info version v2c snmp-agent community read cipher WgCloudSafe2024 acl 2001 snmp-agent trap enableACL 2001的意义是只允许源IP是192.168.1.100的主机访问SNMP其他IP一律拒绝。团体名配好后用acl参数把它和ACL绑定相当于给SNMP服务加了一把IP锁。很多网络设备管理员图省事只设一个public团体名就完事这在内部环境问题不大但如果设备管理网段和办公网段没有隔离安全风险就很高。我见过有人用扫描器在办公网扫到交换机开了SNMP团体名还是public几秒钟就把整个内网的MAC表读走了。所以ACL这步别省。配置完成后可以用display snmp-agent community查看团体名状态用display snmp-agent sys-info查看SNMP版本信息。3.3 锐捷、H3C等设备的SNMP快速配置对照表不同厂商的命令风格差异比较大但思路完全一样开启SNMP、设置只读团体名、限制来源。这里整理一份常用对照方便大家直接抄。厂商开启SNMP并设置只读团体名的命令说明H3Csystem-view/snmp-agent/snmp-agent sys-info version v2c/snmp-agent community read WgCloudSafe2024H3C和华为命令相似注意版本差异锐捷configure terminal/snmp-server community WgCloudSafe2024 ro锐捷的只读参数是ro写权限是rw华为system-view/snmp-agent/snmp-agent community read cipher WgCloudSafe2024可通过acl参数绑定ACL思科configure terminal/snmp-server community WgCloudSafe2024 RO/access-list 10 permit 192.168.1.100/snmp-server community WgCloudSafe2024 RO 10版本不同命令略有差异但机制相同配置完设备后强烈建议先回到第2.3节用snmpwalk验证一下再进WGCLOUD添加设备。这样可以隔离问题验证通了说明设备侧没问题验证不通先去查设备配置。这个习惯能帮你省大量时间。3.4 在WGCLOUD添加网络设备并读懂采集指标登录WGCLOUD后台找到“网络设备管理”菜单点新增填写以下信息设备名称建议用业务命名比如“核心交换机-机房A”不要用单纯的IP管理IP就是设备的IP地址SNMP版本选v2c团体名填设备上配置的只读团体名轮询周期默认5分钟即可想看更细的流量曲线可以调到1分钟但会增加设备CPU负担保存后等一个轮询周期设备状态会变为在线同时能看到采集到的数据。核心指标在界面上是这样的指标含义结果参数解释CPU使用率设备控制面的实时占用率正常应在10%到40%之间长时间超过80%需要排查环路、广播风暴内存使用率设备内存占用比例会话表和路由表越多占用越高超过90%有丢包风险端口状态每个物理口的up/down状态down的端口如果是核心链路立即告警入方向流量端口每秒接收的字节数换算成的速率单位是Mbps注意和端口速率对比出方向流量端口每秒发送的字节数换算成的速率配合入方向判断链路是否跑满接口描述在设备上配置的description信息建议把所有接口都写好描述这里特别说下端口流量。WGCLOUD拿到的原始数据是接口累计收发字节数然后通过相邻两次轮询的差值除以时间间隔算出每秒速率并换算成Mbps。所以轮询周期越短流量曲线越平滑这个原理也决定了后面排查流量不准问题时需要关注的地方。3.5 光模块光衰命令行巡检才是最可靠方案关于光模块光功率WGCLOUD的标准网络设备监控模块没有把这个能力做得很全。它主要走通用MIB库而光模块诊断信息在各家设备上属于私有MIBWGCLOUD不一定内置了对应OID的解析。我实测下来华为设备的接收光功率在部分版本上能采到但稳定性一般这个环节我更推荐命令行巡检配合WGCLOUD的告警来兜底。华为和H3C查光衰的命令是display transceiver diagnosis interface GigabitEthernet 0/0/1锐捷是show transceiver diagnosis interface GigabitEthernet 0/1这条命令会返回光模块的工作温度、电压、偏置电流、发送光功率、接收光功率并且带高/低阈值。判断光模块是否健康主要看接收光功率是否在阈值范围内以及和上次巡检的差值。如果接收光功率持续掉比如从-8dBm掉到-12dBm再掉到-16dBm即使还在阈值内也要提前准备换模块或清洗光纤接头。我的做法是每季度把所有核心链路的光模块跑一遍diagnosis命令记录基线值。WGCLOUD负责日常端口流量和链路通断告警光衰靠季度巡检手动比对。两个手段配合既不会漏掉渐进式故障也不用整天盯着命令行看。4. 告警阈值和通知配置把被动救火变成提前预警监控如果只是有一个好看的界面那它的价值就打折扣了。真正让监控系统发挥作用的是告警让问题在用户感知之前就暴露出来。4.1 告警阈值参考不同设备类型要分开设WGCLOUD的告警规则支持按设备分别设置这很重要。核心交换机、汇聚交换机、防火墙的负载能力和业务定位完全不同不能用一个阈值一刀切。我实际使用的阈值如下大家可以作为参考起点监控项建议阈值使用场景说明CPU使用率超过80%持续5分钟核心设备短时间CPU高可以接受持续高就要查内存使用率超过90%网络设备内存一般不会自动释放持续走高要重启或升级端口带宽利用率超过70%持续10分钟核心链路预留30%以上余量避免拥塞丢包设备离线60秒内无SNMP响应核心设备离线直接按最高级别告警端口down持续30秒以上排除端口瞬断干扰连续down才告警阈值不是越小越好。设得太灵敏会产生大量告警时间长了大家就麻木了真正重要告警反而被淹没。我的原则是核心链路的告警阈值从严接入层设备从宽告警持续时间留一点余量比如持续5分钟再触发CPU告警可以过滤掉瞬时峰值。4.2 告警通知接入邮件和钉钉机器人WGCLOUD的告警通知方式支持邮件、钉钉、企业微信等。邮件配置比较简单在后台填好SMTP服务器、账号、密码测试发送成功即可。要注意的是公司邮箱的SMTP授权码一般不是登录密码需要在邮箱设置里单独申请这个坑我踩过一次卡了半小时。钉钉机器人是我现在的主力通知渠道。在钉钉群里添加自定义机器人拿到webhook地址填到WGCLOUD后台再设置触发关键字。需要注意钉钉机器人的webhook地址本身就是一个可对外调用接口如果泄露别人可以在你的群里刷消息所以不要在公开渠道贴webhook也建议加上关键字校验和IP白名单。告警分级也要做好。我的习惯是设备离线、核心链路down这种级别发钉钉并值班人员CPU、内存偏高这种级别只发邮件不进群避免刷屏。WGCLOUD支持按告警级别配置不同通知渠道利用好这个能力才能保证告警真正被人看到。4.3 借助日报周报做容量规划和链路复盘WGCLOUD内置的报表功能是我用得比告警还多的一个模块。每天花一分钟看昨天的设备统计日报重点看两个地方CPU峰值出现在几点和业务高峰是否吻合端口流量TOP5是哪些链路有没有异常突增。每月的月报更有价值。把月报里端口流量的平均带宽和峰值带宽导出来和链路实际速率做对比就能发现哪些链路快到瓶颈了。比如监控到某个千兆汇聚口长期峰值跑到850Mbps这意味着带宽利用率已经超过85%下个季度就可能出现拥塞应该提前规划链路聚合或者升级到万兆而不是等到用户抱怨网络卡才动手。这个过程是把监控数据从“看状态”变成“做决策”。很多运维觉得监控就是出问题看告警其实持续的流量趋势分析才是监控系统最大的长期回报。5. 排查实录SNMP不通、流量不准这些坑怎么填用WGCLOUD这两年我踩过的坑不少。把这些常见问题整理成一份排查实录按从高频到低频的顺序排列大家遇到类似现象可以按这个思路来查。5.1 SNMP明明开了WGCLOUD却说设备离线这是最高频的问题。设备侧SNMP配置正常用snmpwalk验证也能通但在WGCLOUD后台显示离线。先不要怀疑平台有问题按下面顺序排查WGCLOUD服务器到设备的网络是否通设备管理IP是否正确设备上没有配置管理网段隔离。团体名是否填错注意大小写WGCLOUD后台填写的团体名必须和设备配置完全一致。SNMP版本是否匹配设备只开了v3而WGCLOUD用的是v2c就会不通。设备上是否有限制SNMP来源IP的ACL把WGCLOUD服务器的IP放进去。WGCLOUD的轮询线程是否正常查看服务端日志有无报错。其中ACL问题最容易忽略。我遇到过这样的情况设备配置了ACL只允许老监控服务器的IP访问SNMP后来换监控服务器IP忘了改设备ACL新平台怎么加都离线排查半天才想起来旧ACL还在生效。换IP或者迁移监控平台时第一件事就是过一遍所有设备的SNMP ACL。5.2 端口流量显示为0或者数值乱跳先查计数器端口流量长期为0但端口状态是up八成不是真的没有流量而是WGCLOUD读取的计数器和设备实际统计对不上。老设备只支持32位计数器接口累计字节数达到约4.29GB后会发生翻转WGCLOUD如果按两次读数差值计算翻转后就会出现负值或乱跳。解决思路是优先让设备返回64位计数器数据对应的OID是ifHCInOctets和ifHCOutOctetsWGCLOUD会优先使用这些高精度计数器。如果设备太老只支持32位就只能接受流量数据在超过阈值时不准的现实或者缩短轮询周期但没法根治。还有一个小细节个别光口ifOperStatus显示up但ifAdminStatus显示down说明端口被人工关闭了这时候流量为0是正常的别当成故障去排查半天。5.3 防火墙SNMP采不到数据大概率是安全策略没放行前面第3.1节已经提到了华为USG这类防火墙开了SNMP服务也配置了团体名但WGCLOUD还是采不到。这时不要反复去看SNMP配置先查安全策略重点看从WGCLOUD所在区域到local区域有没有放行UDP 161。有一个小技巧判断问题方向用snmpwalk在WGCLOUD服务器上测如果返回超时再用一台同网段的PC去测如果PC能通、服务器不通那就是防火墙策略按源IP做了限制如果两边都不通说明设备本身或网络链路有问题。这种对比法能快速缩小排查范围。5.4 告警频繁抖动调整持续时间和阈值刚上监控那段时间我设的告警条件很灵敏端口down只要一秒钟就触发CPU超过50%立刻告警。结果一天收到几十条告警大部分是误报。比如交接箱施工导致网线松动端口闪断几秒又自动恢复比如某个接口偶尔出现瞬时高流量CPU冲到60%又马上回落。这类瞬时波动对业务没有实际影响但告警已经把手机震麻了。后来我把所有告警都加上了持续时间端口down要求持续30秒以上CPU高要求持续5分钟告警量立刻降了一个量级剩下的告警基本都是真实问题。WGCLOUD里能配置这种触发条件建议都设置上。告警系统是给人用的不是用来恐吓人的宁可少报但准报也别天天狼来了。6. 最后说点实在的WGCLOUD这套方案我前后用了两年多最大的感受是网络设备监控这件事门槛比想象中低但价值比想象中高。以前核心交换机半夜出问题第二天上班用户比我先知道现在凌晨设备离线钉钉群里能立刻看到告警很多时候在用户感知前就把问题处理掉了。如果看完这篇文章只记住一件事我会说先从SNMP和基础阈值开始不要一上来追求功能全开。把核心交换机、出口防火墙接入WGCLOUD设置好离线告警和端口流量监控跑一个礼拜你就能知道自己的网络平时是什么状态。之后再逐步加光衰巡检、季度报表这些精细化玩法都有空间慢慢迭代。最后给一个小建议SNMP团体字符串就是网络设备的钥匙一定要用强随机字符串并且限制来源IP别图方便用public。这个习惯一旦养成能帮你挡掉绝大多数内部网络的安全隐患。
返回列表