apache 开源 Windows Python centos google nginx 微软 java Android 程序员 mysql shell php 云计算 Ubuntu Firefox 编程 linux wordpress

《高性能Linux服務器構建實戰:系統安全、故障排查、自動化運維與集群架構》——2.2 網絡流量監控與分析工具Ntop和Ntopng

2.2 網絡流量監控與分析工具Ntop和Ntopng

對於單臺服務器網絡故障的排查,iftop工具可以輕松實現,但是在監控一個龐大的服務器網絡,並且要分析每臺主機以及端口的網絡狀態時,iftop就顯得愛莫能助了,這個時候就需要一個高效的網絡管理系統了。Ntop就是一個功能強大的流量監控、端口監控、服務監控管理系統。
2.2.1 Ntop與MRTG的異同
對於MRTG,讀者可能並不陌生,它是一個監控網絡鏈路流量的工具,通過SNMP協議得到設備的流量信息,並將信息通過圖形展示給用戶。MRTG配置簡單,容易使用,它的優點是耗用的系統資源小,可以非常直觀地顯示流量負載,但是它也有很多缺點,例如:只能用於TCP/ip網絡、數據不能重復使用、無法記錄更詳細的流量狀態、沒有管理功能等,而這些剛好是Ntop最擅長的地方。
Ntop是網絡流量監控中的新貴,它是一種網絡嗅探器,在監測網絡數據傳輸、排除網絡故障方面功能十分強大。它通過分析網絡流量來判斷網絡上存在的各種問題,還可以監控是否有黑客正在攻擊網絡,如果網絡突然變緩慢,通過Ntop截獲的數據包,可以確定是什麽類型的數據包占據了大量帶寬,以及數據包的發送時間、數據包傳送的延時、數據包的來源地址等,通過這些信息,運維人員可以及時做出響應,或者對網絡進行調整,從而保證網絡正常、穩定運行。
2.2.2 Ntop與Ntopng的功能介紹
Ntop提供了命令行界面和Web界面兩種工作方式,通過Web界面,可以清晰展示網絡的整體使用情況、網絡中各主機的流量狀態與排名、各主機占用的帶寬以及各時段的流量明細、局域網內各主機的路由、端口使用情況等。
根據官方的介紹,Ntop主要提供以下幾個功能:
可以自動從網絡中獲取有用的信息。
可以將獲取的數據包信息轉換為可識別的格式。
可以記錄網絡的通信時間和過程。
可以對網絡中失敗的通信進行分析。
可以發現網絡環境中通信的瓶頸。
可以自動識別客戶端正在使用的操作系統。
通過對Ntop功能的介紹,不難看出,它就是從分析網絡流量角度來確定網絡上存在的各種問題,說得更簡單一點,它就是一個抓包工具,然後通過歸納和繪圖實現更多的功能。
在Ntop版本更新到Ntop5.x之後,官方宣布停止Ntop版本的更新,繼而推出替代版本Ntopng。Ntopng在Ntop版本的基礎上,去掉了一些拖沓冗長的功能,同時新增了網絡流量實時監控功能,並將各個功能進行重新梳理和整合,使整個流量展示更加智能化和合理化。
Ntopng使用Redis鍵值服務按時間序列存儲統計信息,通過這種方式實現了流量狀態實時展示。與Ntop類似,Ntopng也內置Web服務功能,同時,也支持命令行界面和Web界面兩種工作方式,但是Ntopng降低了對CPU和內存的使用率,資源消耗更少。Ntopng除了可以實現Ntop的所有功能外,新增的功能如下:
以圖形的方式動態展示流量狀態。
實時監控網絡數據並實時匯總。
以矩陣圖的方式顯示IP流量。
可以生成基於HTML5/AJAX的網絡流量統計。
支持歷史流量數據分析。
基於HTML5的動態圖形用戶界面。
下面分別介紹Ntop和Ntopng的安裝及使用技巧。
2.2.3 安裝Ntop與Ntopng
1 . 安裝Ntop
Ntop支持Win32、Linux、UNIX、BSD等平臺。可以在Ntop官方網站http://www.ntop.org/下載對應的版本。Ntop的安裝可以通過yum源方式和源碼編譯安裝兩種方式實現,為了能夠使用最新的穩定版本,這裏采用源碼編譯的方式來安裝,安裝過程如下。
(1)安裝Ntop必需的軟件包
這裏安裝的操作系統環境為CentOS 6.3 x86_64版本。為了順利完成源碼編譯,需要安裝Ntop必需的一些軟件包,操作如下:

[root@monitor ~]# yum -y install libpcap libpcap-devel libtool libpng gdbm gdbm-
devel glib libxml2-devel pango pango-devel gd zlib zlib-devel
[root@monitor ~]# yum -y install svn rrdtool rrdtool-devel python python-devel  
GeoIP GeoIP-devel
(2)編譯安裝Ntop
這裏下載的是ntop-5.0.1版本,編譯安裝過程如下:

[root@monitor ~]# tar zxvf ntop-5.0.1.tar.gz
[root@monitor ~]# cd ntop-5.0.1
[root@monitor ~]# ./autogen.sh --with-tcpwrap
[root@monitor ~]# make 
[root@monitor ~]# make install
其中,--with-tcpwrap選項用於支持tcp_wrappers訪問控制,以保證Ntop Web訪問的安全。
(3)簡單配置Ntop
在Ntop安裝完成後,默認的數據存放目錄為/usr/local/var/nto。為了保證安全,建議以低權限用戶nobody身份運行Ntop進程,因此,可能需要對Ntop默認的數據存放目錄進行權限調整,執行如下命令即可:

[root@monitor ~]# chown -R nobody /usr/local/var/ntop
通過Ntop的Web頁面可以修改Ntop的設置或關閉Ntop服務,但是必須通過管理員用戶的驗證,Ntop默認的管理員為admin,密碼為空,因此,需要為其設置一個密碼。通過如下命令即可設置admin用戶的密碼:

[root@monitor ~]# ntop –A
然後重復輸入兩次密碼即可。
Ntop的Web頁面在默認情況下沒有訪問限制,有時候為了網絡的安全,建議設置授權訪問,只有授權的主機才能訪問此Web頁面,這可以通過Linux系統本身的tcp_wrappers功能實現,授權過程如下:

[root@monitor ~]# vim /etc/hosts.allow
ntop: 192.168.12.188
[root@monitor ~]# vim /etc/hosts.deny
ntop: ALL
這裏設置只允許IP地址為192.168.12.188的主機可以訪問Ntop的ntop服務,禁止其他所有IP訪問。
2 . 安裝Ntopng
Ntopng是目前Ntop官方的主推版本,可以從http://www.ntop.org/ 下載目前最新的ntopng-1.1源碼版本進行編譯安裝。不過為了安裝方便,官方推出了Ntopng的yum源倉庫,通過yum源倉庫可以輕松安裝Ntopng,這裏就采用yum源方式進行安裝。
(1)設置yum源
首先為Ntopng創建一個yum源倉庫,內容如下:

[root@localhost ~]# cat /etc/yum.repos.d/ntop.repo
[ntop]
name=ntop packages
baseurl=http://www.nmon.net/centos/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.nmon.net/centos/rpm-GPG-KEY-deri
然後下載一個epel的yum源:

[root@localhost ~]# wget  \
> http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@localhost ~]# rpm –Uvh epel-release-6-8.noarch.rpm
(2)安裝Ntopng
在設置好兩個yum源後,安裝Ntopng就變得十分簡單了,只需執行如下操作即可:

[root@localhost ~]# yum clean all
[root@localhost ~]# yum update
[root@localhost ~]# yum install pfring n2disk nProbe ntopng ntopng-data nbox
(3) 配置Ntopng
在Ntopng安裝完成後,默認的配置文件模板是/etc/ntopng/ntopng.conf.sample,可以將此文件重命名為ntopng.conf,然後在這個配置文件中添加一些配置信息,例如:

[root@localhost ~]# cat /etc/ntopng/ntopng.conf
-G=/var/tmp/ntopng.gid
--local-networks "192.168.12.0/24"  
--interface em2    
--user nobody    
--http-port 3000
相關參數含義如下:
-G指定存儲Ntopng進程號的文件路徑。
--local-network指定要監控的本地子網段。
--interface em2指定監聽em2網卡上的流量。
--user指定運行Ntopng服務所使用的賬戶。
--http-port指定Ntopng的Web服務端口號,如果不指定,默認端口為3000。
(4)啟動Ntopng服務
在啟動Ntopng服務之前,需要先啟動redis服務。redis的功能之前介紹過,主要為Ntopng提供鍵值存儲。下面首先啟動redis服務,然後啟動Ntopng服務,執行操作如下:

[root@localhost ~]# service redis  start
[root@localhost ~]# service ntopng  start
為了保證redis和Ntopng服務在以後可開機自啟動,還需要執行如下操作:

[root@localhost ~]# chkconfig ntopng on
[root@localhost ~]# chkconfig redis on
最後,就可以通過Web方式來訪問Ntopng提供的服務了,默認登錄用戶名和密碼均為admin,可在登錄後進行修改。
2.2.4 Ntop和Ntopng的使用技巧
在完成Ntop安裝後,執行如下命令即可啟動Ntop服務:

[root@networkserver ~]# ntop -i em1 -L –d
這裏通過Ntop命令監控網卡em1的流量狀態,相關參數的含義將在後面章節詳細介紹。在執行此命令後,Ntop服務的日誌輸出將重定向到系統的/var/log/messages文件中,同時將開啟默認的3000端口作為Web界面服務端口,執行http://IP:3000即可訪問Ntop提供的Web監控界面。

Web界面下Ntop的使用方法與技巧
Ntop的Web界面主要由7個主欄目組成,下面介紹每個欄目中需要重點關註的功能點。
“About”欄目包括Ntop的簡單介紹和一些在線手冊等幫助信息。
“Summary”欄目是對目前網絡流量的一個整體概況,其中子欄目“Traffic”可以顯示全局流量統計,主要包含網絡接口流量統計、協議流量分布、應用協議流量統計等,網絡流量會以柱面圖、曲線圖和明細表格的形式展示。圖2-3顯示的是L2/L3協議對應的流量分布圖。

image

“Summary”下的子欄目“host”主要顯示所有可監控主機的IP地址、地理位置、MAC地址、數據發送接收量、目前活動連接數等各種信息,在主機流量監控方面,可通過Bytes方式統計,也可以用packets方式統計,要了解每個主機的詳細流量信息,只需單擊對應的Host便可查看,圖2-4就是某主機在某時刻的流量連接流視圖。

image

通過圖2-4可以非常清晰地了解某主機在某時刻的連接狀態,中間的豎柱表示的是IP為“125.76.237.248”的這臺主機,然後以豎柱為中心,分成左右兩個部分,左邊部分表示外部IP與“125.76.237.248”這臺主機之間的發送、接收數據流量,右邊部分表示“125.76.237.248”這臺主機與外部IP之間的發送、接收數據流量,連接的寬度表示發送或接收數據量的大小。
在“Summary”下的子欄目“Host”中,在查看每臺主機的詳細流量頁面上有一個按時段的流量統計功能,這個功能非常有用,通過這個統計可以查看某主機在一天任意一個小時內發送、接收的數據流量,同時還可以通過餅狀圖進行集中匯總。
“Summary”下的子欄目“Network Load”用於網絡負載統計,通過該項功能可以查看最近10分鐘、一小時、一天、一個月的網絡流量信息。圖2-5展示的是一個小時內的網絡負載統計。

image

“All Protocols”欄目主要用於查看各主機發送、接收的數據量,並將數據以TCP、UDP、ICMP的方式進行分類統計。其中,子欄目“Throughput”主要顯示所有可見主機的吞吐量,子欄目“Activity”主要顯示當前網絡可見主機在24小時中每小時的流量狀態,並且每個時段根據流量的大小分別用不同的顏色進行標註。
“IP”欄目主要對各臺主機中應用層協議產生的流量進行統計。例如,子欄目“Summary”主要對各主機中HTTP、ftpmailssh、DNS等服務產生的流量進行詳細統計,同時還可以統計多播信息、流量分布等;子欄目“Traffic Directions”主要用於統計端到端的流量信息,可以統計本地到本地、本地到遠端、遠端到本地、遠端到遠端的流量狀態;子欄目“Local”主要是統計局域網絡內各主機使用狀況,比如可以統計本地路由使用信息、本地端口使用信息、Active Sessions連接信息等。
“Utils”欄目主要包括RRD參數的配置、轉存Ntop的統計信息,以及查看Ntop運行日誌信息等功能。
“Plugins”欄目用於繼承Ntop插件工具,默認安裝的插件有NetFlow、rrdPlugin、sFlow等,其中,NetFlow插件可用於設置、激活、停用NetFlow支持,在啟用NetFlow後,Ntop就可以統計NetFlow的詳細信息,包括NetFlow的格式、數據量及端口流量。而rrdPlugin插件主要用於生成流量圖,它比MRTG更靈活,非常適合用Shellperl等程序來調用,以生成所需的圖片。sFlow是一種新的網絡監測技術,可適應超大網絡流量下的流量數據分析,在Ntop中啟用sFlow支持後,不但可以降低實施成本,也可以解決網絡管理中面臨的很多問題。
最後一個欄目“admin”是一個管理選項,訪問此欄目時需要提供管理員密碼,有Ntop的參數配置、登錄Ntop的密碼設置、配置用戶訪問Ntop的頁面、Ntop的啟動與關閉等幾個功能選項。這些Ntop的配置與管理功能非常簡單,這裏不過多講述。
2 . 命令行下Ntop的常用參數
Ntop也可以在命令行下使用。雖然在命令行下沒有那麽直觀,但是添加和修改配置非常迅速,並且還能實現很多Web界面下無法完成的功能。執行“ntop -h”命令即可顯示Ntop在命令行下可使用的所有參數信息。在命令行下Ntop常用的參數及含義如表2-3所示。
3 . Ntopng的使用方法與技巧
與Ntop的使用方法類似,Ntopng的Web監控界面更加智能化,功能展示更加統一和人性化。Ntopng的核心功能是實時數據流展示。圖2-6是登錄Ntopng後的一個主界面,中間的“top Flow Talkers”部分就是流量實時展示界面。
image

從圖2-6可以看出,Ntopng的Web界面主要分為Home、Flows、Hosts和Interfaces四個主欄目。其中“Home”欄目主要是從整體上展示並統計發送、接收的數據流;“Flows”欄目是基於DPI的自動程序或服務探測程序生成的實時數據報告,主要用於統計活躍的數據流,並將數據流以協議類型、應用類型、數據量大小等方式進行詳細統計,如圖2-7所示。

image

通過圖2-7可以很清晰地看出每條數據流的發送方和接收方,而“Breakdown”列展示了發送和接收數據量的大小,單擊右上角的“Applications”按鈕,還可以根據不同的應用類型,例如HTTP、ICMP、DNS等,有選擇地查看活躍的數據流狀態。
“Hosts”欄目顯示了所有Ntopng可見的主機信息,可分類顯示本地的或遠程的主機列表,還可以顯示每臺主機間的交互信息、本地主機矩陣圖等信息,如圖2-8所示。
image

在圖2-8中,Ntopng展示了每臺主機的主機名、IP地址、主機所處地域(本地或者遠程)、數據收集持續時長、發送/接收數據量、主機網絡吞吐量、數據傳輸量等信息。如果想要了解每臺主機更詳細的統計信息,可以在圖2-8中單擊每臺主機的IP進入主機詳細信息頁,如圖2-9所示。

image

從圖2-9可以看出,每臺主機的詳細信息頁中又分很多小欄目,默認打開的頁面展示了此主機的MAC地址、IP地址、操作系統類型、主機名、數據收集的開始和截止時間、數據發送和接收量等信息,單擊圖2-9中的“Traffic”欄目,可以根據協議類型查看數據的通信量,並且還通過餅狀圖進行了匯總,如圖2-10所示。
image

在圖2-10中,Ntopng將通信流量以TCP、UDP、ICMP三種協議類型進行分別統計,並且通過餅狀圖方式進行整體匯總,這對於了解網絡中某個通信協議的流量是非常有用的。
單擊圖2-9中的“Packets”欄目,可以根據發送、接收包的數量進行流量統計,如圖2-11所示。
image

“Packets”欄目展示的是數據包發送量、接收量的分布圖。從圖2-11中可以看到,在發送的數據包中,數據包量高達128的占總發送量的71.2%,在接收的數據包中,數據包量高達256的占總接收量的83.8%,這個功能可以幫助網絡管理員判斷網絡中發送或接收數據包的數據及占據的比例,網絡管理員可以據此來判斷網絡是否存在異常,進而解決潛在的網絡問題。
單擊圖2-9中的“Protocols”欄目,可以根據應用程序的類型進行流量統計,如圖2-12所示。

image

圖2-12展示了DNS、HTTP、ICMP、mysql、SSH等應用協議在一段時間內的發送、接收數據量,哪個應用程序傳輸的數據量大,哪個傳輸的數據量小,一目了然。通過此功能,可以迅速發現哪個應用程序存在問題,對於短時間內流量非常大的應用協議,管理員就需要重點關註了。
圖2-9中的“Flows”欄目、“Talkers”欄目、“Current Contacts”欄目都比較淺顯易懂,這裏不再介紹。最後重點關註下“Historical”欄目,如圖2-13所示,此欄目主要用於將數據流量生成流量圖,進而用於分析歷史流量數據,可以根據傳輸協議、應用協議類型等方式選擇不同時段來分析數據發送、接收的趨勢,通過這些生成的歷史流量圖,可以分析網絡一段時間內的運行狀態,並為網絡管理和網絡故障排除提供依據。
Ntopng的最後一個主欄目是“Interfaces”,主要用於對監控的網絡接口的數據流量進行分析,可以查看監控接口傳輸數據量的總大小、接收數據包的總個數以及包大小分布狀況、每個應用協議產生的流量大小、歷史流量數據查詢等,可以從整體上了解網絡接口的通信狀態。

image

Ntopng也提供了簡單的Web管理功能,通過Web界面可以添加、修改、刪除管理員用戶,還可以將每臺主機的數據以JSON的格式導出。

延伸阅读

评论