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

2023年 8月 28日 54.0k 0

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

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

使用ping检测下?

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

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

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

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

功能说明 & 效果

检查内容 说明
DNS 尝试解析DNS域名,获取对应的IP,并使用获取到的IP来进行后续流程
Ping 使用Ping去尝试跟对应IP的网络连通性
MTR traceroute,查看网络的转发,还有网络质量
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-mac shell中执行chmod u+x network-detector && sudo ./network-detector
Linux 项目下执行make build-linux shell中执行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

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论