使用 golang gopacket 实现进程级流量监控

本文介绍如何使用golang的gopacket库实现进程级流量监控,以替代nethogs工具,并提供更灵活的接口。通过分析/proc目录下的文件获取进程和网络连接信息,结合pcap抓包实现细粒度监控。文章讨论了实现细节、优化策略以及遇到的问题,如多网卡监听和资源限制。
摘要由CSDN通过智能技术生成

如何分析某服务器上哪个进程的流量多 ? 猜不少人都有类似的需求, 社区里已经有 c 写的 nethogs 工具, 该工具很方便的获取流量较高的 TOP N 进程列表。

既然有 nethogs 工具,为什么还需要用 goalng 来实现一遍 ?主要是 nethogs 不够灵活,没有开放接口供其他程序调用。对的,我们现在就需要这类接口。当然,不是每个公司都有这类需求,大家通常都是当流量异常时,登上去分析下异常流量。

代码

项目名为 go-netflow, 代码已经提交到 github。

地址为 https://github.com/rfyiamcool/go-netflow,有兴趣的可以看看,记得点 star 哈。

从设计到流量测试完毕,用了差不多 两天半 的时间。go-netflow 的接口方面还算完善,最少满足了我们容器云团队及 sre 的需求。但他的 cli 终端部分很是简陋,有兴趣的同学可以帮忙提交 pr。

实现

像 promethues, openfalcon 这类开源监控软件,通过 /proc/net/snmp/proc/net/netstat 获取连接和流量信息。

  • /proc/net/snmp 文件只是提供了主机各层的IP、ICMP、ICMPMsg、TCP、UDP详细数据

  • /proc/net/n

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值