tcpkit

代码地址: git-hulk/tcpkit

那么问题来了,我要怎么玩这个东西呢。按照下面来就可以了…


$ git clone https<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>github<span class="token punctuation">.</span>com<span class="token operator">/</span>git<span class="token operator">-</span>hulk<span class="token operator">/</span>tcpkit<span class="token punctuation">.</span>git <span class="token comment" spellcheck="true">/* 首先... 我得先拿到代码*/</span>
$ cd tcpkit<span class="token operator">/</span>src
$ make <span class="token comment" spellcheck="true">/* make install 是可选,要不要安装到标准的路径  */</span>

本目录就生成了一个 tcpkit 的二进制文件,那么你就可以开始玩它了,姿势可以参考 README

主要的几个参数说明:

-i 指定抓包的网卡,默认是 any,就是所有网卡,但有些系统不支持

-p 指定抓包的端口

-s 如果是在客户端抓包,可以定向抓到某个服务的包

-S 指定处理脚本路径,固定回调 process_packet 这个函数

我们用 redis/mc 延时统计的脚本作为例子,要客户端看看请求 Redis 到返回耗时多长时间。

假设 redis ip: 192.168.1.1, 端口: 6379, 客户端: 192.168.1.2, 那么就就下面这样启动:


sudo <span class="token punctuation">.</span><span class="token operator">/</span>tcpkit <span class="token operator">-</span>s <span class="token number">192.168</span><span class="token punctuation">.</span><span class="token number">1.1</span> <span class="token operator">-</span>p <span class="token number">6379</span> <span class="token operator">-</span>S <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token operator">/</span>scripts<span class="token operator">/</span>redis_mc_monitor<span class="token punctuation">.</span>lua

结果大概如下(ip端口是不对应的):

redis_mc_monitor

第一列是响应的时刻,第二列和第三列分别是客户端和服务端连接的 ip 和端口,第四列是请求,最后一列是耗时

如果跑在服务端,统计就是服务端处理的时间,耗时是包进来到出去的时间差。

NOTE: 在服务端,不需要指定 -s 这个 server ip, 只需要指定端口和脚本


发表评论

电子邮件地址不会被公开。 必填项已用*标注