V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
oom
V2EX  ›  Go 编程语言

分享一款流量分析工具 [GO-FLOW]

  •  
  •   oom · 19 天前 · 2110 次点击

    go-flow 是一款基于滑动窗口实现的实时网络流量监控工具,专为网络调试、带宽分析和流量洞察设计。 它不仅能帮助你快速定位网络问题,还能通过 IP 流量分析实现 DDoS 预警。 基于 Go 开发,无外部依赖,部署简单,配有直观的 Web 界面,适合系统管理员、开发者与网络工程师。 欢迎大佬们体验并分享想法和建议

    https://github.com/xxddpac/go-flow

    17 条回复    2025-04-22 14:15:38 +08:00
    v2er119
        1
    v2er119  
       19 天前
    看上去不错,要是加个主流系统的二进制版本,用的人就方便多了。现在:No releases published 。当然也可以在 Readme 加上编译过程。
    oom
        2
    oom  
    OP
       19 天前
    @v2er119 谢谢大佬,晚点更新下 releases
    nasaboy
        3
    nasaboy  
       19 天前
    ./go-flow: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
    bv
        4
    bv  
       19 天前
    @nasaboy 你这是缺少 libpcap 依赖,
    yum install libpcap-devel 或
    apt install libpcap-dev
    nasaboy
        5
    nasaboy  
       19 天前
    @bv 安装过了,还是一样
    oom
        6
    oom  
    OP
       19 天前
    @nasaboy 大佬啥系统,yum install -y libpcap 试试,这个报错是缺少 libpcap 库
    nasaboy
        7
    nasaboy  
       18 天前
    @oom 用的 Ubuntu24
    mengyx
        8
    mengyx  
       18 天前 via Android
    性能大概在什么级别?能超过 10Gbps / 1Mpps 吗?
    zzhirong
        9
    zzhirong  
       18 天前
    我能理解成, 抓包, 然后对包进行汇总, 我能想到的:
    1. 可能会对网络性能有影响, 如果数据量大的话, 程序本身可能还要占用很多资源。
    2. 如果不用精细化到单个 ip, 可以直接用内核暴露的统计数据,比如 /proc/net/dev 。
    FrankAdler
        10
    FrankAdler  
       18 天前
    443 的抓不到 sni 吗,只有 ip 不太直观啊
    oom
        11
    oom  
    OP
       16 天前
    @zzhirong 这个工具主要定位是将网络中核心节点或出口流量旁路镜像过来分析,所以对网络性能是无影响的,程序本身使用了协程池和环形队列,在给定的窗口期间内实时计算,如果不是超大规模的流量级别性能也是可观的
    oom
        12
    oom  
    OP
       16 天前
    @FrankAdler 目前只是抓了 TCP 五元组信息哦大佬
    oom
        13
    oom  
    OP
       16 天前
    @mengyx 达不到这个级别,我将 20Gbps 专线流量镜像过来测试,程序运行的服务器 64 核/256G ,发现有 15%的丢包,性能瓶颈估计还是在 libpacp 和锁竞争这块
    zzhirong
        14
    zzhirong  
       16 天前
    @oom 像这种只要统计包头, 不需处理包内数据的场景, 用 eBPF 很合适, 它在内核中直接生成统计数据, 用户态直接读取统计结果, 避免了大量了无用的拷贝, 可以看一下 https://github.com/cilium/ebpf
    oom
        15
    oom  
    OP
       15 天前
    @zzhirong 多谢大佬,研究研究
    zzhirong
        16
    zzhirong  
       15 天前
    @oom 昨晚用 AI 写了一个 https://github.com/zzhirong/traffic_aggregation , 可以参考一下。吐槽一下,本来想体验一下 vibe coding 的,结果还是花了 3 个多小时,有点像是在给 AI 当助理。
    oom
        17
    oom  
    OP
       15 天前
    @zzhirong 666 ,测试下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1341 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:21 · PVG 01:21 · LAX 10:21 · JFK 13:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.