1. 程式人生 > >系統監測和性能分析工具

系統監測和性能分析工具

系統 監測 性能分析

作為一名linux運維工程師來說,對linux系統的日常管理,檢測和系統性能的分析是必不可少的。也有一些針對系統監測和性能分析的工具。咱們現在就來了解一下。


tcpdump命令:

網絡抓包工具,過濾數據包或者定制輸出格式:

常用選項:

-n : 用IP地址表示主機,用數字表示端口號。

-i : 監聽網卡接口,

-i any : 抓取所有網卡接口的數據包。

-v : 輸出詳細信息。

-t : 不打印時間戳

-e : 顯示以太網幀頭部信息。

-x : 以十六進制數顯示數據包的內容。

-X : 打印每個十六進制字節對應ascii字符。

-XX : 打印以太網幀的頭部信息。

-s : 設置抓包時的抓取長度。默認的抓包長度被修改為65535字節。

-S : 絕對值顯示TCP報文段的序號。

-w : 將tcpdump的輸出以特定格式定向到某個文件。

-r : 從文件讀取數據包信息並顯示。


tcpdump表達式操作數:

類型(type): 解釋其後面緊跟著的參數的含義。

支持的類型包括:host, net,port,portrange. 可分別指定(IP地址),

用CIDR方法表示的網絡地址,端口號和端口範圍。

例如: tcpdump net 1.0.0.0/8


方向(dir): src指定數據包的發送端,dst指定數據包的目的端。

例如:tcpdump dst port 53


協議(proto): 指定目標協議,

例如: tcpdump icmp


支持邏輯操作符:and(&&), or(||), not(!)

例如:

tcpdump ip host 主機名 and not 主機名


如果表達式較復雜:用括號分組,用反斜杠\ 或單引號轉義。

例如: tcpdump ‘src 1.1.1.1 and (dst port 3389 or 22)‘



使用部分協議字段的內容來過濾數據包

例如:tcpdump ‘tcp[13] & 2 != 0‘




lsof 命令:

列出當前系統打開的文件描述符的工具。

常用選項:

-i : 顯示socket文件描述符。

使用方法:

lsof -i [46] [protocol][@hostname][ipaddr][:service|port]

說明:

4: ipv4協議

6: ipv6協議。

protocol 指定傳輸層協議。

hostname 指定主機名。

ipaddr 主機IP地址。

service 指定服務名

port 指定端口號。


-u : 顯示指定用戶啟動的所有進程打開的所有文件描述符。

-c : 顯示指定的命令打開的所有文件描述符。

例如:lsof -c httpd


-p : 顯示指定進程打開的所有文件描述符。

-t : 顯示打開了目標文件描述符的進程PID。



使用:

#lsof -p 進程號

輸出信息詳解:

COMMAND : 執行程序所用的命令。

PID : 文件描述符所屬進程的PID

USER : 用戶名。

FD : 文件描述符的描述。

cwd : 進程的工作目錄。

rtd : 用戶的根目錄。

txt : 進程運行的程序代碼。

mem : 映射到內存的文件。


FD以數字+訪問權限表示。

數字: 文件描述符的具體數值。

訪問權限:r(可讀) , w(可寫),u(可讀可寫)

0u,1u,2u :標準輸入,標準輸出,標準錯誤輸出。

3u : 處於LISTEN狀態的監聽socket

4u :epoll內核事件對應的文件描述符。


TYPE:文件描述符類型。

DIR : 目錄。

REG : 普通文件。

CHR : 字符設備文件

IPv4 : IPv4類型的socket文件描述符。0000是未知類型。


DEVICE : 文件所屬設備,

字符設備和塊設備:主設備號,此設備號。

程序文件和動態庫:8:SCSI硬盤。 3 : 該硬盤的第3個分區。


FIFO類型的文件:例如:管道和socket ,

顯示一個內核引用目標文件的地址。


SIZE/OFF : 文件大小或者偏移值。

0t/ox : 偏移值。否則是文件大小。


NODE : 文件的i節點號,對於socket,則顯示為協議類型。


NAME : 文件名





nc 命令:

用來快速構建網絡連接。可以服務器方式運行,也可以客戶端方式運行。

默認以客戶端方式運行。


常用選項:

-i : 設置數據包傳送的時間間隔。

-l : 以服務器方式運行,監聽指定端口。

-k : 重復接收並處理某個端口的所有連接,與-l 一起使用。


-n : IP地址表示主機,數字表示端口。

-s : 設置本地主機發送出的數據包的IP地址。

-C : 將CR和LF兩個字符作為行結束符。

-U : 使用unix本地域協議通信。

-u : 使用UDP協議,默認使用TCP協議。

-w : 未檢測到輸入,則退出。


-X : 指定C-S之間使用的通信協議。

-x : 指定目標代理服務器的IP地址和端口號。

例如:

nc -x www:1080 -X connect www.yuan.com 80


-z : 掃描目標主機的某個服務是否開啟。

-C : HTTP行結束符。





strace 命令:

測試服務器性能的工具。

跟蹤程序運行過程中執行的系統調用和接收到的信號,並將系統調用名,參數,返回值及信號名輸出到標準輸出和指定的文件。


常用的選項:

-c 統計每個系統調用執行時間,執行次數和出錯次數。

-f 跟蹤由fork調用生成的子進程。

-t 加上時間信息。

-e 指定表達式,用來控制如何跟蹤系統調用。

格式:

[qualifier=][!]values1[,value2]......


qualifier: trace,abbrev,verbose,raw,signal, read,write. 默認是trace.


value 取值:

-e trace=set : 只跟蹤指定的系統調用。

-e trace=file : 只跟蹤與文件操作相關的系統調用。

-e trace=process : 跟蹤與進程控制相關的系統調用。


-e trace=network : 網絡相關

-e tace=signal : 信號相關

-e trace=ipc : 與進程間通信相關

-e signal=set : 跟蹤指定的信號

-e read=set : 輸出從指定文件中讀入的數據。

-o : 將strace的輸出寫入指定的文件。


netstat命令:

網絡信息統計工具。打印本地網卡接口上的連接,路由表信息,網卡接口信息。

常用的選項:

-n : IP地址表示主機,數字表示端口。

-a : 包含監聽socket.

-t : 顯示TCP連接。

-r : 顯示路由信息

-i : 顯示網卡接口的數據流量。

-c : 每隔1s輸出一次。

-o : 顯示socket定時器的信息。

-p : 顯示socket所屬進程的PID和名字。




ifstat命令:

網絡流量監測工具。

常見選項:

-a : 監測所有網卡接口。

-i : 指定要監測的網卡接口。

-t : 輸出信息加時間戳。

-b : 以Kbit/s為單位顯示數據。

delay : 采樣間隔。

count : 采樣次數。


例如:ifstat -a 2 5


mpstat 命令:

  實時監測多處理器系統上每個cpu的使用情況。

需要安裝sysstat 包。

用法:mpstat [-p {|all}] [interval][count]]


-p : 指定要監控的CPU號。

all : 監聽所有的CPU

interval : 采樣間隔。

count : 采樣次數。


例如:#mpstat -P ALL 5 2

輸出信息:

%usr : 除了nice值為負的進程,系統其他進程運行在用戶空間的時間占CPU總運行時間的比例。

%nice : nice值為負的進程運行在用戶空間的時間占CPU總運行時間的比例。

%sys : 系統上所有進程運行在內核空間的時間占CPU總運行時間的比例。


%iowait : CPU等待磁盤操作的時間占CPU總運行時間的比例。

%irq : CPU用於處理硬件中斷的時間占CPU總運行時間的比例。

%soft : CPU用於處理軟件中斷的時間占CPU總運行時間的比例。


%steal : 一個物理CPU可以包含一對虛擬CPU,

由超級管理程序管理。當超級管理程序在處理某個虛擬CPU時,

另外一個虛擬CPU則必須等待它處理完成才能運行。

等待時間就是steal時間。該字段表示steal時間占CPU總運行時間的比例。


%guest : 運行虛擬CPU的時間占CPU總運行時間的比例。

%idle : 系統空閑的時間占CPU總運行時間的比例。


主要註意:%usr, %sys, %idle的變化。






系統性能工具:

sar命令:

分析系統性能的重要工具。

可獲取系統的CPU,運行隊列,磁盤I/O,分頁(交換區),內存,CPU中斷,網絡等性能數據。


語法:

sar [options] [-o filename] [interval [count]]


選項含義:

-A : 顯示系統所有資源設備(CPU,內存,磁盤) 的運行狀況。

-u : 顯示系統所有CPU在采樣時間內的負載狀態。

-P: 顯示當前系統中指定CPU的使用情況。


-d: 顯示所有硬盤設備在采樣時間內的使用情況。

-r : 顯示系統內存在采樣時間內的使用情況。

-b: 顯示緩沖區在采樣時間內的使用情況。

-v : 顯示進程,文件,節點和鎖表狀態。

-n 顯示網絡運行狀態。

參數:DEV : 顯示網絡接口信息。

EDEV : 顯示網絡錯誤的統計數據。

SOCK : 顯示套接字信息。

FULL : 顯示前三參數的所有信息。


-q : 顯示了運行隊列的大小。

-R : 顯示進程在采樣時間內的活動情況。

-y : 顯示終端設備在采樣時間內的活動情況。


-w : 顯示系統交換活動在采樣時間內的狀態。

-o filename, 將命令結果以二進制格式存放在文件中,filename是文件名。


interval : 表示采樣間隔時間。

count : 表示采樣次數。默認值1.


例如:

查看系統CPU的整體負載負載狀況。

#sar -u 3 5

系統的CPU 從0開始。查看第二個CPU的運行負載。

#sar -P 1 3 5


查看系統磁盤讀寫性能:

#sar -d 3 5


查看系統內存使用情況,網絡運行狀態:

#sar -r 5 2

#sar -n DEV 5 3


#sar -u 3 5

輸出信息詳解:

%user : 用戶進程消耗的CPU時間百分比。

%nice : 運行正常進程所消耗的CPU時間百分比。

%system : 系統進程消耗的CPU時間百分比。

%iowait : I/O等待所占用的CPU時間百分比。


%steal : 內存不足時,pagein強制對不同的頁面進行的steal操作。


%idle : CPU處在空閑狀態的時間百分比。


可分開查詢系統的每個CPU,統計每個CPU的 使用情況。

#sar -P 0 3 5



iostat 命令:

對系統的磁盤I/O操作進行監視。

顯示磁盤讀寫操作的統計信息。

對系統整體情況進行分析。

要安裝sysstat的工具包。


語法:

iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]


選項含義:

-c : 顯示CPU的使用情況。

-d : 顯示磁盤的使用情況。

-k : 每秒以KB為單位顯示數據。

-t : 打印出統計信息開始執行的時間。

-x device : 指定要統計的磁盤設備名稱,默認為所有磁盤設備。


interval : 指定兩次統計間隔的時間。

count : 按照"interval" 指定的時間間隔統計的次數。


組合使用:

查看系統磁盤的使用狀況:

#iostat -d 2 3

輸出內容詳解:

Blk_read/s : 每秒讀取的數據塊數。

Blk_wrtn/s : 每秒寫入的數據塊數。

Blk_read : 讀取的所有塊數。

Blk_wrtn : 寫入的所有塊數。



iostat -x 組合提供了對每個磁盤的單獨統計,默認是對所有磁盤進行統計。

例如:iostat -x /dev/sda 2 3

輸出內容解釋:

rrqm/s : 每秒進行合並的讀操作數目。

wrqm/s : 每秒進行合並的寫操作數目。

r/s : 每秒完成讀I/O設備的次數。

w/s : 每秒完成寫I/O設備的次數。

rsec/s : 每秒讀取的扇區數。

wsec/s : 每秒寫入的扇區數。


free 命令 :

監控linxu內存使用狀況。

選項:

-m : 以M為單位的內存使用情況。

-s : 指定的時間段內不斷地監控內存的使用情況。


-b : 以1024字節為單位顯示內存使用情況。


公式:

可用內存/物理內存> 70% ,表示系統內存資源充足。


可用內存/物理內存<20%時,系統內存資源緊缺。


20%<可用內存/物理內存<70%時, 內存資源滿足應用需求。




如有什麽不對之處,敬請指正。




本文出自 “安然一笑” 博客,請務必保留此出處http://liyuanjie.blog.51cto.com/12877605/1959700

系統監測和性能分析工具