- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
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 方式(http://IP:3000)来访问 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 协议对应的流量分布图。
图 2-3 Ntop 根据协议进行的流量分布统计
“Summary”下的子栏目“Host”主要显示所有可监控主机的 IP 地址、地理位置、MAC 地址、数据发送接收量、目前活动连接数等各种信息,在主机流量监控方面,可通过 Bytes 方式统计,也可以用 packets 方式统计,要了解每个主机的详细流量信息,只需单击对应的 Host 便可查看,图 2-4 就是某主机在某时刻的流量连接流视图。
图 2-4 通过 Ntop 展示某主机在某时刻的连接流视图
通过图 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 展示的是一个小时内的网络负载统计。
图 2-5 Ntop 展示的一个小时内的网络负载
“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”部分就是流量实时展示界面。
表 2-3 命令行下 Ntop 常用参数含义说明
图 2-6 Ntopng 流量实时监控主界面
从图 2-6 可以看出,Ntopng 的 Web 界面主要分为 Home、Flows、Hosts 和 Interfaces 四个主栏目。其中“Home”栏目主要是从整体上展示并统计发送、接收的数据流;“Flows”栏目是基于 DPI 的自动程序或服务探测程序生成的实时数据报告,主要用于统计活跃的数据流,并将数据流以协议类型、应用类型、数据量大小等方式进行详细统计,如图 2-7 所示。
图 2-7 Ntopng 对活跃数据流的统计
通过图 2-7 可以很清晰地看出每条数据流的发送方和接收方,而“Breakdown”列展示了发送和接收数据量的大小,单击右上角的“Applications”按钮,还可以根据不同的应用类型,例如 HTTP、ICMP、DNS 等,有选择地查看活跃的数据流状态。
“Hosts”栏目显示了所有 Ntopng 可见的主机信息,可分类显示本地的或远程的主机列表,还可以显示每台主机间的交互信息、本地主机矩阵图等信息,如图 2-8 所示。
图 2-8 Ntopng 收集到的所有主机列表
在图 2-8 中,Ntopng 展示了每台主机的主机名、IP 地址、主机所处地域(本地或者远程)、数据收集持续时长、发送/接收数据量、主机网络吞吐量、数据传输量等信息。如果想要了解每台主机更详细的统计信息,可以在图 2-8 中单击每台主机的 IP 进入主机详细信息页,如图 2-9 所示。
图 2-9 Ntopng 对每台主机的详细监控页面
从图 2-9 可以看出,每台主机的详细信息页中又分很多小栏目,默认打开的页面展示了此主机的 MAC 地址、IP 地址、操作系统类型、主机名、数据收集的开始和截止时间、数据发送和接收量等信息,单击图 2-9 中的“Traffic”栏目,可以根据协议类型查看数据的通信量,并且还通过饼状图进行了汇总,如图 2-10 所示。
图 2-10 Ntopng 根据协议类型进行数据流量统计
在图 2-10 中,Ntopng 将通信流量以 TCP、UDP、ICMP 三种协议类型进行分别统计,并且通过饼状图方式进行整体汇总,这对于了解网络中某个通信协议的流量是非常有用的。
单击图 2-9 中的“Packets”栏目,可以根据发送、接收包的数量进行流量统计,如图 2-11 所示。
图 2-11 Ntopng 绘制的数据包发送量、接收量分布图
“Packets”栏目展示的是数据包发送量、接收量的分布图。从图 2-11 中可以看到,在发送的数据包中,数据包量高达 128 的占总发送量的 71.2%,在接收的数据包中,数据包量高达 256 的占总接收量的 83.8%,这个功能可以帮助网络管理员判断网络中发送或接收数据包的数据及占据的比例,网络管理员可以据此来判断网络是否存在异常,进而解决潜在的网络问题。
单击图 2-9 中的“Protocols”栏目,可以根据应用程序的类型进行流量统计,如图 2-12 所示。
图 2-12 Ntopng 根据应用程序的类型进行流量统计
图 2-12 展示了 DNS、HTTP、ICMP、MySQL、SSH 等应用协议在一段时间内的发送、接收数据量,哪个应用程序传输的数据量大,哪个传输的数据量小,一目了然。通过此功能,可以迅速发现哪个应用程序存在问题,对于短时间内流量非常大的应用协议,管理员就需要重点关注了。
图 2-9 中的“Flows”栏目、“Talkers”栏目、“Current Contacts”栏目都比较浅显易懂,这里不再介绍。最后重点关注下“Historical”栏目,如图 2-13 所示,此栏目主要用于将数据流量生成流量图,进而用于分析历史流量数据,可以根据传输协议、应用协议类型等方式选择不同时段来分析数据发送、接收的趋势,通过这些生成的历史流量图,可以分析网络一段时间内的运行状态,并为网络管理和网络故障排除提供依据。
Ntopng 的最后一个主栏目是“Interfaces”,主要用于对监控的网络接口的数据流量进行分析,可以查看监控接口传输数据量的总大小、接收数据包的总个数以及包大小分布状况、每个应用协议产生的流量大小、历史流量数据查询等,可以从整体上了解网络接口的通信状态。
图 2-13 Ntopng 生成的历史数据流量图
Ntopng 也提供了简单的 Web 管理功能,通过 Web 界面可以添加、修改、删除管理员用户,还可以将每台主机的数据以 JSON 的格式导出。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论