일정 기간 동안 특정 원격 컴퓨터와 내 시스템의 대역폭 사용량을 캡처하고 싶습니다. iftop
명령은 확실히 옵션이며 네트워크 사용량을 제공하고 필터링 기능이 있지만 들어오는 대역폭 사용량과 나가는 대역폭 사용량을 얻으려면 텍스트 출력을 구문 분석해야 합니다.
sudo iftop -t -s 2 -f "src host <remote_machine_ip>"
내 현재 계획은 위의 명령을 루프에서 실행하고 매번 텍스트 출력을 구문 분석하고 csv 파일에 추가하는 것입니다 (current_time, transmitted, received)
.
더 나은 옵션이 있습니까?
답변1
네트워크, CPU, 메모리 및 기타 리소스 데이터를 주기적으로 수집하고 나중에 사용할 수 있도록 저장하는 "sar" 도구 사용을 고려해 보셨나요? 나는 대부분의 배포판이 간섭을 피하고 너무 많은 데이터를 저장하기 위해 투표 사이에 10분의 지연을 가지고 있다고 생각합니다.
내 RHEL 시스템에 /usr/bin/sar 명령을 제공하는 "sysstat" RPM을 설치하고 데이터를 수집하기 위해 몇 분 정도 기다렸습니다. 그러면 다음과 같은 데이터를 볼 수 있습니다.
PS /etc/cron.d/sysstat에서 crontab 파일을 조정하여 폴링 빈도를 재구성할 수 있습니다.
PPS SAR 데이터는 기본적으로 30일 동안 보관됩니다. "-f /var/log/sa/saXY" 매개변수를 사용하여 이전 데이터를 보는 데 사용할 파일을 sar에 알릴 수 있습니다. 여기서 XY는 관심 있는 두 자리 날짜(예: 12)입니다.
[jcall@nas ~]$ sar -n DEV | grep enp4s0
12:10:01 AM enp4s0 4.86 2.33 1.06 0.25 0.00 0.00 1.11
12:20:01 AM enp4s0 4.70 2.32 1.05 0.26 0.00 0.00 1.07
12:30:01 AM enp4s0 4.73 2.25 1.06 0.27 0.00 0.00 1.01
12:40:01 AM enp4s0 5.32 2.76 1.49 0.39 0.00 0.00 0.97
12:50:01 AM enp4s0 4.57 2.22 1.01 0.25 0.00 0.00 0.90
01:00:01 AM enp4s0 4.71 2.32 1.02 0.27 0.00 0.00 1.08
01:10:01 AM enp4s0 4.60 2.29 1.03 0.28 0.00 0.00 0.97
01:20:01 AM enp4s0 4.63 2.21 1.04 0.26 0.00 0.00 0.94
01:30:01 AM enp4s0 4.68 2.18 1.07 0.25 0.00 0.00 0.97
01:40:01 AM enp4s0 4.70 2.20 1.08 0.25 0.00 0.00 0.99
01:50:01 AM enp4s0 10.28 2.72 1.43 0.35 0.00 0.00 0.88
02:00:01 AM enp4s0 4.69 2.29 1.02 0.27 0.00 0.00 1.05
02:10:01 AM enp4s0 4.80 2.26 1.08 0.25 0.00 0.00 1.03
02:20:01 AM enp4s0 4.77 2.26 1.08 0.26 0.00 0.00 0.96
02:30:01 AM enp4s0 4.96 2.42 1.09 0.33 0.00 0.00 0.97
02:40:01 AM enp4s0 4.99 2.37 1.06 0.32 0.00 0.00 1.08
Average: enp4s0 5.13 2.34 1.10 0.28 0.00 0.00 1.00