Linux 서버는 eth0에서 NIC I/O AVG를 계산합니다.

Linux 서버는 eth0에서 NIC I/O AVG를 계산합니다.

Linux 서버(예: 10GIG 인터페이스)에서 특정 시간 범위에 대해 eth0에 대한 NIC I/O AVG를 계산하려고 합니다... 확인하려면 로드 테스트 중에 한 시간 동안 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를 사용하여 1시간 동안 AVG NIC I/O Util을 얻을 수 있는 공식이 있습니까?

어떤 아이디어나 제안이라도 대단히 감사하겠습니다...

감사해요

답변1

저는 NIC I/O를 계산하기 위해 10 GIG bond0 인터페이스를 사용하고 있습니다. ($5+$6)/***100000001G 인터페이스는 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

관련 정보