实验sFlow流量监控(同一个虚拟机中)

课堂练习2

(1)安装JDK

参考:Linux之Ubuntu18.04安装Java JDK8的三种方式_ubuntu jave8 镜像站-CSDN博客

华为镜像站下载jdk:Index of java-local/jdk/8u151-b12

image-20241028153537432

下载好后,将文件复制到虚拟机中。这里是放在了Downloads目录。

image-20241028153637555

进入到JDK压缩包所在的目录,进行解压。

# 创建文件夹
sudo mkdir /usr/lib/jvm
# 将JDK解压到上面创建的文件夹
tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/lib/jvm

查看JDK的安装目录,这里是jdk1.8.0_151,下面修改环境变量时的目录要与这里的目录名一样。

ls /usr/lib/jvm/

image-20241028154320370

修改环境变量

# 打开文件
sudo vi ~/.bashrc

在文件末尾添加下面的内容

#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151  ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH  

image-20241028154530249

使环境变量立即生效

source ~/.bashrc

系统注册此JDK

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_151/bin/java 300

# 注意:/usr/lib/jvm/jdk1.8.0_151/bin/java这里也要改为自己的JDK目录

查看当前JDK版本。

java -version

如果执行上面的命令后,输出的版本与下载的JDK版本不一致,可能是安装了多个Java版本,通过下面的命令可以切换系统中的多个Java版本。

sudo update-alternatives --config java

image-20241028154856369

(2)安装sFlow-RT

可参考官方文档:sFlow-RT 下载

# 下载sFlow-RT软件包
wget https://inmon.com/products/sFlow-RT/sflow-rt_3.0-1707.deb
# 使用功能dpkg包管理工具安装sFlow-RT
sudo dpkg -i sflow-rt_3.0-1707.deb

image-20241028145757287

执行下面的命令,启动sflow-rt

sudo systemctl enable sflow-rt
sudo systemctl start sflow-rt

我这里执行上面的命令无法运行。只能手动运行。

# 进入到sflow-rt安装目录
cd /usr/local/sflow-rt/bin/
# 手动运行run-rt
./run-rt

image-20241028155446960

运行后,在虚拟机的浏览器中访问网址http://127.0.0.1:8008,如下图。

image-20241028155802037

这个终端(终端0)不要关闭,请重新创建一个终端继续接下来的实验。

(3)创建topo

注意,接下来的命令请再虚拟机中运行。

新建一个终端(终端1),执行下面的命令,创建topo。

# 创建topo
sudo mn

image-20241028160215153

再用h1 ping h2

重新打开一个终端(终端2),将eth0的IP复制给s1。

sudo ovs-vsctl add-port s1 eth0
sudo ovs-vsctl set Interface eth0 type=internal
sudo ifconfig s1 192.168.66.52 netmask 255.255.255.0

使用ifconfig查看s1的端口状态

image-20241028200356432

现在回到Mininet的终端,终端1。用h1 ping h2。

h1 ping h2

image-20241028200718031

(4)部署sFlow Agent

再切换到终端2,执行下面的命令,开启 OvS 的 sFlow 功能。

sudo ovs-vsctl -- \
  --id=@s create sFlow agent=s1 target=\"127.0.0.1:6343\" \
  -- set bridge s1 sflow=@s

image-20241028201102245

解释:

  • agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量;
  • target:sFlow Collector 的 IP,默认端口6343;
  • bridge:需要开启 sflow 的网桥;

打开虚拟机中的浏览器,在地址栏输入127.0.0.1:8008,查看监控结果。

image-20241028201803081

参考文章:基于Mininet,搭建简单的sFlow测试环境 - cyquen - 博客园