Linux下網路監控工具總結
對任何規模的業務來說, 網路監控工具都是一個重要的功能.
網路監控的目標可能千差萬別. 比如, 監控活動的目標可以是保證長期的網路服務、安全保護、對效能進行排查、網路使用統計等. 由於它的目標不同, 網路監控器使用很多不同的方式來完成任務. 比如對包層面的嗅探, 對資料流層面的統計資料, 向網路中注入探測的流量, 分析伺服器日誌等.
儘管有許多專用的網路監控系統可以365天24小時監控, 但您依舊可以在特定的情況下使用命令列式的網路監控器, 某些命令列式的網路監控器在某方面很有用. 如果您是系統管理員, 那您就應該有親身使用一些知名的命令列式網路監控器的經歷. 這裡有一份Linux上流行且實用的網路監控器列表.
1 包層面的嗅探器
在這個類別下, 監控工具在鏈路上捕捉獨立的包, 分析它們的內容, 展示解碼後的內容或者包層面的統計資料. 這些工具在最底層對網路進行監控、管理, 同樣的也能進行最細粒度的監控, 其代價是影響網路I/O和分析的過程.
編號 | 工具 | 描述 |
---|---|---|
1 | dhcpdump | 一個命令列式的DHCP流量嗅探工具, 捕捉DHCP的請求/回覆流量, 並以使用者友好的方式顯示解碼的DHCP協議訊息. 這是一款排查DHCP相關故障的實用工具. |
2 | dsniff | 一個基於命令列的嗅探、偽造和劫持的工具合集,被設計用於網路審查和滲透測試. 它可以嗅探多種資訊, 比如密碼、NSF流量(LCTT 譯註:此處疑為 NFS 流量)、email訊息、網路地址等 |
3 | httpry | 一個HTTP報文嗅探器, 用於捕獲、解碼HTTP請求和回覆報文, 並以使用者友好的方式顯示這些資訊. (LCTT 譯註:延伸閱讀.) |
4 | IPTraf | 基於命令列的網路統計資料檢視器. 它實時顯示包層面、連線層面、介面層面、協議層面的報文/位元組數. 抓包過程由協議過濾器控制, 且操作過程全部是選單驅動的. (LCTT 譯註:延伸閱讀.) |
5 | mysql-sniffer | 一個用於抓取、解碼MySQL請求相關的資料包的工具。它以可讀的方式顯示最頻繁或全部的請求 |
6 | ngrep | 在網路報文中執行grep。它能實時抓取報文,並用正則表示式或十六進位制表示式的方式匹配(過濾)報文。它是一個可以對異常流量進行檢測、儲存或者對實時流中特定模式報文進行抓取的實用工具 |
7 | p0f | 一個被動的基於包嗅探的指紋採集工具,可以可靠地識別作業系統、NAT或者代理設定、網路鏈路型別以及許多其它與活動的TCP連線相關的屬性 |
8 | pktstat | 一個命令列式的工具, 通過實時分析報文, 顯示連線頻寬使用情況以及相關的協議(例如,HTTP GET/POST、FTP、X11)等描述資訊 |
9 | Snort | 一個入侵檢測和預防工具,通過規則驅動的協議分析和內容匹配,來檢測/預防活躍流量中各種各樣的後門、僵屍網路、網路釣魚、間諜軟體攻擊 |
10 | tcpdump | 一個命令列的嗅探工具, 可以基於過濾表示式抓取網路中的報文, 分析報文, 並且在包層面輸出報文內容以便於包層面的分析. 他在許多網路相關的錯誤排查、網路程式debug、或安全監測方面應用廣泛 |
11 | tshark | 一個與Wireshark視窗程式一起使用的命令列式的嗅探工具. 它能捕捉、解碼網路上的實時報文, 並能以使用者友好的方式顯示其內容. |
2 流/程序/介面層面的監控
在這個分類中, 網路監控器通過把流量按照流、相關程序或介面分類, 收集每個流、每個程序、每個介面的統計資料. 其資訊的來源可以是libpcap抓包庫或者sysfs核心虛擬檔案系統. 這些工具的監控成本很低, 但是缺乏包層面的檢視能力.
編號 | 工具 | 描述 |
---|---|---|
1 | bmon | 一個基於命令列的頻寬監測工具, 可以顯示各種介面相關的資訊, 不但包括接收/傳送的總量/平均值統計資料, 而且擁有歷史頻寬使用檢視 |
2 | iftop | 一個頻寬使用監測工具,可以實時顯示某個網路連線的頻寬使用情況。它對所有頻寬使用情況排序並通過ncurses的介面來進行視覺化。他可以方便的監控哪個連線消耗了最多的頻寬. (LCTT 譯註:延伸閱讀) |
3 | nethogs | 一個基於ncurses顯示的程序監控工具,提供程序相關的實時的上行/下行頻寬使用資訊。它對檢測佔用大量頻寬的程序很有用. (LCTT 譯註:延伸閱讀.) |
4 | netstat | 一個顯示許多TCP/UDP的網路堆疊的統計資訊的工具。諸如開啟的TCP/UDP連線書、網路介面傳送/接收、路由表、協議/套接字的統計資訊和屬性. 當您診斷與網路堆疊相關的效能、資源使用時它很有用 |
5 | speedometer | 一個視覺化某個介面傳送/接收的頻寬使用的歷史趨勢,並且基於ncurses的條狀圖進行顯示的終端工具 |
6 | sysdig | 一個可以通過統一的介面對各個Linux子系統進行系統級綜合性除錯的工具。它的網路監控模組可以監控線上或離線、許多程序/主機相關的網路統計資料,例如頻寬、連線/請求數等. (LCTT 譯註:延伸閱讀.) |
7 | tcptrack | 一個TCP連線監控工具,可以顯示活動的TCP連線,包括源/目的IP地址/埠、TCP狀態、頻寬使用等. |
8 | vnStat | 一個儲存並顯示每個介面的歷史接收/傳送頻寬檢視(例如,當前、每日、每月)的流量監控器。作為一個後臺守護程序,它收集並存儲統計資料,包括介面頻寬使用率和傳輸位元組總數. (LCTT 譯註:延伸閱讀.) |
9 | nload | nload預設分為上下兩塊, 上半部分是 : Incoming也就是進入網絡卡的流量, 下半部分是 : Outgoing,也就是從這塊網絡卡出去的流量, 每部分都有當前流量(Curr), 平均流量(Avg), 最小流量(Min), 最大流量(Max) |
3 主動網路監控器
不同於前面提到的被動的監聽工具,這個類別的工具們在監聽時會主動的“注入”探測內容到網路中,並且會收集相應的反應。監聽目標包括路由路徑、可供使用的頻寬、丟包率、延時、抖動(jitter)、系統設定或者缺陷等。
編號 | 工具 | 描述 |
---|---|---|
1 | dnsyo | 一個DNS檢測工具, 能夠管理跨越多達1500個不同網路的開放解析器的DNS查詢. 它在您檢查DNS傳播或排查DNS設定的時候很有用 |
2 | iperf | 一個TCP/UDP頻寬測量工具,能夠測量兩個端點間最大可用頻寬。它通過在兩個主機間單向或雙向的輸出TCP/UDP探測流量來測量可用的頻寬. 它在監測網路容量、調諧網路協議棧引數時很有用. 一個叫做netperf的變種擁有更多的功能及更好的統計資料. |
3 | netcat/socat | 通用的網路除錯工具,可以對TCP/UDP套接字進行讀、寫或監聽。 它通常和其他的程式或指令碼結合起來在後端對網路傳輸或埠進行監聽. (LCTT 譯註:延伸閱讀.) |
4 | nmap | 一個命令列的埠掃描和網路發現工具。它依賴於若干基於TCP/UDP的掃描技術來查詢開放的埠、活動的主機或者在本地網路存在的作業系統。它在你審查本地主機漏洞或者建立維護所用的主機對映時很有用. zmap是一個類似的替代品,是一個用於網際網路範圍的掃描工具. (LCTT 譯註:延伸閱讀.) |
5 | ping | 一個常用的網路測試工具。通過交換ICMP的echo和reply報文來實現其功能。它在測量路由的RTT、丟包率以及檢測遠端系統防火牆規則時很有用。ping的變種有更漂亮的介面(例如,noping)、多協議支援(例如,hping)或者並行探測能力(例如,fping). (LCTT 譯註:延伸閱讀.) |
6 | sprobe | 一個啟發式推斷本地主機和任意遠端IP地址之間的網路頻寬瓶頸的命令列工具. 它使用TCP三次握手機制來評估頻寬的瓶頸。它在檢測大範圍網路效能和路由相關的問題時很有用. |
7 | traceroute | 一個能發現從本地到遠端主機的第三層路由/轉發路徑的網路發現工具. 它傳送限制了TTL的探測報文,收集中間路由的ICMP反饋資訊. 它在排查低速網路連線或者路由相關的問題時很有用. traceroute的變種有更好的RTT統計功能(例如,mtr). |
4 應用日誌解析器
在這個類別下的網路監測器把特定的伺服器應用程式作為目標(例如,web伺服器或者資料庫伺服器). 由伺服器程式產生或消耗的網路流量通過它的日誌被分析和監測。不像前面提到的網路層的監控器,這個類別的工具能夠在應用層面分析和監控網路流量.
編號 | 工具 | 描述 |
---|---|---|
1 | GoAccess | 一個針對Apache和Nginx伺服器流量的互動式檢視器。基於對獲取到的日誌的分析,它能展示包括日訪問量、最多請求、客戶端作業系統、客戶端位置、客戶端瀏覽器等在內的多個實時的統計資訊,並以滾動方式顯示 |
2 | mtop | 一個面向MySQL/MariaDB伺服器的命令列監控器,它可以將成本最大的查詢和當前資料庫伺服器負載以視覺化的方式顯示出來。它在您優化MySQL伺服器效能、調諧伺服器引數時很有用. |
3 | ngxtop | 一個面向Nginx和Apache伺服器的流量監測工具,能夠以類似top指令的方式視覺化的顯示Web伺服器的流量. 它解析web伺服器的查詢日誌檔案並收集某個目的地或請求的流量統計資訊 |
5 圖形介面工具
編號 | 工具 | 描述 |
---|---|---|
1 | Monit | Monit 是一個Linux/UNIX系統上開源的程序、檔案、目錄和檔案系統監控和管理工具,可自動維護和修復一些錯誤的情況. |
2 | Ganglia是一個跨平臺可擴充套件的,高 效能計算系統下的分散式監控系統,如叢集和網格。它是基於分層設計,它使用廣泛的技術,如XML資料代表,便攜資料傳輸,RRDtool用於資料儲存和可 視化。它利用精心設計的資料結構和演算法實現每節點間併發非常低的。它已移植到廣泛的作業系統和處理器架構上,目前在世界各地成千上萬的叢集正在使用。它已 被用來連結大學校園和世界各地,可以處理2000節點的規模. | |
3 | Munin | Munin 是一個非常好用安裝和設定方便的監測軟體 |
4 | Cacti | Cacti在英文中的意思是仙人掌的意思,Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網路流量監測圖形分析工具。它通過 snmpget來獲取資料,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的引數。它提供了非常強大的資料和使用者管理功能,可以指定每一個使用者能檢視樹狀結 構、host以及任何一張圖,還可以與LDAP結合進行使用者驗證,同時也能自己增加模板,功能非常強大完善. |
5 | Nagios是一個監視系統執行狀態和網路資訊的監視系統。Nagios能監視所指定的本地或遠端主機以及服務,同時提供異常通知功能等, Nagios可執行在Linux/Unix平臺之上,同時提供一個可選的基於瀏覽器的WEB介面以方便系統管理人員檢視網路狀態,各種系統問題,以及日誌等等. | |
6 | zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案. | |
7 | Observium是一個可自動發現網路中的思科裝置和 Linux系統的網路監控工具,而是包括了主要的網路硬體和作業系統的廣泛支援。 Observium發展出來的一種輕鬆缺乏使用NMSes。其目的是提供一個更加通航介面的健康和你的網路效能。它的設計目標包括收集儘可能就裝置多的歷 史資料,是完全與很少或無需人工干預的自動發現,並有一個非常直觀的介面. | |
8 | Zenoss | Zenoss Core是開源企業級IT管理軟體-是智慧監控軟體,他允許IT管理員依靠單一的WEB控制檯來監控網路架構的狀態和健康度。Zenoss Core同時也是開源的網路與系統管理軟體. |
9 | Collectd | collectd是一個守護(daemon)程序,用來收集系統性能和提供各種儲存方式來儲存不同值的機制。比如以RRD 檔案形式 當系統執行和儲存資訊的時候,Collectd會週期性統計系統的相關統計資訊。那些資訊可以用來找到當前系統性能瓶頸. (如作為效能分析 performance analysis)和預測系統未來的load(如能力部署capacity planning).如果你需要美觀的圖形來顯示您的資料,並且已經厭煩了內部解決方案,恭喜您,你找到了正確的地方. |
10 | Argus | Argus是一個網路連線監控器,可以利用它來定製監控網路中符合某種條件的計算機,例如網路空閒、斷開等. |