网站突然变慢,一定是网络问题么?如何定位?

过去一年中公司多个业务线时不时出现一些类似网络故障的问题,事后经过排查有些是后端服务的问题,有些是网关问题,有些是防火墙问题,也有一些确实是网络问题。

因为业务现场离研发侧太远,很多时候无法第一时间获取到故障现场的完整信息或者日志。导致每次的问题定位成本太高了,也对业务生产造成了很大影响。
image.png

使用ping检测下?

大哥,这是业务现场,用户可能小学都没毕业😂

为啥不用类似winMTR这样的工具?

这类工具是能够满足我们部分的诉求,但一个是安装和使用成本过高。必须得业务现场的IT进行安装,且在每次出问题时输入业务域名做探测。另一个是不够灵活,每次需要在问题发生后人工介入排查,我们期望能够做成时时监控,并能自动告警。

基于此,我开发了一款网络探测工具,用于实时监控业务现场的网络链路。在出问题时能第一时间告警到即时通讯,并展示网络问题的具体原因。这样就能快速的通知相关人员做修复处理。

功能说明 & 效果
检查内容说明
DNS尝试解析DNS域名,获取对应的IP,并使用获取到的IP来进行后续流程
Ping使用Ping去尝试跟对应IP的网络连通性
MTRtraceroute,查看网络的转发,还有网络质量
TCP 连接尝试进行TCP连接,有时候防火墙就对此进行拦截

image.png

为什么将ping、tcp、mtr集成到一起
  • ping使用的是ICMP协议,而TCP使用的是TCP协议,ping得通不代表业务接口链路通
  • ping测试通常是MTR测试中的一部分,ping得通,不一定代表mtr能通
  • 检测网络链路是否通仅仅是基础,我们期望能定位到具体是网络哪一段有问题
应用场景
  • DNS解析异常
  • IP被封、TCP443端口被封
  • 网关配置异常
  • 服务异常
  • 业务站点打不开/特别慢时,使用工具快速定位是否是网络问题/具体是网络的哪一段有问题
优势
  • windows在程序关闭后后台运行
  • windows系统重启自动后台运行,对用户无感知
  • 相比Electron打包体积动则上百M,该工具打包体积只有10M左右
下载地址

Download page

本地编译

可以基于本程序做二次开发,按照如下方式进行编译.

操作系统开发构建方式用户执行方式
Windows项目下执行make build-windows安装并直接点击运行
MacOS项目下执行make build-macshell中执行chmod u+x network-detector && sudo ./network-detector
Linux项目下执行make build-linuxshell中执行chmod u+x network-detector && sudo ./network-detector
上报流程

该工具会在点击“探测”后,每隔30s自动做探测,并在代码中提供了上报的钩子,可将探测结果数据上报到你的服务端,做数据分析处理&大盘&告警处理.满足实时网络监控诉求。

image.png

实现

基于wails框架(Go+Vue3)实现。
探测部分基于以下几个模块实现:

  • DNS:Go的net包
  • Ping:Go的net包、golang.org/x/net/icmp、golang.org/x/net/ipv4
  • TCP:Go的net包
  • MTR:github.com/tonobo/mtr/pkg/hop、github.com/tonobo/mtr/pkg/mtr、golang.org/x/net/icmp

对于平台差异化,使用如下编译指令做兼容处理:

windows
//go:build windows
// +build windows
非windows
//go:build !windows
// +build !windows

该网络探测工具当前已开源,完整的实现可以查看我的Github,欢迎点赞和Star👏。

我是斌少,十年经验大厂全栈开发,多年一线leader,分享编程经验、技术干货,帮你少走弯路、快速成长。欢迎关注!

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值