2016-03-08 32 views
0

我想從我的Raspberry Pi(運行Raspbian)中獲取CPU,內存和帶寬利用率等數據,並在網頁上顯示這些數據(或儘可能接近生活)。將硬件用於網頁

我知道這些圖可以使用jQuery製作,但我如何將數據提供給遠?

我到目前爲止的唯一想法是每隔幾秒運行一次「top」命令,將其保存爲一個.txt文件,去掉不必要的信息並讓jQuery將.txt文件輪詢爲數據點?這甚至有可能嗎?有沒有更簡單的方法來做這樣的事情?

在此先感謝您的幫助。

+0

使用jQuery來調用它運行這些命令,並將其回覆給客戶端腳本覆盆子Web服務器腳本(如PHP)。 –

回答

1

首先值得一提的是,有一些現成的工具可以提供這種圖形功能。我有一個名爲munin的軟件的良好體驗。但是默認情況下它可能會太慢(每5分鐘更新一次)。不知道你是否可以加快速度。

你可以這樣做,因爲你建議用top輸出寫入文件並解析,或者你可以從小PHP/Python webapp的頁面處理程序中調用top,解析其輸出並按需將其作爲JSON提供。

編寫一些東西來獲取使用庫的度量標準並將結果作爲JSON按需提供可能比解析top輸出更簡單。

在python中,我做了這樣的事情,用PsutilFlask。如果您更喜歡另一種語言,必須有類似的庫。

下面提供cpu使用統計信息的示例代碼片段。您可以使用相同的程序來提供包含HTML + javascript的HTML頁面來呈現圖形。獨立使用Flask內置網絡服務器。缺點是你需要在Pi上安裝兩個依賴項。

import time 

import psutil 
import flask 
app = flask.Flask(__name__) 

@app.route("/stats/cpu.json") 
def stats_cpu(): 
    cpu_time_pct = psutil.cpu_times_percent() 
    d = { 
     'time': time.time(), 
     'user': cpu_time_pct.user, 
     'system': cpu_time_pct.system, 
     'idle': cpu_time_pct.idle, 
    } 
    # flask.jsonify returns the dict as json with the 
    # proper content-type header 
    return flask.jsonify(**d) 

if __name__=="__main__": 
    app.run(debug=True) 

要讓它運行,保存到一個文件中(比如example.py)和外殼:

$ apt-get install python-pip 
$ pip install flask psutil 
$ python example.py 

然後參觀localhost:5000/stats/cpu.json。您可以使用jquery定期獲取並更新您的圖表。響應應該是這個樣子:

{ 
    "idle": 89.1, 
    "system": 3.9, 
    "time": 1457475545.336526, 
    "user": 6.9 
}