Linux下使用socktop來(lái)檢測(cè)socket的通訊狀況
發(fā)布日期:2022-02-04 10:57 | 文章來(lái)源:源碼中國(guó)
所有的socket通訊都是通過(guò)socket接口來(lái)的,任何family的通訊包括unix域套接都要走的,所以只要截獲了socket 讀寫的幾個(gè)syscall 就可以了解unix域套接字的發(fā)送和接受情況。
systemtap發(fā)行版本提供了個(gè)工具socktop, 位于 /usr/share/doc/systemtap/examples/network/socktop, 是個(gè)非常方便的工具, 干這個(gè)事情最合適了。
安裝
為了部署 SystemTap,需要安裝以下兩個(gè) RPM 包:
復(fù)制代碼
代碼如下:systemtap
systemtap-runtime
以 root 權(quán)限,運(yùn)行以下命令安裝:
復(fù)制代碼
代碼如下:yum install systemtap systemtap-runtime
注:在使用 SystemTap 前,需要安裝內(nèi)核信息包,可以運(yùn)行以下命令安裝:
復(fù)制代碼
代碼如下:stap-prep
如果安裝失敗,請(qǐng)手動(dòng)安裝,手動(dòng)安裝步驟請(qǐng)見手動(dòng)安裝內(nèi)核信息包。
注:我在我的主機(jī)上運(yùn)行 stap-prep 的報(bào)錯(cuò)信息如下
復(fù)制代碼
代碼如下:[root@test ~]# stap-prep
Need to install the following packages:
kernel-devel-2.6.18-308.el5.x86_64
kernel-debuginfo-2.6.18-308.el5.x86_64
Traceback (most recent call last):
File "/usr/bin/yumdownloader", line 19, in <module>
import yum
ImportError: No module named yum
problem downloading rpm(s) kernel-devel-2.6.18-308.el5.x86_64 kernel-debuginfo-2.6.18-308.el5.x86_64
手動(dòng)安裝必需的內(nèi)核信息包
需要的內(nèi)核信息包包含你內(nèi)核中匹配以下字段 -devel, -debuginfo, 和 -debuginfo-common 的包。如下:
復(fù)制代碼
代碼如下:kernel-debuginfo
kernel-debuginfo-common
kernel-devel
需要安裝和你內(nèi)核對(duì)應(yīng)版本的包,運(yùn)行命令
復(fù)制代碼
代碼如下:uname -r
2.6.18-308.el5
可以指定你的內(nèi)核是 2.6.18-308.el5,因此你需要的包如下:
復(fù)制代碼
代碼如下:kernel-debuginfo-2.6.18-308.el5.x86_64.rpm
kernel-devel-2.6.18-308.el5.x86_64.rpm
kernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm
重要?。。?!注意:這三個(gè)包必須與你的內(nèi)核版本匹配,不能你懂的。
下載這三個(gè) rpm 包,到 http://rpm.pbone.net 這個(gè)網(wǎng)站去下載。或者最簡(jiǎn)單的在 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
分別安裝這三個(gè)包:
復(fù)制代碼
代碼如下:rpm -ivh kernel-debuginfo-common-2.6.18-308.el5.x86_64.rpm
rpm -ivh kernel-debuginfo-2.6.18-308.el5.x86_64.rpm
rmp -ivh kernel-devel-2.6.18-308.el5.x86_64.rpm
初始化測(cè)試
為了測(cè)試 stap 是否安裝正確,需要運(yùn)行以下命令測(cè)試:
復(fù)制代碼
代碼如下:stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
socket讀寫查看器socktop
socktop源碼里面的版權(quán)和簡(jiǎn)單的功能介紹:
使用幫助
復(fù)制代碼
代碼如下:$ /usr/share/doc/systemtap/examples/network/socktop -h
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 text
Protocol Families:
LOCAL, INET, INET6, IPX, NETLINK, X25, AX25, ATMPVC, APPLETALK, PACKET
Protocols:
TCP, UDP, SCTP, IP, FC, ... (see /etc/protocols for complete list)
Socket Types:
STREAM, DGRAM, RAW, RDM, SEQPACKET, DCCP, PACKET
上面的使用寫的很明白了,我們要過(guò)濾的是unix套接字, 每5秒報(bào)告下情況, 還順手把網(wǎng)絡(luò)設(shè)備的流量打出來(lái)。
復(fù)制代碼
代碼如下:$sudo /usr/share/doc/systemtap/examples/network/socktop -f LOCAL -i 5 -d
======================= 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_KB
eth0 457 250 102 38
bond0 457 0 102 0
lo 24 24 2 2
eth1 0 10 0 0
=========================================================================
我們很清楚的看到了,crond在發(fā),syslog-ng在收。
如果你想知道報(bào)文的內(nèi)容的話,可以改改腳本把報(bào)文也dump出來(lái)。
玩得開心!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章