首先我敢说,现在网上没有谁的文章比我这篇实验记录更加全面。在做这个实验的过程中遇到了许多问题已经解决了,看了许多博客写的内容要不就是工具太落伍了,要不就是条理不清晰,要不就是省略了重要步骤,初学者看了很容易掉坑里,因而我想借这篇文章帮助初学者少走弯路,开心愉快地做完流量监控的小实验。
以下是正文。。。。。。。
简介
sFlow流量监控工具由sFlow Agent和sFlow Collector两部分组成。
sFlow Agent作为客户端,一般内嵌于网络转发设备(如交换机、路由器),通过获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或是在sFlow报文缓存时间(缓存时间为1秒)超时后,sFlow Agent会将sFlow报文发送到指定的Collector。
sFlow Collector作为远端服务器,负责对sFlow报文分析、汇总、生成流量报告。
sFlow-RT 3.0 安装
点击链接跳转至官方sFlow-rt安装包
安装的步骤很简单,只需要在Linux命令终端按以下顺序执行命令即可完成sFlow-rt的安装
wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz
tar -xvzf sflow-rt.tar.gz
cd sflow-rt
./start.sh
强烈吐槽一下,用wget的方式下载安装包真的是巨慢无比,可以用迅雷或IDM下载器试试,虽然速度依然慢,但是还是可以接受。
wget下载
IDM下载
迅雷下载
打开网址http://127.0.0.1:8008
sFlow-RT 3.0版本具有简化的用户界面,该界面专注于管理sFlow-RT分析软件和已安装的应用程序的性能所需的指标。可以使用一些应用程序来替代前2.3版本中的功能。下面的说明了如何安装sFlow-RT 3.0基本的数据探索应用程序。
安装docker
具体安装教程查看:如何在Ubuntu上安装Docker
安装应用程序
mkdir app
docker run -v $PWD/app:/sflow-rt/app --entrypoint /sflow-rt/get-app.sh sflow/sflow-rt sflow-rt flow-trend
docker run -v $PWD/app:/sflow-rt/app --entrypoint /sflow-rt/get-app.sh sflow/sflow-rt sflow-rt browse-metrics
docker run -v $PWD/app:/sflow-rt/app -p 6343:6343/udp -p 8008:8008 sflow/sflow-rt
可以在端口127.0.0.1:8008*问产品用户界面参考文档:sFlow-rt 3.0的app安装教程:sFlow-RT 3.0 released
sFlow-RT 3.0部署及简单实验
1.在两台Linux虚拟主机上部署
系统前提:两台Linux虚拟机A和B,至少有一台虚拟机配备好Mininet环境和OpenVSwitch交换机,以下假设只要虚拟机A符合该条件。在虚拟机B中安装并开启sFlow,在浏览器中打开http://localhost:8008查看端口的采样参数。在本实验中虚拟机A的角色是作为sFlow Agent,虚拟机B则为sFlow Collector。
在虚拟机A中输入以下命令开启Mininet虚拟拓扑网络,为简单起见使用默认的拓扑结构。
sudo mn
在虚拟机A中打开新终端输入以下命令配置sFlow Agent:
sudo su
ovs-vsctl -- --id=@sflow create sflow agent=eth0 target=\"192.168.221.128:6343\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow
命令参数agent是要监听的网卡,target是sflow collector所在的ip地址和sflow默认端口6343,虚拟机B的ip地址为192.168.221.128,bridge设定需要监听的交换机。
通过以下命令可以查询一下配置好的agent信息和链路状态。
sudo ovs-vsctl list sflow
ip link
回到虚拟机A的Mininet终端输入以下命令,模拟产生网络流量。
//洪泛
h1 ping -f h2
//大数据包
iperf h1 h2
切换到虚拟机B在Collector Web界面查看监控结果,查看sFlow采样情况。
2.在一台Linux虚拟机上部署(通过mininet内的两台虚拟主机实现部署)
输入以下命令开启Mininet虚拟拓扑网络,为简单起见使用默认的拓扑结构。
sudo mn
网桥s1无IP,通过ens33端口是无法监控到Mininet内部两个主机的ping测试。因此需要把eth0端口IP复制给s1,由s1端口作为sFlow Agent来监听,开启一个新终端
sudo ifconfig ens33 0 up
sudo ovs-vsctl add-port s1 ens33
sudo ifconfig s1 10.0.0.3 netmask 255.255.255.0
sudo route add default gw 10.0.0.1
route -n
sudo ovs-vsctl -- --id=@sflow create sFlow agent=s1 target=\"10.0.0.3:6343\" header=128 sampling=64 polling=1 -- set bridge s1 sflow=@sflow
待sFlow Agent配置好后,会生成一个UUID。
- agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量
- target:sFlow Collector的IP,默认端口6343;(同一台主机所以也设置为10.0.0.3,不同主机就是不同的ip)
- bridge:需要开启sflow的网桥
在Mininet终端输入以下命令,模拟产生网络流量
h1 ping -f h2
登录sFlow Collector Web页面 ip地址为:http://10.0.0.3:8008/agents/html,查看agents中可知已将虚拟机(10.0.0.3)已加到被监控对象中,通过上述操作步骤,也可以监控多个