Linux下使用socktop来检测socket的通讯状况
所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket 读写的几个syscall 就可以了解unix域套接字的发送和接受情况。systemtap发行版本提供了个工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是个非常方便的工具, 干这个事情最合适了。安装为了部署 SystemTap,需要安装以下两个 RPM 包:
代码如下:
以 root 权限,运行以下命令安装:
代码如下:
注:在使用 SystemTap 前,需要安装内核信息包,可以运行以下命令安装:
代码如下:
如果安装失败,请手动安装,手动安装步骤请见手动安装内核信息包。注:我在我的主机上运行 stap-prep 的报错信息如下
代码如下:
Need to install the following packages:kernel-devel-2.6.18-308.el5.x86_64kernel-debuginfo-2.6.18-308.el5.x86_64Traceback (most recent call last): File "/usr/bin/yumdownloader", line 19, in <module> import yumImportError: No module named yumproblem downloading rpm(s) kernel-devel-2.6.18-308.el5.x86_64 kernel-debuginfo-2.6.18-308.el5.x86_64手动安装必需的内核信息包需要的内核信息包包含你内核中匹配以下字段 -devel, -debuginfo, 和 -debuginfo-common 的包。如下:
代码如下:
需要安装和你内核对应版本的包,运行命令
代码如下:
可以指定你的内核是 2.6.18-308.el5,因此你需要的包如下:
代码如下:
重要!!!!注意:这三个包必须与你的内核版本匹配,不能你懂的。下载这三个 rpm 包,到 http://rpm.pbone.net 这个网站去下载。或者最简单的在 google 搜索包名。下载 kernel-debuginfo-2.6.18-308.el5.x86_64.rpm:wget ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/x86_64/Debuginfo/kernel-debuginfo-2.6.18-308.el5.x86_64.rpm下载 kernel-devel-2.6.18-308.el5.x86_64.rpm:wget ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/x86_64/Debuginfo/kernel-devel-2.6.18-308.el5.x86_64.rpm下载 kernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm:wget ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/x86_64/Debuginfo/kernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm分别安装这三个包:
代码如下:
初始化测试为了测试 stap 是否安装正确,需要运行以下命令测试:
代码如下:
socket读写查看器socktopsocktop源码里面的版权和简单的功能介绍:使用帮助
代码如下:
USAGE: socktop [-d] [-i interval] [-N num] [-P protocol]… [-f family]…[-t stype]… [-n pname]… [-p pid]… [-u username]… [-h] -d # print network device traffic (default: off)-i interval # interval in seconds between printing (default: 5)-N num # number of top processes and devices to print (default: 10)-f family # this protocol family only (default: all)-P protocol # this protocol only (default: all)-t stype # this socket type only (default: all)-n pname # this process name only (default: all)-p pid # this process ID only (default: all)-u username # this user only (default: all)-c count # number of iteration-m mod_name # generate instrumentation (but do not run)-h # print this help textProtocol Families: LOCAL, INET, INET6, IPX, NETLINK, X25, AX25, ATMPVC, APPLETALK, PACKETProtocols: TCP, UDP, SCTP, IP, FC, … (see /etc/protocols for complete list)Socket Types: STREAM, DGRAM, RAW, RDM, SEQPACKET, DCCP, PACKET上面的使用写的很明白了,我们要过滤的是unix套接字, 每5秒报告下情况, 还顺手把网络设备的流量打出来。
代码如下:
======================= Thu Mar 31 21:23:03 2011 ========================——————————- PROCESSES ——————————-PID UID #SEND #RECV SEND_KB RECV_KB PROT FAMILY COMMAND 24821 50453 1 0 0 0 IP LOCAL crond 3840 0 0 2 0 0 IP LOCAL syslog-ng ——————————– DEVICES ——————————–DEV #XMIT #RECV XMIT_KB RECV_KBeth0 457 250 102 38bond0 457 0 102 0lo 24 24 2 2eth1 0 10 0 0=========================================================================我们很清楚的看到了,crond在发,syslog-ng在收。如果你想知道报文的内容的话,可以改改脚本把报文也dump出来。玩得开心!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » Linux下使用socktop来检测socket的通讯状况
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 织梦模板使用说明
- 你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html