1. 程式人生 > >Linux學習-1024(系統監控2)

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