簡體   English   中英

使用Java在Linux中進行網絡使用情況監控

[英]Network Usage Monitoring in Linux using Java

我有一個基於Java的媒體服務器,它將內容流式傳輸到網頁和Android設備。 它的設置使它可以被多個用戶使用,並與其他服務器通信並與它們共享媒體。

我希望能夠通過我的媒體服務器中的服務監控總網絡流量(kb / s),這樣我就可以通過我的Android設備或網頁看到它,而無需查看我的服務器。

有沒有一種簡單的方法來獲取Java的這些信息? 某種linux資源文件? 我從google搜索過netstat和其他幾個人,他們似乎沒有以明顯的方式向我提供我想要的東西。 我只需要總流量,我不需要知道誰在和我說話。

謝謝你的幫助。 :)

pps:我正在使用最新版本的OpenSUSE,但也有Fedora上的工作版本(最新版本)。

您可以從/proc/net/dev讀取網絡統計信息 - 有關詳細信息,請參閱http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html

你會看到這樣的事情:

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

因此,您需要打開文件,讀取每一行並檢查第一列以找到您關心的接口,然后提取接收和/或發送的字節和/或數據包。 如果您跟蹤讀取之間的時間,您可以像這樣計算速率:


b 0 =時間t 0字節
b 1 =時間t 1處的字節,比t 0晚一些時間。

然后你可以計算出率r ,像這樣:
r = (b 1 - b 0 ) / (t 1 - t 0 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM