要使Raspberry Pi托管一个带有刻度盘的网页,该刻度盘实时指示CPU温度,CPU负载等,该怎么办?


27

我擅长Unix命令和脚本编写,但是我几乎没有网络经验。我有一个脚本,可以捕获我感兴趣的指标,例如CPU负载或系统温度,并每10秒更新一次文件。我想将iPad指向由Raspberry Pi托管的本地网站,该网站具有实时更新的数据图形表示。

在设置简单的Apache Web服务器之前,我已经工作过,并且可以编写HTML和JavaScript。除此之外,我迷路了,需要有人指出我正确的方向。


2
您的问题有点太广泛了。您是否需要一些快速而肮脏的解决方案,还是想编写一个甚至可以在小型Linux嵌入式系统上使用的最小程序?
巴西尔·斯塔林凯维奇

我最初是在寻找快速而又肮脏的东西,但是下面提到的非常好的工具的可用性现在使我更加感兴趣。
jake9115 '17

仅供参考,还有Raspberry Pi堆栈:raspberrypi.stackexchange.com
Todd Wilcox

github.com/firehol/netdata很容易设置。没有测试它在皮虽然
明镜Hochstapler

Answers:


30

我在我的Raspberry Pi 3 上将GrafanaInfluxDB一起使用。它们相对容易设置并相互连接。它们甚至可以在Raspberry Pi的Docker容器中很好地工作。

在生成所有更新时,我会将所有更新流式传输到InfluxDB中。然后,Grafana完成所有图形化工作,以漂亮的视觉格式显示它们。我为屏幕较小的旧iPad设计了一个简单的仪表板。

听起来确实很多安装和开销,但确实看起来很漂亮。

在此处输入图片说明


很酷。您是否碰巧有Grafana监视器的屏幕截图?只是好奇。
jake9115

对。可能没有多大意义,这是一团糟。贴在我的计算机上,因此大小不像在iPad上那样。
0xACE

看起来很棒,等不及要设置我的!我有一个16节点的橙色pi服务器,这将是完美的选择。再次感谢。
jake9115 '17

(不在主题上)我看到了您的另一个问题,即将树莓派连接成看起来像一块具有多个核心的单板。正要发送一条消息,说我在工作的大学的HPC家伙已经建立了一个系统,但随后想起他正在使用“ Grid Engine之子”,这并没有满足您的要求。
0xACE

1
@ 0xACE认为它在pi上是一个非常糟糕的主意,因为它还会向Apache服务器发送请求垃圾邮件。另外10表示发问者当前的设置,而他们想要更快的东西。
jdwolf

9

为了在Raspberry上建立一个轻量级且非常简单的Web监控仪表板以设置(和扩展)监控页面,您需要使用RPi Monitor

它带有一些默认值,配置主要是编辑几个简单的文本文件。我轻松配置了它,以从DTH21添加湿度图。

img_link img_link2


2
我感谢您的贡献;当我在这里学习设置一些更复杂的解决方案时,这似乎非常轻巧,也许是一个不错的图形选择。谢谢!
jake9115 '17

别客气。我已经在家里使用了将近3年。看到相关的问题electronics.stackexchange.com/questions/236530/...
瑞˚F里贝罗

6

对于Web上的实时应用程序,最好的工具是WebSocket。通常,这些是在应用程序服务器而不是Web服务器中实现的,但是Apache提供了一种代理websocket的方法。这可以轻松地提供每秒或亚秒级的更新。

在应用程序服务器上使用哪个库取决于要使用的Web平台,但是例如,Socket.IO是Node.js的流行库。

在客户端,您可以像这样建立连接:

socket = new WebSocket("ws://website.net:8282");

socket.addEventListener('message', function (event) {
    var message = event.data;
    // Code to update site
});

在服务器端使用基本WebSocket库的Node.js:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8282 });
wss.on('connection', function connection(ws) {
  dataOnUpdateEvent(function(event) {
    var data = event.getdata();
    var message = parseData(data);
    ws.send(message);
  });
});

1
谢谢你的主意。这非常有用,但是看起来很多基础工作,这是可以理解的。
jake9115

2
@ jake9115嘿,您的问题似乎暗示您对自己制作此应用程序感兴趣。
jdwolf

2
老实说,我确实打算自己编写代码,但是grafana看起来太光滑了,以至于我不想在这上面重新发明轮子。不过谢谢!
jake9115 '17

4

您还可以查看Node-RED https://nodered.org

这是我建立的仪表板 在此处输入图片说明


我会仔细研究,感谢您的贡献。
jake9115 '17

1
我在设置中使用Node-Red,但历史数据仅在您的实例正在运行时才有效。就是说,如果您重新部署(或断电)任何历史测量值都不会保留,那么您的图表将全部从零开始。该功能促使我开始实际登录InfluxDB。
0xACE

啊,很高兴知道。历史数据对我很重要。我真的很喜欢您的图表甚至包含其他基于网络的信息,例如比特币价格。那超出了我最初的范围,但现在不再。
jake9115 '17

是的,该示例中甚至包含了我在iOS App Store上拥有的应用程序中的数据(适用于Boy Scouts进行良好转弯),该数据将其数据存储到Google Fire Base中。那是底部的地图。我使用节点红色从火力基地中提取数据并将其推入大量涌入,因此并非全部都是涌入和格拉法纳。
0xACE

2

我使用phpSysInfo监视所有Linux服务器/计算机,我非常喜欢它的简单性。这些设置也很容易理解,您可以设置自己的刷新率。


1

如果要使用C或C ++进行编码,则可以使用一些HTTP服务器库(如libonionWt)来编码您的专用HTTP服务器(也许使用sqlite来存储数据库)。然后,您应该很好地了解HTTP协议(包括HTTP cookieHTTP标头)和HTML5

您可能要使用AjaxWebSocket技术(libonion&Wt支持WebSocket,Ajax给出由客户端浏览器中运行的JavaScript代码启动的普通HTTP请求)。您可以将HTML5 画布和/或SVG用于图形。您可能会发现一些 有用的HTML5 Web框架。他们大多数使用Javascript,DOM,HTML5等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.