部署sFlow Collector
wget https://inmon.com/products/sFlow-RT/sflow-rt.tar.gz
解压安装sFlow
tar -zxvf sflow-rt.tar.gz
启动sFlow
cd sflow-rt
./start.sh
可以看到sFlow已经启动,默认端口为6343,可以通过虚拟机内置的浏览器输入http://localhost:8008打开监控页面
也可以通过netstat -anput|grep 6343查看sFlow服务是否启动
部署sFlow Agent
保持Collector服务运行
mn创建拓扑
一般这个时候会出现mn使用的端口被占用无法启动mn
查看占用端口的进程id,使用命令终止进程:sudo kill 1265(这个id是我自己端口上的id1265)
配置网卡
查看网卡
网桥s1无IP,通过ens33端口是无法监控到Mininet内部两个主机的ping测试。因此需要把eth0端口IP复制给s1,由s1端口作为sFlow Agent来监听,开启一个新终端
ifconfig ens33 0 up
ovs-vsctl add-port s1 ens33
Ifconfig s1 10.0.0.3 netmask 255.255.255.0
route add default gw 10.0.0.1
route -n
每条命令的含义:
- ifconfig ens33 0 up
- ifconfig 是 Linux 系统中用于配置网络接口的命令。
- ens33 是宿主机上的一个网络接口,通常是物理网卡的名称。
- 0 是一个标志,表示这个接口是一个虚拟接口,而不是物理接口。
- up 表示激活这个接口,使其开始发送和接收数据。 这条命令的目的是激活宿主机上的 ens33 接口,以便它可以用于与 Mininet 内部进行通信。
- ovs-vsctl add-port s1 ens33
- ovs-vsctl 是 Open vSwitch 的命令行工具,用于管理 Open vSwitch 的配置。
- add-port 命令用于向 Open vSwitch 桥添加端口。
- s1 是 Mininet 中的一个虚拟交换机。
- ens33 是宿主机上的 eth0 接口的别名,通常在 Mininet 环境中创建。 这条命令的目的是将宿主机上的 eth0 接口添加到 Mininet 中的 s1 交换机上,这样就可以通过宿主机的物理接口来监控 Mininet 内部的流量。
- ifconfig s1 10.0.0.3 netmask 255.255.255.0
- ifconfig 命令用于配置网络接口。
- s1 是 Mininet 中的一个虚拟交换机。
- 10.0.0.3 是为 s1 分配的 IP 地址。
- netmask 255.255.255.0 是分配给 s1 的子网掩码,它定义了该 IP 地址所在的子网。 这条命令的目的是为 Mininet 中的 s1 交换机分配一个 IP 地址和子网掩码,这样就可以通过这个 IP 地址来访问 s1 交换机。
- route add default gw 10.0.0.1
- route 命令用于设置和显示路由表。
- add 命令用于添加新的路由条目。
- default 表示默认路由。
- gw 是 gateway(网关)的缩写,表示路由器。
- 10.0.0.1 是设置的默认网关地址。 这条命令的目的是为 s1 交换机设置一个默认网关,这样它就可以通过这个网关来访问外部网络。
- route -n
- route 命令用于设置和显示路由表。
- -n 是一个选项,表示以数字形式显示路由表,而不是解析主机名。 这条命令的目的是显示当前的路由表,以便你可以确认默认网关是否已经正确设置。
请注意,这些命令是在 Mininet 外部执行的,而不是在 Mininet 内部。这些命令的目标是配置宿主机上的网络接口和路由,以便 Mininet 内部可以通过宿主机的物理接口进行通信和监控。
开启OvS的sFlow功能,并配置sFlow Agent,命令如下:
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
sudo ovs-vsctl -- --id=@sflow create sFlow agent=s1 target="10.0.0.3:6343" header=128 sampling=64 polling=1
-
- 这行命令创建了一个sFlow配置,指定了以下参数:
- agent=s1:设置sFlow agent为s1,即Mininet中的交换机。
- target="10.0.0.3:6343":指定sFlow collector的地址为10.0.0.3:6343。
- header=128:设置sFlow报文头的大小为128字节。
- sampling=64:设置采样的数据包之间的间隔为64个数据包。
- polling=1:设置轮询的时间间隔为1秒。
- 这行命令创建了一个sFlow配置,指定了以下参数:
-- set bridge s1 sflow=@sflow
-
- 这行命令将上述sFlow配置应用到名为s1的桥上。
命令执行后,生成了一个UUID 66eabdae-8b9f-4bb9-8267-7ac93818245d,这是sFlow配置的唯一标识。
现在,s1交换机将开始监听流量,并将流量信息发送到配置的sFlow collector。可以通过访问sFlow collector的Web界面来查看监控结果。
SFLOW查看监控结果
登录前文提到的http://localhost:8008 查看结果
sFlow Agents:表示当前运行的sFlow代理数量。sFlow是一种网络流量监控技术,允许网络管理员收集、分析和报告网络流量数据。
sFlow Bytes:表示当前捕获的sFlow字节数。sFlow通过在网络设备上嵌入 agents 来监控和记录网络流量的详细信息,包括源和目的 IP 地址、端口号、协议类型等。这些字节数反映了 agent 正在监控的网络流量的大小。
sFlow Packets:表示当前捕获的sFlow包数。sFlow 数据包是携带网络流量信息的较小数据单元,每个包都包含了网络流量的基本信息。这个指标显示了 agent 能够监控和处理的网络流量数量。
Apps:表示当前运行的应用程序数量。这可能指的是系统中的所有应用程序或者是特定的服务或进程。
Apps Failed:表示当前应用程序失败的次数。这可能是由于应用程序崩溃、异常退出或其他故障导致的失败。
Scripts:表示当前执行的脚本数量。这些脚本可能是自动化配置工具、监控脚本或其他类型的脚本,用于管理、监控或优化网络性能。
Scripts Failed:表示当前脚本失败的次数。这可能是由于脚本执行过程中出现错误、依赖问题或其他原因导致的失败。
HTTP Connections:表示当前建立的 HTTP 连接数量。HTTP(超文本传输协议)是一种广泛使用的互联网通信协议,用于在客户端和服务器之间传输数据。这个指标可以反映网站的访问量、服务器负载等情况。
HTTP Connections:表示当前活跃的 HTTP 连接数量。这通常是指那些正在进行数据传输的连接,而不是已经完成传输的连接。
Memory:表示当前内存的使用百分比。这个指标反映了系统内存的使用情况,可以帮助用户了解系统的资源利用情况和潜在的内存不足问题。