Surveillance de l'utilisation du réseau sous Linux à l'aide de Java


J'ai un serveur multimédia basé sur Java qui diffuse du contenu à la fois sur une page Web et sur un appareil Android. Il est configuré de sorte qu'il peut être utilisé par plusieurs utilisateurs et également parler avec d'autres serveurs et partager des médias avec eux.

J'aimerais pouvoir surveiller le trafic réseau total (kb/s) via un service sur mon serveur multimédia, afin que je puisse le voir via mon appareil Android ou ma page Web sans avoir à regarder mon serveur.

Existe-t-il un moyen facile d'obtenir ces informations avec Java? Une sorte de linux fichier de ressources? J'ai regardé netstat et quelques autres de googler et ils ne semblent pas me livrer ce que je veux de manière évidente. J'ai juste besoin du trafic total, je n'ai pas besoin de savoir qui me parle.

Merci pour toute aide. :)

Pps: J'utilise la version la plus récente d'openSUSE, mais j'ai aussi des versions de travail sur Fedora (la plus récente).

Author: Crandy, 2012-05-06

1 answers

Vous pouvez lire les statistiques du réseau à partir de /proc/net/dev see voir http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html pour plus de détails.

, Vous verrez quelque chose comme ceci:

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

Vous devrez donc ouvrir le fichier, lire chaque ligne et vérifier la première colonne pour trouver les interfaces qui vous intéressent, puis extraire les octets et/ou paquets reçus et/ou envoyés. Si vous gardez une trace du temps entre les lectures, vous pouvez calculer le taux de ceci:

Laissez
b0 = octets à temps t0
b1 = octets à temps t1, quelques temps plus tard que t0.

Ensuite, vous pouvez calculer le taux, r, comme ceci:
r = (b1 - b0) / (t1 - t0)

 1
Author: Adam Liss, 2012-05-06 15:44:57