我想從我的Raspberry Pi(運行Raspbian)中獲取CPU,內存和帶寬利用率等數據,並在網頁上顯示這些數據(或儘可能接近生活)。將硬件用於網頁
我知道這些圖可以使用jQuery製作,但我如何將數據提供給遠?
我到目前爲止的唯一想法是每隔幾秒運行一次「top」命令,將其保存爲一個.txt文件,去掉不必要的信息並讓jQuery將.txt文件輪詢爲數據點?這甚至有可能嗎?有沒有更簡單的方法來做這樣的事情?
在此先感謝您的幫助。
我想從我的Raspberry Pi(運行Raspbian)中獲取CPU,內存和帶寬利用率等數據,並在網頁上顯示這些數據(或儘可能接近生活)。將硬件用於網頁
我知道這些圖可以使用jQuery製作,但我如何將數據提供給遠?
我到目前爲止的唯一想法是每隔幾秒運行一次「top」命令,將其保存爲一個.txt文件,去掉不必要的信息並讓jQuery將.txt文件輪詢爲數據點?這甚至有可能嗎?有沒有更簡單的方法來做這樣的事情?
在此先感謝您的幫助。
首先值得一提的是,有一些現成的工具可以提供這種圖形功能。我有一個名爲munin的軟件的良好體驗。但是默認情況下它可能會太慢(每5分鐘更新一次)。不知道你是否可以加快速度。
你可以這樣做,因爲你建議用top
輸出寫入文件並解析,或者你可以從小PHP/Python webapp的頁面處理程序中調用top
,解析其輸出並按需將其作爲JSON提供。
編寫一些東西來獲取使用庫的度量標準並將結果作爲JSON按需提供可能比解析top
輸出更簡單。
在python中,我做了這樣的事情,用Psutil和Flask。如果您更喜歡另一種語言,必須有類似的庫。
下面提供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
}
使用jQuery來調用它運行這些命令,並將其回覆給客戶端腳本覆盆子Web服務器腳本(如PHP)。 –