netflow和sflow可以帮助我们分析网络中的流量构成,抓取实施带宽使用情况,帮我们找出"hog"。作为collector的软件一般都是收费的,例如solarwinds
NTA,sflowTrend-Pro,ntopng商业版等。不过也有开源的解决方案,例如ntopng社区版和nfsen。
下边来说说nfsen,首先流水账一下安装过程。
一、安装nfsen
1.1 安装nginx+php-fpm,细节不说,需要的可以看我之前的blog文章,网上其他人的好文章也大把。
1.2 安装nfdump,nfsen其实是nfdump的前端展示,真正收集数据的是nfdump。
]# yum install nfdump
1.3 安装nfsen
]# tar -zxvf
nfsen-1.3.7.tar.gz
]# cd nfsen-1.3.7
]# cp
etc/nfsen-dist.conf etc/nfsen.conf
]# vi
/etc/nfsen.conf
===> $BASEDIR= "/data/nfsen";
===> $HTMLDIR =
"/var/www/nfsen";
===> $WWWUSER
= "nginx";
===> $WWWGROUP =
"nginx";
===> $PREFIX
= '/usr/bin';
===> %sources = (
===> 'H3C' => { 'port'
=> '8603', 'col' => '#0000ff', 'type' => 'sflow' },
===> );
]# mkdir -p
/data/nfsen
]# useradd netflow -g
nginx
]# yum install perl
perl-Sys-Syslog rrdtool-perl perl-Data-Dumper perl-MailTools
perl-Socket6
]# vi
libexec/NfProfile.pm
===> no strict 'refs';
]# ./install.pl
etc/nfsen.conf
]# cd
/data/nfsen/bin
]# ./nfsen start
1.4 访问http://your_ip_address/nfsen/nfsen.php
二、nfsen界面介绍 [ 这部分转自台湾网友的文章,原文见参考文档9
]
进入nfsen,在首页Home里,会显示flow/packet/流量三种类型的流量缩图,并分别以日/周/月/年四个层级来显示。
在Graphs里其实跟Home显示的功能是相同的,主要的差别在于三种类型的流量图挂在各自的页面里。
也因为如此,流量图能以正常尺寸显示,而不是Home里的缩小显示。
Details是主要的操作页面。
在Details的页面上方,将流量区分为TCP/UDP/ICMP与other四种protocol类型。
点了任何一种protocl,都会显示对应的流量于其下主要的大图里。
而flow/packet/流量三种类型的流量则可透过右侧的小流量图来进行切换。
下方Display旁的浏览列功能按钮,提供用户以鼠标拖拉时间轴外的另一种操作选择。
最下方的统计数据则显示了时间范围内三种类型流量的总和或速率。
Alerts页面可以设定告警机制。
但Nfsen提供的smtp组态设定相当有限,在配置文件nfsen.conf中只提供了以下两个参数,并没有其它细项设定。
$MAIL_FROM = 'your@from.example.net';
$SMTP_SERVER = 'localhost';
所以环境中的mail server需对Nfsen的IP进行open relay放行,才能让Nfsen成功发信;
不然就要在Nfsen上再起个MTA服务来实现发信机制。
Stats页面可对数据保留时与间大小等进行设定。流量图中的颜色调整也是在这个页面中进行喔~
plugins页面显示了Nfsen的插件,若有装PortTracker的话,将于此页面中显示。
在PortTracker中,可以看到它是针对TCP/UDP两种类型的flow/packet/流量三种方式绘制流量图,
可以在这一大五小的图中自行切换要查看的Protocol与流量。
并且于下方统计数据中显示各种Protocol的Port使用排名。
不过比较可惜的是它没有提供像Details页面的时间轴工具,
无法自定时间范围来查询该范围内的Port使用排名。
只能以现在的时间往前推12小时、一天、两天、四天、一周与两周等既定的时间范围来做查询,
这是比较可惜的地方...
三、nfsen抓"hog"实战示例 [
这部分转自台湾网友的文章,原文见参考文档9 ]
登入nfsen网页,由Home或Graphs的Traffic查看有无问题流量。
找到要查询的流量后,选择“Time
Windows”来设定要查询的流量区间。
选择“Time
Windows”后,X轴的光标尺会分裂为左右两边。
先拉右半边游标尺到观察区间的右边。
再拉左半边光标尺到观察区间的左边,完成区间设定。
调整显示方式为“sum”,可在Traffic部分发现问题流量来自tcp协议,
足足有1.2G远远大于其它protocol。
然后在Netflow
Processing区块中,将Options改以“Stat
TopN”的方式,做前几名大户排序。
发现第一名主机IP是192.168.10.208。
找到大户后,接下来要确认的是该用户是以发送端还是接收端在占用流量?
以tcp
protocol及src
ip 192.168.10.208的条件查询其流量
改以tcp
protocol及dst ip 192.168.10.208的方式确认其流量。
proto tcp
and dst ip 192.168.10.208
经过比对,做为发送端的流量只有9.2M,做为接收端的流量则有1.2G;
很明显的192.168.10.208是做为接收端在下载流量。
改以List
Flow来查看来源与目的间的关系。
发现192.168.10.208主要以80及443
port两种方式在下载数据,确认究竟是哪一port所造成的流量。
proto tcp
and dst ip 192.168.10.208 and src port 80
proto tcp and dst ip 192.168.10.208 and src port 443
由流量来看,192.168.10.208是透过80 port在下载数据。但有很多80
port在下载,究竟是哪个来源IP呢?
把Flows打开到最大10000,查询所有联机。
发现是140.138.144.170这个来源IP。
原来是作者本人透过网页在Ubuntu网站下载iso档所造成,一切都是误会~但也成功透过Nfsen查询到占用带宽的凶手!Nfsen的基本操作示范到此,更深入的应用留给有兴趣的您继续研究啰~
四、PortTracker插件的安装流水账
]# cd nfsen-1.3.7
]# vi contrib/PortTracker/PortTracker.pm
===> my $PORTSDBDIR = "/data/ports-db";
]# cp PortTracker.pm /data/nfsen/plugins/
]# cp PortTracker.php
/usr/share/nginx/html/nfsen/plugins/
]# vi etc/nfsen.conf
===> @plugins =
(
===>
[ 'live',
'PortTracker'],
===>
);
每次对nfsen.conf做过改动以后,都需要重新执行一次install.pl
]# ./install.pl etc/nfsen.conf
创建nftrack data目录,并初始化portracker database
]# mkdir -p /data/ports-db
]# nftrack -I -d ports-db/
修改nftrack data目录属主和权限,必须确认netflow用户和nginx用户能访问到。
]# chown -R netflow:nginx ports-db/
]# chmod -R 775 ports-db/
重新载入一下nfsen
]# cd /data/nfsen/bin
]# ./nfsen reload
在日志中确认PortTracker成功初始化
]# grep -i 'porttracker.*success' /var/log/syslog
Nov 27 02:46:13 noc nfsen[17312]: Loading plugin
'PortTracker': Success
Nov 27 02:46:13 noc nfsen[17312]: Initializing plugin
'PortTracker': Success
等待几分钟后,在nfsen的WEB GUI上访问plugins标签查看结果。
==================
参考文档:
1.http://tekyhost.com/building-centos-7-netflows-monitoring-station-with-nfsen-and-nfdump/
2.http://terraltech.com/installation-and-configuration-of-nfdump-and-nfsen-on-ubuntu/
3.https://support.cumulusnetworks.com/hc/en-us/articles/201787866-Configuring-and-Using-sFlow-Visualization-Tools
4.http://blog.sina.com.cn/s/blog_71261a2d0100zew1.html
5.https://code.google.com/p/renisac/wiki/NFSen_Introduction
6.https://www.forwardingplane.net/2014/01/install-nfsen-and-nfdump-on-centos-6-5-for-netflow-and-or-sflow-collection/
7.http://meetings.ripe.net/ripe-50/presentations/ripe50-plenary-tue-nfsen-nfdump.pdf
8.http://blog.gmane.org/gmane.network.nfsen.general/month=20100901
9.http://www.shunze.info/forum/thread.php?threadid=1953&boardid=3&sid=aadc298e695d7f799db0b872563884b3&sid=aadc298e695d7f799db0b872563884b3
10.http://perlmaven.com/symbolic-reference-in-perl