《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——2.2 网络流量监控与分析工具Ntop和Ntopng

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

本节书摘来自华章计算机《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》一书中的第2章,第2.2节,作者:高俊峰著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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监控界面。

  1. 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、FTP、Mail、SSH、DNS等服务产生的流量进行详细统计,同时还可以统计多播信息、流量分布等;子栏目“Traffic Directions”主要用于统计端到端的流量信息,可以统计本地到本地、本地到远端、远端到本地、远端到远端的流量状态;子栏目“Local”主要是统计局域网络内各主机使用状况,比如可以统计本地路由使用信息、本地端口使用信息、Active Sessions连接信息等。
“Utils”栏目主要包括RRD参数的配置、转存Ntop的统计信息,以及查看Ntop运行日志信息等功能。
“Plugins”栏目用于继承Ntop插件工具,默认安装的插件有NetFlow、rrdPlugin、sFlow等,其中,NetFlow插件可用于设置、激活、停用NetFlow支持,在启用NetFlow后,Ntop就可以统计NetFlow的详细信息,包括NetFlow的格式、数据量及端口流量。而rrdPlugin插件主要用于生成流量图,它比MRTG更灵活,非常适合用shell、perl等程序来调用,以生成所需的图片。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的格式导出。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
28 11
|
2天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
81 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
17天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
44 3
图卷积网络入门:数学基础与架构设计
|
9天前
|
云安全 人工智能 安全
|
1月前
|
消息中间件 缓存 架构师
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
|
14天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
42 3
|
15天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
18天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
51 7
|
21天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。