OVS下的sFlow 测试
sflow概述
sFlow是Sampled Flow的简称,是一种用于监控数据网络上交换机或者路由器流量转发状况的技术。
sFlow系统包含一个嵌入在设备中的sFlow Agent和远端的sFlow Collector
- sFlow Agent 内嵌于网络设备中,在sFlow系统中收集流量统计数据发送到Collector端供分析
- sFlow Collector 通常由专门服务器充当,在sFlow系统中收集各Agent的采样数据并以图表形式加以汇总
原理什么的 暂时 也不去了解了。什么消息类型格式什么的。。。采用UDP封装,缺省目的端口号为端口6343 也就是sFlow Agent 会将收集的流量统计信息 发往安装sFlow Collector 主机的6343 端口。
sFlow Collector 工具
sFlow Agent 内嵌于网络设备中,不用特别的设置。
sFlow Collector 工具倒是需要自己找。因为要将收集的数据制表制图什么的,当然,厉害的大神 自己根据端口收集的数据 自己制表制图 也是可以的。
总之,按个人理解 sFlow Collector是一个 数据分析工具,,,把从6343端口收到的数据进行分析 然后制成可视化的 图表的工具。
从网上 看到的 几个 工具
- SolarWinds sFlow Collector and Analyzer(免费试用)
- Paessler PRTG Network Monitor(免费试用)
- inMon sFlowTrend
- ManageEngine NetFlow Analyzer
- ntopng and nProbe
- Plixer Scrutinizer
嗯,各有特点。。。本实验当然用免费的 inMon sFlowTrend。可以顺便测试一下同是inMon 产品的 sFlow-RT。
- inMon sFlowTrend sFlowTrend 是免费的,图形按的网络和服务器监控功能。使用sFlow标准,提供全面用户和应用的网络带宽使用情况。
sFlowTrend™ is a free, graphical network and server monitoring tool. sFlowTrend makes use of the popular sFlow® standard to generate real-time displays of the top users and applications making use of network bandwidth. sFlowTrend also uses the extensions to the sFlow standard for monitoring physical and virtual server performance, to link network, server, and application performance and provide an end-end view of networked system performance. sFlowTrend accepts sFlow data from at most five switches or hosts and stores one hour of data in memory. sFlowTrend-Pro does not limit the number of switches or hosts that can be monitored and stores historical data to disk. - SFlow-RT sFlow流量监控工具,可直观的展现网络中的流量以及其他监控信。
sFlow-RT™ incorporates InMon’s asynchronous analytics technology (U.S. Patents 8838774, 9509583, 9712443, 9722926), delivering real-time visibility to Software Defined Networking (SDN), DevOps and Orchestration stacks and enabling new classes of performance aware application such as load balancing, DDoS protection, and workload placement.
安装inMon sFlowTrend
安装前 要先安装JDK 环境1.8以上
免费版似乎最多支持 5个 交换机的监听。。。
Windows下安装
安装包
32位 系统
https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-windows-x32-7_0_1.exe
64 位 系统
https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-windows-x64-7_0_1.exe
就是一个软件 正常安装就行。。。
从sFlowTrendV7.0开始,Java客户端已经被删除,现在必须使用Web客户端连接到sFlowTrend服务器。一旦安装了sFlowTrend,将浏览器指向http://localhost:8087或https://localhost:8443(当然,如果远程访问服务器,您可以将localhost替换成对应主机名)
所以 安装完成是 没有 一个启动程序的。。。可以在服务中找到它
防火墙也要设置一下 不然6343端口可能收不到统计信息
Windows防火墙-》高级设置-》入站规则-》新建规则
然后定义-》端口-》udp/6343-》允许连接-》何时应用该规则全选上-》再设置名称(随意)
然后 访问 本机的8087端口或者 设置https后访问8443端口 便可以查看到
第一次 使用 可能会让输入 许可证 号之类。。。选择 free 就是免费版。。。
然后就可以查看了。当前没有 交换机 向其发消息 所以 找不到。稍后再设置 OVS 虚拟交换机 发送sflow 消息。
Linux下安装
为linux下安装似乎准备了不少方式
.sh可执行文件
https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-unix-7_0_1.sh
rpm 安装包
https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-linux-7_0_1.rpm
deb 包
https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-linux-7_0_1.deb
建议.sh 可执行文件安装 还可以控制软件安装位置(一般选择默认) 。。算是交互式安装了。使用rpm 安装包安装后。个人不知道默认的安装包在哪里。。。
下载.sh 文件到 系统。我的是 CentOS7。嫌wget慢就先下载 然后ftp方式传到CentOS系统
wget https://inmon.com/products/sFlowTrend/downloads/sFlowTrend-unix-7_0_1.sh
下载完成后 为该文件赋予可执行权限 。执行该可执行文件需要是root权限用户
su
chmod u+x sFlowTrend-unix-7_0_1.sh
./sFlowTrend-unix-7_0_1.sh
然后就是安装,这个基本上应该都没问题,都选默认的就好。
安装完成
CentOS7 下 也是以一个 守护进程运行(服务)。 服务名sflowtrend-server
systemctl status sflowtrend-server
这个服务启动停止 等和正常 CentOS下服务一致。。注 服务名是sflowtrend-server 不要少了 -server
然后 防火墙 关闭 或者 开放 udp/6343 端口 即可。
由于是在VMWare 的CentOS7虚拟机下安装的。IP是192.168.199.91
访问
http://192.168.199.91:8087
安装inMon SFlow-RT
安装前 要先安装JDK 环境1.8以上
https://sflow-rt.com/download.php
两个安装一个就好。。。同时安装会出出错,因为都要监听6343 端口。。。
个人也不清楚 哪个更好用 更适合作为监控。(毕竟也是初学)
SFlow-RT 的安装更简单。。。解压后 执行可执行文件即可
wget https://inmon.com/products/sFlow-RT/sflow-rt.tar.gz
tar -xvzf sflow-rt.tar.gz
./sflow-rt/start.sh
这个应该没有 windows版。。。。
执行 start.sh 这个可执行文件。。。
是一个前台执行的 应用。。。访问 IP:8008 端口即可查看分析的结果
清楚地看到 Agents 为0 目前没有 交换机发来sflow 消息。。。
真正要查看 状态 是在 Apps 里面。。。 可以把 apps 当作 不同角度的分析工具 而初始安装的 只是一个展示界面。。
安装apps也很简单
./sflow-rt/get-app.sh sflow-rt 加上要安装的应用名即可
https://sflow-rt.com/download.php
如 基本上必备的 flow-trend 和 browse-metrics
./sflow-rt/get-app.sh sflow-rt flow-trend
./sflow-rt/get-app.sh sflow-rt browse-metrics
安装完成再重新执行
./sflow-rt/start.sh
再次访问 IP:8008 查看apps
然后就可以 点击 应用 筛选 查询了。。。
至于API 可自行查看 应该是 使用 网络请求 获取 json 格式的数据。
SFlow-RT 运行时一直占据前台。。。让人有点 不爽。可以 使用nodup 命令使其在后台执行。 其它前台显示命令也适用 会把命令返回结果 放到 执行该命令时的 同级 目录下 的 nohup.out
nohup ./sflow-rt/start.sh &
可以看到 命令在后台执行。且nohuo.out 记录了程序返回内容。
使用命令
jobs -l
查看 后台运行 任务 及 进程号。。。可通过 进程号 如11500 杀死该进程
kill -9 11500
设置 OVS 的Bridge 设置sFlow
发送给sFlow Collector 工具的 消息 都是一样的。区别只是不同的 工具 从不同的角度分析 生成不同的 可是图表而已。。。
暂定已经安装好了 OVS 设置了网桥等。。。
查看当前 sflow 配置
ovs-vsctl list sflow
为空
进行sflow 配置
COLLECTOR_IP=192.168.199.153
COLLECTOR_PORT=6343
AGENT_IP=ens33
HEADER_BYTES=128
SAMPLING_N=64
POLLING_SECS=10
ovs-vsctl -- --id=@sflow create sflow agent=${AGENT_IP} target=\"${COLLECTOR_IP}:${COLLECTOR_PORT}\" header=${HEADER_BYTES} sampling=${SAMPLING_N} polling=${POLLING_SECS} -- set bridge cloudbr0 sflow=@sflow
前面设置 环境变量 后面设置 sflow。。。
待sFlow Agent配置好后,会生成一个UUID。
(1) agent:虚拟机的网卡。使用该网卡将sflow信息发送到COLLECTOR_IP的COLLECTOR_PORT。如果设置了错误的网卡名,还是会选择一个网卡将信息发送出去。
(2) target:sFlow Collector的IP,默认端口6343;(宿主机Windows安装了sflowtrend所以设置为192.168.199.153,不同主机就是不同的ip)
(3) bridge:需要开启sflow的网桥
一行命令执行就是
ovs-vsctl -- --id=@sflow create sFlow agent=ens33 target=\"192.168.199.153:6343\" header=128 sampling=64 polling=1 -- set bridge cloudbr0 sflow=@sflow
这时 在 浏览器访问 192.168.199.153:8087 应该可以查看到数据了
这个sflowtrend 显示的是ifindex 想要和设置的端口名 对应 还需自己查看 如ifindex 15 对应 端口 ens33
当然 也许是自己没找到对应的图表。。。
ovs-vsctl list sflow
[root@agent ~]# ovs-vsctl list sflow
_uuid : 3adf5553-cb3b-443d-9890-d6168333c0e3
agent : "ens33"
external_ids : {}
header : 128
polling : 1
sampling : 64
targets : ["192.168.199.153:6343"]
[root@agent ~]# ovs-vsctl list interface
_uuid : 543afdf0-ff40-4d27-b54b-08328aabd84f
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : full
error : []
external_ids : {attached-mac="1e:00:11:00:00:42", iface-id="dc24ec05-a0c5-4ef3-88b6-2c598f6ee7e5", iface-status=active, vm-id="62b759d3-a9f8-46e4-9cd6-798302e92018"}
ifindex : 15
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 1
link_speed : 10000000
link_state : up
lldp : {}
mac : []
mac_in_use : "fe:00:11:00:00:42"
mtu : 1500
name : "vnet6"
ofport : 6
ofport_request : []
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=11029464, tx_dropped=0, tx_errors=0, tx_packets=38818}
status : {driver_name=tun, driver_version="1.6", firmware_version=""}
type : ""
sflow 设置 删除
根据 uuid 删除 sflow
ovs-vsctl remove bridge cloudbr0 sflow uuid
如
ovs-vsctl remove bridge cloudbr0 sflow 3adf5553-cb3b-443d-9890-d6168333c0e3
使用sFlow测试监控 CloudStack。
使用 sflow-trend
使用sflow-rt