Мониторинг использования сети в Linux с использованием Java

У меня есть медиа-сервер на основе Java, который транслирует контент как на веб-страницу, так и на устройство Android. Он настроен таким образом, чтобы его могли использовать несколько пользователей, а также общаться с другими серверами и обмениваться ими с ними.

Я хотел бы иметь возможность отслеживать общий сетевой трафик (кбит / с) через службу на моем медиасервере, поэтому я могу видеть его через свое устройство Android или веб-страницу, не обращая внимания на мой сервер.

Есть ли простой способ получить эту информацию с помощью Java? Какой-то файл ресурсов linux? Я смотрел на netstat и несколько других на предмет поиска в Google, и они, кажется, не доставляют мне то, что я хочу, очевидным образом. Мне просто нужен общий трафик, мне не нужно знать, кто со мной разговаривает.

Спасибо за любую помощь. :)

pps: я использую самую последнюю версию OpenSUSE, но у меня также есть рабочие версии для Fedora (самая последняя).

Ответы на вопрос(1)

Решение Вопроса

/proc/net/dev -- видетьhttp: //linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.htm для подробностей.

Вы увидите что-то вроде этого:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:    2504      30    0    0    0     0          0         0     2504      30    0    0    0     0       0          0
  eth0:33769785 2548318    0    0    0     0          0         0  4146854  215379    0    0    0     0       0          0
  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

Так что вам нужно открыть файл, прочитать каждую строку и проверить первый столбец, чтобы найти интересующий вас интерфейс, а затем извлечь полученные и / или отправленные байты и / или пакеты. Если вы отслеживаете время между чтениями, вы можете рассчитать скорость следующим образом:

Позволят
b0 = байт в момент времениt0
b1 = байт в момент времениt1, немного позже, чемt0.

Затем вы можете рассчитать ставку,r, так
r = (b1 - b0) / (t1 - t0)

 Crandy06 мая 2012 г., 18:20
Большой. Сейчас все сделано с XML-файлами, поэтому я просто позабочусь об обновлении XML-файла. Спасибо за совет
 Crandy06 мая 2012 г., 17:43
Так ты говоришь, что я мог бы прочитать число байтов там, а затем прочитать его снова через несколько секунд, и разница / время будет моей скоростью? Хм, это интересный способ сделать это. Я полагаю, это будет не слишком сложно.
 Adam Liss06 мая 2012 г., 17:50
В точку. Я обновил свой ответ, пока вы спрашивали. : -)

Ваш ответ на вопрос