作為一名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%時, 記憶體資源滿足應用需求。
如有什麼不對之處,敬請指正。