iftop을 사용하여 서버 네트워크의 전송 및 수신 속도를 모니터링하고 싶습니다. 이것은 나에게 효과적입니다.
iftop -t -s 1 -n -N | grep 'Total send and receive rate: ' | awk '{print $8}'
결과에는 아래와 같이 Mac 주소와 IP가 포함됩니다.
interface: eth0
IP address is: 192.254.78.90
MAC address is: 00:26:9e:b5:81:de
14.7Mb
마지막 줄만 필요합니다. 그래서 스크립트를 만들었습니다.
iftop -t -s 1 -n -N >> result.txt
cat result.txt | grep 'Total send and receive rate: ' | awk '{print $8}'
명령줄에서 사용하면 제대로 작동하고 마지막 줄인 "14.7Mb"만 표시됩니다. 반면 .sh 스크립트로 사용하면 여전히 MAC 주소와 IP가 포함됩니다.
문제를 해결하는 방법을 아시나요? sed를 사용하는 더 나은 솔루션이 있어야 한다고 생각합니까?
답변1
- 인터페이스 이름과 MAC 주소는 stderr에 인쇄되므로 grep으로 연결되지 않습니다. stderr를 /dev/null로 리디렉션하여 제거할 수 있습니다.
iftop -t -s 1 -n -N 2>/dev/null
- awk를 사용하고 있으므로 grep도 필요하지 않습니다.
iftop -t -s 1 -n -N 2>/dev/null | awk '/send and receive/ {print $8}'
답변2
한 번만 호출하면 iftop은 마지막 40초 동안의 트래픽을 수신합니다. 옵션 없이 호출하면 종료된 기간을 수신합니다. 런타임에 수행된 폴링은 시간 경과에 따른 서버의 실제 사용량을 반영하지 않습니다.
iftop을 사용하여 트래픽을 스니핑하는 것도 시스템에 부담을 줍니다. 이는 네트워크 데이터가 pcap API에 공급되고 처리되어야 하기 때문에 트래픽 크기에 따라 다소 중요할 수 있습니다.
네트워크 문제 디버깅, 특히 특정 전송 스트림에 주의를 기울이는 데는 훌륭한 도구이지만 장기간 사용하기에는 훌륭한 도구가 아닙니다.
트래픽이나 대역폭의 경우 보다 전문적인 환경에서는 SNMP를 사용하거나 더 간단한 환경에서는 ifconfig를 사용하는 것이 좋습니다.
좀 더 자세히 설명하고 싶었는데, 생각보다 트래픽과 속도 모니터링에 대해 자세히 다룬 이전 글을 발견했습니다.
링크 속도를 결정하기 위해 ifconfig 출력을 어떻게 처리합니까?
마지막 세부 사항을 이해하신다면 iftop에 반대할 것은 없습니다.
1) 스크립트를 실행할 때마다(5분마다?) 순간 속도를 측정하면 됩니다.
2) 고부하 시스템에는 적합하지 않습니다.