linux监控网络流量
Ⅰ linux流量监控的几个方法
看你用哪个linux系统啊,建议你用专业的linux系统,比如WFilter NGF系统,基于Linux,专门做上网行为管理和流控技术。流量监控只是其中的小功能。
Ⅱ 如何在Linux下统计高速网络中的流量
一般的linux下可以通过
/proc/net/dev
文件对某个或多个网络接口进行流量监控
通过定时读取该文件中的数据然后通过计算就可以算是当前是否有数据流通
并且流通的速度
该文件内部也记录了该网络接口所有流通的流量数量和数据包的数量
包括上传与下载的数量
下面是一个利用该文件的简单代码
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<ncurses.h>
#include<pthread.h>
#include<locale.h>
typedefstruct
{
unsignedlonglongintup_bytes;
unsignedlonglongintdn_bytes;
unsignedlonglongintup_packs;
unsignedlonglongintdn_packs;
}SP;
intget_traffic(SP*sp,char*interface)
{
char*buf=NULL;
size_tlen;
FILE*fp;
if((fp=fopen("/proc/net/dev","rb"))==NULL)
{
perror("Read/proc/net/devError!");
return-1;
}
while(!feof(fp))
{
getline(&buf,&len,fp);
if(buf==NULL)
return-1;
if(strstr(buf,interface))
break;
free(buf);
buf=NULL;
}
if(feof(fp))
{
printf("CanNotFind%sInterface! ",interface);
fclose(fp);
return-1;
}
sscanf(buf,"%*[^:]:%lld%lld%*s%*s%*s%*s%*s%*s%lld%lld",
&sp->dn_bytes,&sp->dn_packs,
&sp->up_bytes,&sp->up_packs);
free(buf);
fclose(fp);
return0;
}
void_quit(WINDOW*win)
{
while(getchar()!='q')
continue;
delwin(win);
echo();
endwin();
exit(0);
}
voidhelp(void)
{
printf("Use: ");
printf("netsp[interface] ");
exit(-1);
}
intmain(intargc,char**argv)
{
unsignedlongup_times=0;
unsignedlongdn_times=0;
doubleup_bytes;
doubledn_bytes;
doubleup_sp;
doubledn_sp;
SPstart,end,temp;
WINDOW*win;
intx,y;
pthread_tthread;
if(argc!=2)
help();
setlocale(LC_ALL,"");
if(get_traffic(&start,argv[1])==-1)
return-1;
initscr();
curs_set(0);
noecho();
if(has_colors())
{
start_color();
use_default_colors();
init_pair(1,COLOR_CYAN,-1);
init_pair(2,COLOR_GREEN,-1);
}
getmaxyx(stdscr,y,x);
win=newwin(12,30,y/2-10/2,x/2-30/2);
refresh();
wattron(win,COLOR_PAIR(1));
box(win,0,0);
wattroff(win,COLOR_PAIR(1));
wrefresh(win);
pthread_create(&thread,NULL,(void*)_quit,win);
while(1)
{
get_traffic(&temp,argv[1]);
usleep(500000);
//sleep(1);
++up_times;
++dn_times;
get_traffic(&end,argv[1]);
if(up_times%10==0)
{
up_times=1;
start.up_bytes=temp.up_bytes;
}
if(dn_times%10==0)
{
dn_times=1;
start.dn_bytes=temp.dn_bytes;
}
if(end.up_bytes-temp.up_bytes==0)
{
up_times=1;
temp.dn_bytes=start.dn_bytes;
get_traffic(&start,argv[1]);
start.dn_bytes=temp.dn_bytes;
}
if(end.dn_bytes-temp.dn_bytes==0)
{
dn_times=1;
temp.up_bytes=start.up_bytes;
get_traffic(&start,argv[1]);
start.up_bytes=temp.up_bytes;
}
wattron(win,COLOR_PAIR(2));
up_bytes=(double)end.up_bytes/1024/1024;
dn_bytes=(double)end.dn_bytes/1024/1024;
if(up_bytes<1024)
mvwprintw(win,2,6,"已上传%.2fMB",up_bytes);
else
mvwprintw(win,2,6,"已上传%.2fGB",up_bytes/1024);
if(dn_bytes<1024)
mvwprintw(win,3,6,"已下载%.2fMB",dn_bytes);
else
mvwprintw(win,3,6,"已下载%.2fGB",dn_bytes/1024);
mvwprintw(win,5,6,"已上传包数量%ld",end.up_packs);
mvwprintw(win,6,6,"已下载包数量%ld",end.dn_packs);
up_sp=(double)(end.up_bytes-start.up_bytes)/up_times/1024*2;
dn_sp=(double)(end.dn_bytes-start.dn_bytes)/up_times/1024*2;
if(up_sp<1024)
mvwprintw(win,8,6,"上传速度%.2fkb/s",up_sp);
else
mvwprintw(win,8,6,"上传速度%.2fmb/s",up_sp/1024);
if(dn_sp<1024)
mvwprintw(win,9,6,"下载速度%.2fkb/s",dn_sp);
else
mvwprintw(win,9,6,"下载速度%.2fmb/s",dn_sp/1024);
wattroff(win,COLOR_PAIR(2));
wrefresh(win);
wclear(win);
wattron(win,COLOR_PAIR(1));
box(win,0,0);
wattroff(win,COLOR_PAIR(1));
}
return0;
}
Ⅲ 如何用指令查看linux的网卡吞吐量或最大网卡流量
linux查看网卡吞吐量和网卡流量用自带命令,iptraf查看。
1 命令行直接输入:iptraf(如果没有,使用yum install iptraf安装)
此外还有很多工具命令可以查看:
watch命令:
watch -n 1 "/sbin/ifconfig eth0 | grep bytes"。
Ⅳ linux查看网络流量命令
方法一、nload工具
查看参数帮助命令:
nload –help
-a :这个好像是全部数据的刷新时间周期,单位是秒,默认是300.
-i :进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-m :不显示流量图,只显示统计数据。
-o :出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-t :显示数据的刷新时间间隔,单位是毫秒,默认500。
-u :设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!
Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。
如只监控eth0命令: nload eth0
方法二、iftop工具
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX: 发送流量
RX: 接收流量
TOTAL:总流量
Cumm: 运行iftop到目前时间的总流量
peak: 流量峰值
rates: 分别表示过去 2s 10s 40s 的平均流量
2、iftop相关参数
常用的参数 《Linux就该这么学》
-i 设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n 使host信息默认直接都显示IP,如:# iftop -n
-N 使端口信息默认直接都显示端口号,如: # iftop -N
-F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b 使流量图形条默认就显示;
-f 这个暂时还不太会用,过滤计算包用的;
-P 使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用Shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
方法三、 ifstat
参数:
-a 监测能检测到的所有网络接口的状态信息
-z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的
-i 指定要监测的接口,后面跟网络接口名
时间:
-T 报告所有监测接口的全部带宽
-w 用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽
-W 如果内容比终端窗口的宽度还要宽就自动换行
-b 用kbits/s显示带宽而不是kbytes/s
Ⅳ 在LINUX下能用netstat 实时查看网络流量吗或者其他命令
用netstat -in看倒是可以,但是费事,不如iptraf看得方便直观
Ⅵ 如何测试linux的流量统计,带宽高峰,总流量
在本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。这些脚本支持Gb以上规模的高速网络接口,如果你对“汇聚型”的网络流量感兴趣的话,它们可统计每个网络接口上的流量。
脚本主要是基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net/<ethX>/statistics”输出。
Ⅶ Linux下查看网卡流量方法
Linux通过vnstat查看网卡流量
直接运行
yum install vnstat -y
安装完后测试:
适用于个别系统无法yum安装的查看网卡流量情况。
wget http://humdi.net/vnstat/vnstat-1.10.tar.gz
tar xvzf vnstat-1.10.tar.gz
cd vnstat-1.10
make && make install
Ⅷ linux如何查看流量
常用两个方法:直接命令查看、安装个iftop查看;
直接命令查看
watch cat /proc/net/dev
######################
安装epel以此解决找不到iftop
cd/usr/local/src
wgethttp://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
rpm-ivhepel-release-6-8.noarch.rpm
yumcleanall
yummakecacheⅨ suse linux系统怎样监控流量
如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。
CentOS上安装所需依赖包:
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
Debian上安装所需依赖包:
apt-get install flex byacc libpcap0.8 libncurses5
下载iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17