系統監測和性能分析工具
作為一名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
系統監測和性能分析工具