最近有个需求,需要对用户互联网出口流量进行实时监控,测试了很多流量分析工具,比如iftop,ntopng等,目前测试ntopng是较好用的
ntopng分为社区版、专业版和企业版,社区版免费,其他版本均需要购买,具体功能比较可以上官网看介绍ntopng官网介绍,基本监控功能社区版已经能满足了
一、准备
ntopng本身是支持通过nprobe代理进行流量搜集和转换成flow格式的数据转发到ntopng,但nprobe是收费工具,所以本次是通过ntopng直接对镜像流量抓包分析,需要准备以下的东西
1、一台服务器
由于本次测试分析的流量带宽峰值接近2G,所以配置了一台物理服务器
2、在交换机配置端口镜像,将需要进行流量分析的端口镜像到指定的镜像口
3、交换机镜像口接入服务器,服务器除了镜像接口还需要另外接入管理口,和镜像口分开
二、ntopng安装
物理机操作系统-麒麟v10 cpu-海光
1、修改yum源,建议用centos8的源,测试过用7的源会有问题
wget -O /etc/yum.repos.d/centos8.repo http://mirrors.aliyun.com/repo/Centos-8.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/centos8.repo
wget -O /etc/yum.repos.d/epel-8.repo http://mirrors.aliyun.com/repo/epel-archive-8.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/epel-8.repo
wget -O /etc/yum.repos.d/ntop.repo http://packages.ntop.org/centos-stable/ntop.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/ntop.repo
2、安装ntopng
yum install -y pfring-dkms n2disk nprobe ntopng cento
三、修改默认配置,启动ntopng
ntopng默认配置文件在/etc/ntopng/ntopng.conf
里面有各种参数,大家可以通过ntopng -h命令查看
以下是配置举例
vi /etc/ntopng/ntopng.conf
#配置镜像流量接入的网卡
-i=p2p1
#配置本地网段
-m=192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
#配置最大流数量,建议根据实际网络情况配置
-X=5000000
#配置最大主机数量,建议根据实际网络情况配置
-x=200000
#配置https服务端口,默认只开http端口3000
-W=3001
#配置社区版启动
--community
#配置cpu亲和性,在大流量时有必要,一般不需要
-g=30-35
-y=78-83
启动
systemctl start ntopng
登陆
http://IP:3000
默认账户/密码是admin/admin
修改参数
进入接口页面,选择镜像接口,勾选镜像流量,在基于MAC地址的流量方向输入out方向设备mac地址,因为我们现在是镜像模式,无法识别流量in/out方向,这里 流向到配置的 MAC 地址的流量被视为出口流量,比如我们是抓的是核心交换机上联出口路由器这个端口的镜像,核心交换机和出口路由器之间是三层互联,那么我们就输入路由侧三层IP互联IP的mac地址。
下面动态流量分解项目可以选择vlanID,这个选项选择后会生成以vlanID命名的虚拟接口,可以单独查看每个vlan的流量,这个选项可以在镜像vlan trunk接口时选用。
常用功能
主机页面
可以查看每台主机的吞吐量,可以筛选接收/发送的流量,可以查看不同本地网络(-m参数设置)的流量状态
流页面
可以查看活动流的状态,源地址,目的地址,吞吐量等,单台主机页面可以点击查看每台主机的所有流状态
其他功能大家可以慢慢摸索
到这里ntopng已经可以正常使用了,但监控中发现流量显示不准,出口带宽实时在1.4G以上,但ntopng里面只显示400-600M左右,用top看cpu状态,发现cpu特定核占用99%,查看官网资料,ntopng抓包是每个接口绑定一个cpu核的,如果接口流量太高,cpu核处理不过来,就会导致丢包,所以流量显示不准,这个问题官方也提供了解决方案,在下一章讨论。