记录端口连接过的IP

netstat是当前的,有什么方法工具之类的记录吗
不在应用层,因为这样灵活一点。
在想有没prometheus+grafana的现成方案,因为想可视化,统计各个端口的对应用户ip的使用情况。
没找到有相关现成的。
现在可能先使用tcpdump -i eth0 dst port 8080 -n >> log.log 来记录。

阅读 2.8k
2 个回答

可以考虑3个层面来解决
1、从应用层面讲,很多应用层是有对应的记录的,比如说http应用,apache和nginx都有访问日志记录。类似有这种访问日志记录的应用很多,具体看你的应用实现,这种是最方便实现的

2、从系统层面讲,你可以考虑使用iptables匹配+日志,针对具体的端口包记录对应的日志,为避免效率问题,可以只针对握手包进行日志记录。或者自己用ebpf来记录、tcpdump来抓包,但这些其他和iptables做的其他也是类似的而已

3、从外部讲,你可以在网关入口那里做记录,如一些防火墙设备可以提供类似的记录

这些思路都可以,看自己的实现需要,另外最不济就是自己定时采集(有没有类似的采集软件一时间我没了解),但自己读取netstat或netstat对应使用的proc接口是非常简单的,缺点就是不太全,定时间隔过程中有些短连接可能记录不到(当然你可以让间隔小于短链接消失的时间,一定程度上也够用的)

如果能在应用层做, 那非常简单, 不介绍了.

如果应用层不能改那么有下面2个方案:

ebpf(bcc)

能比较完美地完成, 不过学习成本很高, 而且对内核版本有要求.

Tcp连接建立,断开都能被监控到

51.12. 追踪已建立的 TCP 连接
https://access.redhat.com/doc...

tcpdump

用tcpdump抓握手报文.

不是运维, 可能有其他好办法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题