Статистика сети по Linux

Хорошее предложение из хинду документа alt-install: Вместо chroot /your/chroot/path /bin/bash выполненный

chroot /your/chroot/path /bin/env -i TERM=$TERM /bin/bash

env -i уберет среду (chroot-среда, вероятно, отличается или даже является несовместимой), в то время как TERM=$TERM сделает chrootредактор bash зная о родителе TERM переменная ($TERM расширен родительской оболочкой прежде, чем выполнить команды).

2
10.12.2017, 03:54
3 ответа

Да, /proc/net/dev - обычный способ. Вы также можете использовать файлы в /sys/class/net/eth0/statistics, если вам так проще.

Или же moreutils содержит ifdata сценарий, который получит эту информацию для вас. Например, чтобы распечатать количество байт в (-sib) и вылет (-sob), вы сделаете:

$ ifdata -sib -sob eth0
48115944587
71982675360

-вывод в том же порядке, что и флаги, так что это 48... в и 71... вылет.

Он также будет вычислять битов / сек за последнюю секунду для вас (делая сна 1 , в основном):

$ ifdata -bips -bops eth0
1148
1755
4
27.01.2020, 21:54

В прошлом я использовал вывод ifconfig , чтобы собрать статистику по пропускной способности и записать ее в графит. Каждый интерфейс имеет счетчик 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, возможно, вы сможете почерпнуть из этого какое-то вдохновение.

.
1
27.01.2020, 21:54

Вы знакомы с sar?

Вы можете попробовать sar -n ВСЕ , чтобы получить всю возможную сетевую статистику, или если вам нужна статистика rx и tx для каждого сетевого устройства, каждую секунду - попробуйте следующее:

 sar -n DEV 1

Для 5-секундной средней величины rx и tx для eth0 (например) сделайте:

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

Теги

Похожие вопросы