如何建設一個網站:SystemTap是運維調試利器。

只用Wireshark抓包,流程思想和TcpDump是類似的,同樣需要選擇監聽的網卡(這

裏包括是否用混雜模式),填寫基本的過濾條件和表達式等。考慮到圖形界面不適合在服

務器端運行,故在這裏不進行闡述。

在已經擁有TcpDump導出的數據包後,可以將其導入Wireshark查看,界面如圖1-5

所示。圖1-5顯示的界面相當清新。在filter中填寫過濾條件時會有自動補全的提示。比

如,只需要寫“http.res”,就自動提示了“http.response.code”。在第二行中,顯示的是解

碼後的信息,並且以協議層次作爲樹結構展示,這樣大大提高了數據的可讀性。

其中,qualifier只能是trace、abbrev、verbose、raw、signal、read、write其中之一,

默認爲trace。舉例如下。

◎ -eopen:等價於.e trace=open,表示只跟蹤open調用。

◎ -etraceI =open:跟蹤除了open以外的其他調用。

除了具體的系統調用以外,還可以指定跟蹤某一類的系統調用,包括file、process、

network、signal和ipc,分別代表文件操作、進程操作、網絡操作、信號操作和進程間通信。

另一個常用qualifier是signal,用來指定跟蹤的系統信號,默認爲all。如signal=! SIGIO

(或者signal= !io),表示不跟蹤SIGIO信號。

在strace的輸出中,我們經常看到大量的“ENOENT(No such file or directory)”,這是

因爲Linux本身對動態庫和頭文件等的存放位置是都多處記錄的,需要全部查詢來進行查

找。比如下面這樣。

以在不中斷和影響進程運行的情況下,暴露出其內部變量和事件信息等。

SystemTap的主要工作方式是由使用者書寫一種類似awk語法的腳本語言(一般我們

會保存成.stap/.stp文件),然後根據stap腳本自動生成一個臨時的內核模塊並加載進內核

運行。

注意它需要使用Linux的Utrace特性來探測用戶空間,所以目前對默認不支持Utrace

的Debian系服務器來說,SystemTap還不太方便使用。但對於生產線上更常見的RedHat

系服務器,SystemTap無疑是運維調試利器。

本文轉自:http://www.yishenzhou.com/bkNews/Detail/477

相關文章