本文摘自PHP中文网,作者齐天大圣,侵删。
最近客户的网站出现卡慢现象,通过检查,出问题是原因是因为带宽吃紧,所以让客户将服务器带宽从原本的2M增加到4M的带宽,网站速度一下就提升了。那么如何监控网卡流量情况,linux有许多命令可以查看。比如iftop,sar等等。这里,我想写一个监控网卡流量情况的脚本。统计每一分钟的网卡流量情况,输入到指定文件中。可以使用sar -n DEV 1 59查看一分钟内网卡平均流量。
此脚本的核心是获取1分钟内网卡的平均流量。我们来看看sar这个命令会输出哪些信息吧。
1 2 3 4 5 6 7 8 9 10 11 12 | # 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的行。
1 2 | # 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列信息;
1 2 | # sar -n DEV 1 4 | grep -i average | grep eth0 | awk '{print $5*8"\t"$6*8}'
28.32 182.96
|
至此,我们已经获取到了1分钟内eth0网卡的平均输入输出流量了,该脚本的核心问题解决了。下面贴出完整的代码:
阅读剩余部分
相关阅读 >>
shell关系运算符介绍
linux默认使用的shell是什么
linux shell中的curl和wget如何使用代理ip的方法教程
linux中的shell命令如何使用
有关linux中shell内置判断语句的介绍
shell判断字符串为空的方法
如何让shell访问正在运行的docker容器
如何在shell脚本中以隐藏字符的形式输入密码
shell编程实战之监控磁盘分区的使用率
总结shell中的特殊字符
更多相关阅读请进入《shell》频道 >>
转载请注明出处:木庄网络博客 » shell编程实战之监控网卡流量