![Linux 服务器计算 eth0 上的 NIC I/O AVG](https://linux22.com/image/116674/Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%A1%E7%AE%97%20eth0%20%E4%B8%8A%E7%9A%84%20NIC%20I%2FO%20AVG.png)
我正在尝试计算 Linux 服务器上特定时间范围内 eth0 的 NIC I/O AVG(例如 10GIG 接口)...我需要在负载测试期间一小时的 NIC I/O AVG 来检查以查看对 NIC 及其利用率的影响......我也无法安装实用程序/工具,例如 - nload- iptraf、iftop vnstat 等......但如果知道我可以使用任何好的实用程序......
最好我喜欢运行一个脚本来捕获数据然后解析它......即自动化
我在下面尝试过
sar -n Dev 1 1 确实看到了 rxKb/S 和 txKB/s,但无法确定一小时内的平均 NIC I/O 利用率
尝试使用 netstat -i 时相同
有没有一个公式可以让我使用 sar -n 或 netstat -i 来获取一个小时的 AVG NIC I/O Util......
任何想法或建议将不胜感激......
谢谢
答案1
我正在使用 10 GIG bond0 接口来计算 NIC I/O。($5+$6)/***10000000
1G接口可以改成10GIG或者1000000;他们是知识库(decimals***)*100
下面是计算操作系统统计信息的脚本,即 CPU-RAM-DISK-IO(sda)-NIC-IO(bond0):
#!/bin/bash
echo "Please check Path for log folders"
if [ $# -eq 0 ]
then
echo "Please input time in sec for how long you need to capture the OS Stats:
Ex: os_stats.sh 3600 --> for one hour capture"
else
now=$(date +"%b_%d_%Y-%H:%M")
tail -f /var/log/messages > /tmp/ahsan/messagesd_$now.log 2>&1 &
tailpid1=$!
tail -f /var/log/messages > /tmp/ahsan/messages_$now.log 2>&1 &
tailpid2=$!
sar -u 1 $1 > cpu_raw.log &
sar -r 1 $1 > ram_raw.log &
iostat -x 1 $1 > diskIO_raw.log &
sar -n DEV 1 $1 > nicIO_raw.log &
sleep 5
#****************CPU STATS********************
awk '{print $1,$3,$4,$6,$9}' cpu_raw.log > cpu_parse
cat cpu_parse | head -n -1 |tail -n +4 > cpu_tmp
echo "############ CPU STATS ###########" > os_stats.txt
awk '{ total += $3 } END { print "CPU AVG % = "total/NR }' cpu_tmp >> os_stats.txt
sort -k3 -n cpu_tmp |tail -1 | awk '{print "CPU Max % = " $3}' >> os_stats.txt
rm -rf cpu_tmp cpu_parse
#************MEM STATS*****
echo "############ RAM STATS ###########" >> os_stats.txt
cat ram_raw.log | head -n -1 |tail -n +4 > ram_tmp
awk '{ total += $5 } END { print "RAM AVG % = "total/NR }' ram_tmp >>
os_stats.txt
sort -k3 -n ram_tmp |tail -1 | awk '{print "RAM Max % = " $5}' >> os_stats.txt
rm -rf ram_tmp
#************DISK I/O Stats *****
echo "############ DISK I/O STATS ###########" >> os_stats.txt
cat diskIO_raw.log | grep sda |awk '{print $12}' > diskio_tmp
awk '{ total += $1 } END { print "Disk I/O AVG % = "total/NR }' diskio_tmp >> os_stats.txt
sort -k3 -n diskio_tmp | tail -1 | awk '{print "Disk I/O Max % = " $1}' >> os_stats.txt
rm -rf diskio_tmp
#*********NIC I/O Stats******
echo "############ NIC I/O STATS ###########" >> os_stats.txt
cat nicIO_raw.log | awk '/Average/ && /bond0/' |awk '{print "NIC I/O Avg = " sprintf ("%.8f",(($5+$6)/10000000)*100)}' >> os_stats.txt
mv os_stats.txt os_stats_$now.txt
rm -rf os_stats.txt
kill $tailpid1
kill $tailpid2
fi