局域网网络流量监控_LINUX常见性能监控工具总结
概述
很多朋友私信問關于linux有哪些性能監控工具,所以整理了這方面內容,下面分享下給大家。
工具功能概覽
整理了一個關于監控工具及其功能的表。下面對這些工具單獨詳細介紹。
Linux性能監控工具
top
top命令會展示進程的實際活動。默認情況下,它會列出系統上所有cpu密集型任務,并且每5秒鐘刷新一次列表。可以對PID(數值),生存時間(最新的排最前面),時間(累計時
間)以及常駐內存使用率和時間(進程啟動開始占用cpu的時間)進行排序。
輸出中的各列:
PID 進程號USER 進程所有者的名字。PRI 進程優先級NI nice級別SIZE 進程使用的內存(代碼、數據和棧),kb單位RSS 物理RAM使用量,kb單位SHARE 和其它進程共享的內存,kb單位STAT 進程狀態:S=睡眠,R=運行,T=停止或跟蹤,D=不可中斷的睡眠,Z=僵尸。%CPU CPU使用量。%MEM 物理內存用量TIME 進程使用的總CPU時間(從啟動開始算)COMMAND 進程的命令行啟動命令(包括參數)vmstat
vmstat顯示關于進程,內存,頁,塊I/O,traps和CPU的信息。vmstat既可以展示平均值,也
可以是實時數據。通過提供采樣頻率和采樣時間就可以開啟vmstat的采樣模式。
各列的含義如下:
進程
r:等待執行時間的進程數b:在不可中斷睡眠中的進程數內存
swpd:已使用的虛擬內存量free:空閑內存量buff:作為緩沖的內存cache:作緩存的內存Swap
si:從交換分區寫到內存的量so:從內存寫到交換分區的大小IO
bi:發往塊設備的數目(blocks/s)bo:從塊設備接收的塊數目 (blocks/s)System
in:每秒鐘的中斷次數,包括時鐘cs:每秒的上下文切換次數CPU(總CPU時間的百分比):
us:運行非內核代碼的時間(用戶時間,包括nice時間)sy:運行內核代碼的時間(系統時間)id:空閑時間,早先的Linux2.5.41版本,包含了I/O等待時間wa:等待IO的時間,早先的Linux2.5.41版本,這個值為0uptime
uptime 命令可以用來查看服務器運行了多長時間,有多少用戶登錄在服務器上,以及服務器的平均負載。分別展示過去1分鐘、5分鐘和15分鐘的系統瓶頸負載值。
平均負載最理想的值是1,意味著每個進程可以直接使用CPU,沒有發生CPU周期丟失。不同系統的負載有很大差別。對單處理器工作站來說,1或2的負載值是勉強可以接受的,而在多
處理器服務器上,平均負載為8或者10的時候,系統依舊運行良好。
使用uptime或許可以找出服務器或網絡的問題。例如,當網絡服務運行不佳時,你就可以用uptime命令查看系統負載情況。如果負載不高,問題可能出現在你的網絡中,而不是服務器系統上。
ps 和 pstree
在系統分析中,ps和pstree是最基礎的命令,ps有三種不同的命令選項,UNIX、BSD和GNU
風格。
ps命令展示所有進程列表。top命令展示了進程活動,而且ps顯示的信息更加詳細。ps所顯示
出來的進程數量取決于所使用的命令參數。簡單的ps -A命令會列出所有的進程和他們各自的
PID,我們可以使用PID做更多的事情。在使用pmap,renice等工具的時候,就需要用到
PID。
在運行java應用的服務器上,使用ps -A命令可能一下子就把顯示器全部占滿了,很難清楚查
看運行進程的完整列表。在這個情況下,pstree命令可能就會派上用場,它把運行進程以樹形
結構展示,把子進程合并展示(例如java線程)。
其它的命令選項:
-e 所有進程,和-A一樣-l 顯示長格式-F 額外的全格式,包括參數和選項。-H 顯示進程等級-L 顯示線程,可能帶有LWP和NLWP列-m 在進程后面顯示線程使用如下命令可以看到詳細的進程信息:
ps -elFL
輸出的字段含義:
F 進程標志S 進程狀態:S=睡眠,R=運行,T=停止或跟蹤, D=不可中斷的睡眠,Z=僵尸。UID 擁有進程的用戶名字。PID 進程IDPPID 父進程IDLWP LWP號(light weight process,or thread,輕量級進程,或線程)。c 處理器使用的百分比。NLWP 進程中的lwps(線程)個數。PRI 進程優先級NI nice級別(進程是否通過nice改變優先級,見下文)ADDR 進程地址空間(例子中沒展示)SZ 進程使用的內存大小(代碼+數據+棧) ,單位kb。WCHAN 睡眠進程的內核函數名字,如果進程在運行,顯示“-”,如果顯示為“*”,則表示是多線程。RSS 駐留內存大小,任務所使用的非swap物理內存大小,單位是kb。PSR 分配給進程的處理器個數。STIME 命令開始時間TTY 終端TIME 進程從啟動開始,使用CPU的總時間CMD 開啟任務的命令(包含參數)free
free命令顯示了系統所有已用和可用內存(包括swap)量。也包括被內核使用的緩沖和緩存
信息。
使用free命令的時候,記住Linux內存架構和虛擬內存管理器的工作方式??臻e內存是受限使
用的,使用swap也不表示出現了內存瓶頸。
下圖展示了free命令的基本原理。
free命令基本原理
free命令的常用參數:
-b,-k,-m,-g 以字節b,千字節kb,兆字節mb和吉字節gb為單位展示。
-l 顯示詳細的高低內存統計
-c 輸出free的次數
Memory used in a zone
iostat
iostat命令顯示從系統啟動依賴的平均CPU時間(和uptime類似)。它會生成服務器磁盤子系
統的活動報告:CPU和磁盤設備利用情況。使用iostat找出詳細的I/O瓶頸,進行性能優化,詳
見“找到磁盤瓶頸”一節內容。iostat是sysstat包里的一個組件。
CPU使用報告有4個部分:
%user 顯示CPU在用戶級執行應用程序所花時間的百分比。
%nice 顯示帶有nice優先級的用戶級程序占用的CPU時間百分比(詳見“nice,renice一
節”)。
%sys 顯示顯示執行系統級(內核)任務所占用CPU時間的百分比。
%idle 顯示CPU空閑的時間百分比。
設備使用報告包括如下部分:
Device 塊設備的名字
tps 設備上的每秒傳輸次數(每秒的I/O請求數)。多個單I/O請求可以合成一個傳輸請
求,因為每個傳輸請求的大小可以是不一樣的。
Blk_read/s,Blk_wrtn/s 每秒塊讀寫顯示了每秒從設備讀或者寫的數據。塊也可以有不同的
大小。常見的是1024,2048和4096字節,這是取決分區大小。
sar
使用sar命令可以收集、展示和保存系統信息。sar命令由三個部分組成:sar,顯示數據,sa1
和sa2,收集和存儲數據。sar工具是sysstat包的一部分。
mpstat
mpstat是一個可以展示多處理器服務器上每個可用CPU活動信息的命令。所有CPU的平均活
動情況也會顯示出來。mpstat也是sysstat包的一部分。
mpstat工具可以全面展示系統或者CPU的統計信息。通過給mpstat傳遞采樣頻率和采樣次
數,可以模擬vmstat的使用。下圖展示了通過mpstat -P ALL 來輸出每個CPU的平均使用率。
numastat
在企業數據中心,非統一內存架構(Non-Uniform Memory Architecture ,NUMA)已經變成主流,例如IBM System x3950,然而,NUMA系統給調優帶來了新的挑戰。在NUMA出現之前,我們從來不需要關心內存的位置。幸好,企業Linux發行版為監測NUMA架構行為提供了工具。numastat命令提供本地和遠程內存使用率和所有節點的整體內存配置。本地內存分配失敗的信息在numa_miss一行展示,遠程內存(shower memory)分配信息在numa_foregin一行展示。過度的使用遠程內存會增加風險,可能導致整體性能下降。把進程綁定映射本地內存的節點會增加性能。
pmap
pmap命令會展示一個或多個進程正在使用的內存量。使用這一工具,你可以確定服務器上的
哪一個進程正在分配內存,還有是否這部分內存導致了內存瓶頸。更多信息,使用pmap -d 1選項。
最后一行顯示的信息最為有用:
mapped 該進程映射到文件的內存量。writable/private 該進程使用的私有地址空間。shared 該進程和其它進程共享的地址空間量。netstat
netstat 是最常用的工具之一,如果你從事網絡工作,你應該對這個命令很熟悉。它會展示網
絡相關的信息,例如socket使用,路由,接口,協議和其它網絡統計。
有如下的基礎選項:
-a 顯示所有的socket信息-r 顯示路由信息-i 顯示網絡接口統計-s 顯示網絡協議統計Socket信息解釋:
Proto socket使用的協議(tcp,udp,raw)。
Recv-Q 表示收到的數據已經在本地接收緩沖,但是還有多少沒有被進程取走,單位是字
節。
Send-Q 對方沒有收到的數據或者說沒有Ack的,還是本地緩沖區,單位字節。
Local Address socket的本地地址和端口。除非使用--numeric(-n)選項,socket地址會被
解釋成主機名(FQDN),端口號會被轉成相應的服務名字。
Foreign Address 遠端socket的端口和地址。
State socket的狀態。因為raw和UDP通常是沒有狀態的,所以這列可能是空白。
iptraf
iptraf監控和展示TCP/IP的實時流量。它可以根據各個session、接口、協議展示TCP/IP流量
統計。iptraf組件是由iptraf包提供。
iptraf給我們展示如下的報告:
IP流量監控:通過TCP連接的網絡流量統計接口一般統計:網絡接口流量統計接口詳細統計:根據端口的網絡流量統計統計分析:根據TCP/UDP端口和包大小的網絡流量統計。局域網統計:根據網絡2層地址的網絡流量統計。tcmpdump / ethereal
tcpdump和ethereal通常用來抓取和分析網絡流量。這兩個工具都會用到libpcap庫來抓取包。
在混雜模式下,它們會監控網卡上的所有流量,并且抓取所有網卡上收到的分片。為了抓取
所有包,這些命令應該使用超級用戶權限執行,以便開啟網卡混雜模式。
你可以使用這些工具來找到和網絡相關的問題??梢园l現TCP/IP重傳,滑動窗口大小變化,
名字解析問題、網絡錯誤配置等。記住,這些工具只能監控所有到達網卡的分片,而不是所
有的網絡流量。
1、tcpdump
tcpdump是一個簡單和強大的工具。它擁有基本的協議分析能力,可以獲得網絡上的大體情
況。tcpdump可以使用很多選項和擴展表達式來過濾要抓取的包。入門可以看看如下的幾個選項:
-i 指定網絡接口-e 打印數據鏈路層頭-s 抓取每個包的字節-n 避免DNS解析-w 寫入文件-r 從文件讀取-v,-vv,-vvv 詳細輸出抓取過濾器的表達式:
關鍵字:
源目主機,源目端口,tcp,udp,icmp,源目網絡等等聯合邏輯使用
非 ('!'或者'not')與 ('&&'或者'and')或 ('||'或者'or')DNS查詢包
2、ethereal
ethereal有和tcpdump相似的功能,但是更加復雜,并且擁有更高級的協議分析和報告能力。
它還擁有一個GUI接口和ethereal命令行界面。
和tcpdump類似,ethereal也可以使用過濾抓取,從而縮小抓取分片的范圍。如下是一些常用
的表達式。
IP
ip.version ==6 and ip.len > 1450ip.addr == 129.111.0.0/16ip.dst eq www.example.com and ip.src == 192.168.1.1not ip.addr eq 192.168.4.1TCP/UDP
tcp.port eq 22tcp.port == 80 and ip.src == 192.168.2.1tcp.dstport == 80 and (tcp.flags.syn == 1 or tcp.flags.fin == 1)tcp.srcport == 80 and (tcp.flags.syn == 1 and tcp.flags.ack == 1)tcp.dstport == 80 and tcp.flags == 0x21應用層
http.request.method == "POST "smb.path contains SERVERSHAREnmon
Nigel's Monitor簡稱nmon,是由Nigel Griffiths開發的監控Linux系統性能的常用工具。由于nmon能監控多個子系統的性能信息,所以,可以把它作為性能監控的唯一工具。通過nmon可以獲取的信息有:處理器利用率、內存利用率、運行隊列信息、磁盤I/O統計和網絡I/O統計,頁活動信息和進程指標。
nmon輸出的CSV文件可以導入電子表格應用中,生成可視化圖形報告,要使用該功能,啟動nmon的時候需要帶上-f選項。例如使用如下命令,讓nmon生成30秒鐘為頻率,總時長1小時的報告。
# nmon -f -s 30 -c 120strace
strace命令會攔截和記錄進程的系統調用或進程接收到的信號。這是一個有用的診斷、教學和
調試工具。它在解決程序遇到的問題方面很有價值。
使用時,需要指定要監控的進程ID:
strace -p
Proc文件系統
proc文件系統不是真實的文件系統,但是它真的十分有用。它不是存儲數據的;而是提供運
行內核的監控和操作接口。proc文件系統讓管理員可以監控和修改運行中的內核。下圖展示
了一個簡單的proc文件系統。大多數Linux性能工具都要依賴于/proc提供的信息。
proc文件系統下的信息和布局:
/proc目錄下的文件
/proc根目錄下的各種文件里面包含相關系統的統計。你可以找到Linux工具使用的信息源,例如vmstat和cpuinfo文件。數字1到X
各個數字的子目錄指向的是運行進程或者它們的進程ID(PID)。目錄結構總是已PID 1開始,指向的是init進程,然后是系統上運行的各個PID。每個數字子目錄下保存進程相關的統計信息。例如進程映射的虛擬內存。acpi
ACPI意思是高級配置與電源接口(advanced configuration and power interface),,受到大多數現代桌面和筆記本系統支持。由于ACPI主要是PC技術,所以在服務器上通常是禁用狀態。總線(bus)
這個子目錄包含總線子系統的信息,例如PCI總線或者系統USB接口。irq
irq目錄包含系統中斷的信息。這個目錄下的每個子目錄代表一次中斷,也可能是一個附加設備,例如網卡。在irq子目錄下,你可以修改一個給定中斷的CPU關聯(affinity)。net
網絡子目錄下包含網絡接口的原始統計數據,例如收到的多播包或接口的路由。scsi
scsi子目錄包含系統上關于SCSI子系統的信息,例如附加設備或者驅動調整。sys
在sys子目錄下,是可調整的內核參數,例如虛擬內存管理器或者是網絡棧的行為。tty
虛擬終端和附加的物理設備信息都包含在tty子目錄中篇幅有限,關于linux性能監控工具就大概介紹到這了,大家有空可以自己測試下,后面會分享更多linux方面的內容,感興趣的朋友可以關注下!!
總結
以上是生活随笔為你收集整理的局域网网络流量监控_LINUX常见性能监控工具总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#位图转换未矢量图_c# 图形图像 |
- 下一篇: 创建数独小游戏uniapp/vue