基于 LIBPCAP 的网络监控工具 TCPLSTAT | 软件推介

2018 年 3 月 3 日 开源中国 calvinwilliams



概述


只因为上周五晚上我不小心看了一眼libpcap资料,创造情结蠢蠢欲动,一个周末都没过好,经过四个晚上奋力疾书,于是在周二晚的现在诞生了这个TCP网络监控工具。


tcplstat是基于libpcap网络嗅探程序包的网络监控工具,它能旁路捕获所有经过网络设备过滤规则的TCP数据,跟踪当前所有TCP连接会话,记录所有经过的TCP分组。


当连接断开或到达最大记录数时倒出统计信息,包含但不限于连接两端网络地址、建立时间戳、三步握手各分组延迟、四步分手各分组延迟,数据分组明细、往来分组间延迟和相反方向分组延迟的最小、平均、最大统计值。


tcplstat在旁路工作,所以不会对应用造成任何影响,也无需侵入应用,即可获得网络数据往来分组明细和统计信息。


tcplstat在实现基础网络监控功能时还实现了采集分析SQL耗时和HTTP耗时信息,同样也是旁路捕获,不影响应用也无需改造应用,帮助应用优化性能。


tcplstat是开源的,除了引用了Linux内核的红黑树和链表源码外,自身源码只有1500行左右,源码结构简单易读。


安装


(理论上tcplstat可以安装在任何有libpcap的环境,包括Linux、WINDOWS、AIX等,以下以Linux操作系统为例)


2.1. 源码编译安装


从tcplstat源码托管站点(网址在最后)下载最新源码包,解开并进入源码目录


    

按需修改安装目录



注意:编译环境需要开发包libpcap-devel,请预先安装好。


编译、安装tcplstat



编译链接只产生了一个可执行程序tcplstat,也可自行复制到目标目录。


显示版本信息



使用


3.1. 命令行参数说明


不带命令行参数执行显示所有命令行参数



  • -i设置网络设备接口,不设置则默认使用any

  • -f设置网络过滤规则,比如tcp port 445嗅探所有连接到端口445的往来TCP分组,具体参见pcap-filter(7)

  • -o一旦捕获到TCP分组,输出数据类型,E表示输出分组事件,S表示连接断开输出会话统计信息,P表示连接断开输出TCP分组统计信息,D表示连接断开输出TCP分组数据信息,d表示输出调试信息

  • --sql捕获SQL统计耗时信息

  • --http捕获HTTP统计耗时信息

  • --max-packet-trace-count针对长连接不释放,总是不能侦测到连接断开也就不能输出会话总结信息,该选项设置TCP分组累积到多少时强制输出并清空TCP分组明细信息,默认为1000,下次输出会话统计信息时前缀从'E |'变成'E -'

  • --log-file输出到日志文件,不设置文件则输出到屏幕


注意:执行tcplstat需要root权限。


3.2. 一个示例(即时输出TCP分组事件)


第一屏运行tcplstat



第二屏向445端口发送一个字符串,然后被samba服务器无情强行断开



第一屏输出



E开头的行为一个TCP分组,各列分别是发生时间戳、链路层头结构、发送方MAC、接收方MAC、发送方IP、接收方IP、发送方PORT、接收方PORT、序列号、反馈序列号、分组类型标志集合、有效荷载数据长度。


3.3. 另一个示例(短连接断开后输出统计信息)


第一屏运行tcplstat



第二屏向445端口发送一个字符串,然后被samba服务器无情强行断开



第一屏输出



S开头的行为一个连接统计信息,各列分别是连接方地址、被连接方地址、建立连接时间戳、连接总存在时间、三步握手各分组延迟、四步分手各分组延迟、往来分组间延迟和相反方向分组延迟的最小、平均、最大统计值,总分组数,有效载荷数据总大小。


P开头的行为一个连接中的一个TCP分组统计信息,各列分别是分组发生时间戳、往来分组间延迟和相反方向分组延迟、连接方地址、分组发送方向、被连接方地址、分组类型标志集合、有效荷载数据长度。


可以看出,自己想获得什么样的数据,就组合命令行参数-o后面的字母集合即可,最详细的信息参数组合是ESPDd


3.4. 再一个示例(采集统计SQL耗时


捕获SQL的原理很简单,检查每一个TCP分组中是否存在SQL语句,如果有则做个标记,等待下一个有效载荷的反向TCP分组到来后,计算时间差即是SQL执行时间。


这里以PostgreSQL为例,MySQL、Oracle等同样有效。


第一屏运行tcplstat



第二屏用psql打开数据库连接,查询所有表总记录数



第一屏输出



Q开头的行为一条SQL耗时统计,各列是开始执行时间戳、执行耗时、SQL语句。

可以看到表alphastock_stock_kline很大,SQLselect count(*) from alphastock_stock_kline花了42秒,表alphastock_company_ipo很小,SQLselect count(*) from alphastock_company_ipo花了0.6毫秒。


整个采集统计过程完全以旁路方式进行,不影响应用也无需侵入应用。


详情及源码地址获取:




推荐阅读

Spring Boot 2.0.0 终于正式发布,重大修订版本

不同行业的软件都爱用什么编程语言开发?

自己手写一个 SpringMVC 框架

从零开始设计一个漂亮的移动 APP

给程序员的 2018 新年计划清单

点击“阅读原文”查看更多精彩内容

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
102+阅读 · 2020年7月1日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
129+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
239+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
78+阅读 · 2020年3月15日
《深度学习》圣经花书的数学推导、原理与Python代码实现
数据标注研究综述,软件学报,19页pdf
专知会员服务
93+阅读 · 2020年2月20日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
30+阅读 · 2019年10月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
17+阅读 · 2019年5月13日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
抖音爬虫
专知
3+阅读 · 2019年2月11日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
自动文本摘要
AI研习社
21+阅读 · 2018年10月27日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
深度学习人脸检测和识别系统 DFace | 软件推介
开源中国
7+阅读 · 2017年12月9日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
Arxiv
10+阅读 · 2019年2月19日
Arxiv
12+阅读 · 2019年1月24日
Arxiv
8+阅读 · 2018年2月23日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
102+阅读 · 2020年7月1日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
129+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
239+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
78+阅读 · 2020年3月15日
《深度学习》圣经花书的数学推导、原理与Python代码实现
数据标注研究综述,软件学报,19页pdf
专知会员服务
93+阅读 · 2020年2月20日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
30+阅读 · 2019年10月17日
相关资讯
Kali Linux 渗透测试:密码攻击
计算机与网络安全
17+阅读 · 2019年5月13日
Pupy – 全平台远程控制工具
黑白之道
43+阅读 · 2019年4月26日
抖音爬虫
专知
3+阅读 · 2019年2月11日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
自动文本摘要
AI研习社
21+阅读 · 2018年10月27日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
深度学习人脸检测和识别系统 DFace | 软件推介
开源中国
7+阅读 · 2017年12月9日
10个深度学习软件的安装指南(附代码)
数据派THU
17+阅读 · 2017年11月18日
Top
微信扫码咨询专知VIP会员