百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> shell编程实战之监控网卡流量-linux运维
分享文章到:

shell编程实战之监控网卡流量-linux运维

发布时间:10/01 来源:未知 浏览: 关键词:
比来客户的网站涌现卡慢现象,通过检查,出题目是缘由是由于带宽吃紧,所以让客户将办事器带宽从原本的2M添加到4M的带宽,网站速度一下就提拔了。 比来客户的网站涌现卡慢现象,通过检查,出题目是缘由是由于带宽吃紧,所以让客户将办事器带宽从原本的2M添加到4M的带宽,网站速度一下就提拔了。那么怎样监控网卡流量状况,linux有很多下令可以查看。比方iftop,sar等等。

这里,我想写一个监控网卡流量状况的足本。统计每一分钟的网卡流量状况,输入到指定文件中。可以运用sar -n DEV 1 59查看一分钟内网卡均匀流量。

此足本的中心是猎取1分钟内网卡的均匀流量。我们来看看sar这个下令会导出哪些信息吧。

# sar -n DEV 1 59
Linux 4.18.0-80.11.2.el8_0.x86_64 (30gk.com)  09/20/2020  _x86_64_ (4 CPU)
11:25:25 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
11:25:26 AM      eth0     16.00     11.00      1.26      1.38      0.00      0.00      0.00      0.00
11:25:26 AM        lo     12.00     12.00      4.77      4.77      0.00      0.00      0.00      0.00
11:25:26 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
11:25:27 AM      eth0     18.00     23.00      2.98     28.85      0.00      0.00      0.00      0.00
11:25:27 AM        lo     12.00     12.00      4.77      4.77      0.00      0.00      0.00      0.00
……
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:         eth0      8.56     12.59      1.07      7.05      0.00      0.00      0.00      0.00
Average:           lo     12.20     12.20      4.79      4.79      0.00      0.00      0.00      0.00

我们需要的信息是AVERAGE: eth0这行。rxkb/s表示网卡每秒承受的字节数,rxkb/s表示每秒发送的字节数,他们的单位都是kb。我们待会要将它转换为kbit/s,由于日常习习用kbit/s表示网络带宽运用状况。

然后,我们需要过滤其他不需要的行,运用grep下令可以轻松办到。第一grep过滤掉所有不含Average的行,然后过滤不含eth0的行。

# sar -n DEV 1 59 | grep -i average | grep eth0
Average:         eth0      7.44      7.00      0.83      6.72      0.00      0.00      0.00      0.00

然后,运用awk下令过滤掉不需要的列,我们只需要第5列以及第6列信息;

# sar -n DEV 1 4 | grep -i average | grep eth0 | awk '{print $5*8"\t"$6*8}'
28.32 182.96

至此,我们已经猎取到了1分钟内eth0网卡的均匀输入导出流量了,该足本的中心题目解决了。下面贴出完备的代码:

#!/bin/bash
# 监控网卡流量,并导出到日志文件中

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:~/bin
export LANG=en

# 日志寄存名目
PATH_DIR=/root/netdatas/`date +%F`
# 日志文件名称
FILE_NAME=`date +%F`.log
# 监控的网卡名称
NET_NAME=eth0
 
[ -d PATH_DIR ] || mkdir -p $PATH_DIR
 
while [ 1 ];do
    date +"%H:%M" >> $PATH_DIR/$FILE_NAME
 
    netinfo=$(sar -n DEV 1 59 | grep -i average | grep $NET_NAME | \
        awk '{print $5*8":"$6*8}' )
    echo  "$NET_NAME input:$(echo $netinfo | cut -d: -f1)kbit/s" >> $PATH_DIR/$FILE_NAME
    echo "$NET_NAME output:$(echo $netinfo | cut -d: -f2)kbit/s" >> $PATH_DIR/$FILE_NAME
    echo '#########################' >> $PATH_DIR/$FILE_NAME
done

该足本的编写非常的简略,搞分明了怎样猎取1分钟内网卡流量就搞定了90%了。不外有点要注意,我办事器上的网卡名称为eth0,你的可能名称和我不同,所以要是你要运用该足本,需要将所有的eth0改为你办事器上的网卡名。固然,可以将网卡名称当成参数来通报给足本,这里为了图利便就没有这么做了(主要缘由是不想对输入的网卡名做校验)。

来验证下此足本可否能正常运转。施行该足本后,查看下日志里的内容如下:

12:15
eth0 input:16.64kbit/s
eth0 output:16.72kbit/s
#########################
12:16
eth0 input:16.72kbit/s
eth0 output:17.12kbit/s
#########################
12:17
eth0 input:17.92kbit/s
eth0 output:17.6kbit/s

可以看到,此足本能正常运转。

以上就是shell编程实战之监控网卡流量的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有154人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板