主頁(yè) > 知識(shí)庫(kù) > Linux下使用socktop來檢測(cè)socket的通訊狀況

Linux下使用socktop來檢測(cè)socket的通訊狀況

熱門標(biāo)簽:常熟外呼系統(tǒng) 江蘇小型外呼系統(tǒng)軟件 電話機(jī)器人服務(wù)器部署 電銷語(yǔ)音機(jī)器人哪個(gè)好 拉薩銷售外呼系統(tǒng)軟件 百度地圖標(biāo)注未成功 文山外呼營(yíng)銷系統(tǒng) 地圖上標(biāo)注點(diǎn)位的圖標(biāo) 中山防封卡電銷卡辦理

所有的socket通訊都是通過socket接口來的,任何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

 
上面的使用寫的很明白了,我們要過濾的是unix套接字, 每5秒報(bào)告下情況, 還順手把網(wǎng)絡(luò)設(shè)備的流量打出來。
 
復(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出來。
 
玩得開心!

標(biāo)簽:鶴壁 欽州 黔南 海北 河南 天門 景德鎮(zhèn) 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux下使用socktop來檢測(cè)socket的通訊狀況》,本文關(guān)鍵詞  Linux,下,使用,socktop,來,檢測(cè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux下使用socktop來檢測(cè)socket的通訊狀況》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Linux下使用socktop來檢測(cè)socket的通訊狀況的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章