Linux學習-1024(系統監控2)
10月24日任務
10.6 監控io效能
10.7 free命令
10.8 ps命令
10.9 檢視網路狀態
10.10 linux下抓包
擴充套件tcp三次握手四次揮手 http://www.doc88.com/p-9913773324388.html
tshark幾個用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
一、監控io效能
磁碟io監控有兩個命令:iostat -x iotop
- iostat -x 檢視磁碟io負載
iostat和sar屬於同一個包,安裝了sar就可以使用iostat
主要關注 %util,這個值越高說明磁碟I/O負載越高。一般大於70%說明I/O的壓力就很大了,需要進行排查是磁碟的問題還是服務的問題。
- iotop
iotop監控磁碟I/O使用情況,類似於top,可以監測到那一個程式在佔用I/O
安裝:yum -y install iotop
使用iotop命令檢視一下:
二、free命令
free命令是用來檢視記憶體和swap的使用情況,預設的單位是kb
可以使用-m或-g來指定單位,也可以使用-h來檢視
詳解:
Mem:實體記憶體資訊
toptal:實體記憶體總和
used:已使用的記憶體大小
free: 空閒記憶體大小
shared: 共享記憶體
buff/cache: 快取大小。
buffer與cacher 的區別
(資料)磁碟——>記憶體(cache)——>cpu
CPU要計算時,需要把資料從磁碟中讀出來,臨時放到記憶體中,這部分記憶體就是cache
(資料)cpu——>記憶體( buffer)——>磁碟
資料經過CPU計算,即將要寫入磁碟,這時用的記憶體為buffer。
available: buff/cache+free的總和,也就是可用記憶體。如果想看可用記憶體,關注這個即可。
計算公式:
total=used + free + buff/cache
三、ps命令
ps命令是用來檢視系統程序
- ps常用的兩種方式
ps -aux 、ps -elf
ps aux 會把系統中所有的程序給列出來,靜態的顯示出來
ps -elf 顯示出的效果和ps aux基本類似,只不過輸出格式不同
- 顯示說明 ,以ps -aux為例
USER:程序執行的使用者
PID:程序的pid
如果要殺掉程序可以:kill pid
檢視程序啟動目錄:ls -l /proc/PID號
%CPU:程序所使用的cpu佔比
%MEM:程序使用的記憶體佔比
VSZ: 虛擬記憶體
RSS:實體記憶體
TTY:執行在哪一個終端
STAT:程序執行狀態
START:程序啟動時間
TIME:程序執行時間
COMMAND:命令列
- 需要注意STAT程序執行狀態:
D 不能中斷的程序 (會影響CPU資源)
R run狀態的程序(正在執行的程序)
S sleep狀態的程序
T 暫停的程序
Z 殭屍程序
字元< 高優先順序程序
N 低優先順序程序
L 記憶體中被鎖了記憶體分頁
s 主程序
l 多執行緒程序
字元+ 前臺程序
四、監控網路狀態
檢視網路狀態使用netstat命令
- 檢視監聽埠
netstat -lnp
unix中也通訊檔案socket,也顯示socket 的連線資訊
- 檢視所有的連線狀態
netstat -an
- 只檢視tcp連線
netstat -ltnp
- 只檢視tcp和udp
netstat -ltunp
- 檢視網路狀態小技巧
檢視所有的狀態的數字
netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t" ,sta[key]}'
主要關注ESTABLISHED這個值,它是網站的併發連線數,就是同一時間有多少個客戶端在連線你。如果這個值很大說明系統很繁忙,通常這個值在一千以內都是可以接受的。
- 和netstat類似的命令
ss -an
這命令和netstat顯示的差不多,但是它不顯示程序的名字
五、linux下抓包
抓包工具:tcpdump
這個命令如果不能使用則需要安裝:yum install -y tcpdump
- tcpdump最簡單的用法:
tcpdump -nn -i eth0
第一個n表示顯示ip,如果不加則顯示主機名
-i表示指定網絡卡
第一列:時間
第二列:IP 源ip+埠 > 目標ip+埠
第三列:資料包資訊
- DDos攻擊
udp flood 利用大量UDP小包攻擊伺服器,遇到這種情況只能接入防攻擊裝置。
- 指定埠
tcpdump -nn -i eth0 port 22
- 也可以排除埠
tcpdump -nn -i eth0 not port 22
- 排除埠並指定ip
tcpdump -nn -i eth0 not port 22 and host ip地址
- 指定資料包,並存到檔案中
tcpdump -nn -i eth0 port 22 -c 10 -w 2.cap
-c:指定統計多少流量包
-w:指定生成到2.cap檔案中
.cap不能直接檢視,可以使用file命令檢視檔案資訊:
檢視還需要使用tcpdump 命令:
tcpdump -r 2.cap
-r:表示讀取
- tshark命令
tshark是一個類似於tcpdump的抓包工具,它有一個實用的功能:檢視指定網絡卡的80埠的web訪問情況。它可以檢視外部訪問的一個資訊。
使用需要安裝:yum install -y wireshark