Linux의 네트워크 통계

Linux의 네트워크 통계

Linux 시스템에서 네트워크 통계를 수집하기 위한 작은 스크립트를 작성하려고 합니다. 내가 할 수 있는 방법이 있나요?

내가 원하는 것은 현재 네트워크 처리량에 대한 실시간 통계입니다. 나는 몇 권의 책을 읽었고 이것이 /proc/net/dev유용하다는 것을 알았습니다. 내용을 분석하여 현재 네트워크 속도를 파악할 수 있었습니다. 이것이 실현 가능하고 신뢰할 수 있는 접근 방식입니까? itraf 및 iftop과 같은 패키지는 속도 향상 및 감속을 어떻게 계산합니까?

답변1

예, /proc/net/dev이것이 일반적인 방법입니다. /sys/class/net/eth0/statistics더 쉬운 경우 거기에서 파일을 사용할 수도 있습니다.

또는,더 많은 유틸리티ifdata이 정보를 얻을 수 있는 스크립트가 포함되어 있습니다 . 예를 들어, print( -sib)하고 -sob()의 바이트 수를 출력하려면 다음을 수행합니다.

$ ifdata -sib -sob eth0
48115944587
71982675360

출력 순서는 플래그 순서와 동일합니다(예: 48... 입력 및 71... 출력).

또한 마지막 비트/초도 계산합니다( sleep 1기본적으로 다음을 수행하여).

$ ifdata -bips -bops eth0
1148
1755

답변2

당신은 그것에 익숙합니까 sar?

가능한 모든 네트워크 통계를 얻으려고 시도하거나 sar -n ALL각 네트워크 장치에 대해 초당 rx 및 tx 통계를 원하는 경우 다음을 시도하십시오.

 sar -n DEV 1

예를 들어 eth0에 대한 rx 및 tx의 5초 평균을 얻으려면 다음을 수행합니다.

sar -n DEV 1 5 | grep -i eth0 | tail -n1 | awk '{print $5, $6}'

답변3

과거에는 출력을 사용하여 ifconfig처리량 통계를 수집하고 이를 Graphite에 기록했습니다. 각 인터페이스에는 처리량을 바이트 단위로 계산하는 RX 및 TX 카운터가 있습니다. ifconfig를 주기적으로 폴링하고 현재 값과 이전 값의 차이를 화면이나 파일에 쓰는 스크립트를 작성하면 됩니다.

eth0      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:d3  
          inet addr:10.100.3.26  Bcast:10.100.3.31  Mask:255.255.255.248
          inet6 addr: fe80::20c:29ff:fecf:12d3/64 Scope:Link
          inet6 addr: 2001:xxx:7927:3::26/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:160523475 errors:0 dropped:921 overruns:0 frame:0
          TX packets:106097000 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2912933876 (2.7 GiB)  TX bytes:3734512667 (3.4 GiB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:dd  
          inet addr:10.100.0.1  Bcast:10.100.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fecf:12dd/64 Scope:Link
          inet6 addr: 2001:xxx:7927::1/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:92858590 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142257564 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1849495529 (1.7 GiB)  TX bytes:389856127 (371.7 MiB)

eth2      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:e7  
          inet addr:10.100.4.1  Bcast:10.100.4.255  Mask:255.255.255.0
          inet6 addr: 2001:xxx:7927:4::1/64 Scope:Global
          inet6 addr: fe80::20c:29ff:fecf:12e7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10951337 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16448597 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1437098401 (1.3 GiB)  TX bytes:1634328371 (1.5 GiB)

스크립트는 다음 위치에 있습니다.https://gist.github.com/MerijntjeTak/1cddb08d191045e66a9c, 어쩌면 그것으로부터 영감을 얻을 수도 있습니다.

관련 정보