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, 어쩌면 그것으로부터 영감을 얻을 수도 있습니다.