2009-07-13 2 views
2

Я ищу способ программирования (будь то вызов библиотеки или отдельная программа) для мониторинга прямого IP-трафика в Linux. Мне не нужны итоги, я хочу использовать текущую полосу пропускания. Я ищу инструмент, подобный (но не графический) для монитора сетевого трафика OS X's istat.Ставки в реальном времени RX и TX в linux

Я довольно уверен, что что-то подобное существует, но я не уверен, где искать, и я бы предпочел не изобретать колесо.

Простой контроль сокета? Или мне нужна утилита, которая обрабатывает много накладных расходов для меня?

ответ

9

У нас есть счетчики байтов и пакетов в/Proc/нетто/разработчика, так:

import time 

last={} 

def diff(col): return counters[col] - last[iface][col] 

while True: 
    print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent") 
    for line in open('/proc/net/dev').readlines()[2:]: 
    iface, counters = line.split(':') 
    counters = map(int,counters.split()) 
    if iface in last: 
     print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9)) 

    last[iface] = counters 

    time.sleep(1) 
+3

И на ядре 2.6 есть более подробная статистика каждого устройства в '/ sys/class/net/$ dev/statistics' – ephemient

+0

отлично! большое спасибо – helloandre

1

Я использую небольшую программу, известную как dstat Она сочетает в себе много «стат», как функций в 1 быстрый выход. Очень настраиваемый. Это даст вам текущую пропускную способность сети, а также многое другое.

В linux программа netstat даст вам сырую статистику сети. Вы можете сами проанализировать эти статистические данные для создания значимого результата (что и делает dstat).

0

Вы можете получить пропускную способность сети и пакет рассчитывает, используя следующую dstat команды:

dstat -n --net-packets -f 10 

Или, если вы хотите контролировать определенные интерфейсы, вы можете сделать:

dstat -n --net-packets -N eth0,wlan0 10 

Если вы предпочитаете более обычные bits per second мощность:

dstat -n --net-packets -N eth0,wlan0 --bits 10 

Это даст вам 10-секундные средние значения. Если вы хотите, чтобы написать это для пост-обработки, вы можете экспортировать в файл CSV с помощью:

dstat -n --net-packets -N eth0,wlan0 --bits 10 

Dstat кораблей с много плагинов соотнести эти показатели с другими метриками в вашей системе, и это дает вам гибкость для добавления собственных (python) плагинов, если вам нужно настроить данные или контролировать что-то конкретное для вашей среды.

Смежные вопросы