Raspberry Pi 호스트에 CPU 온도, CPU로드 등을 나타내는 다이얼이있는 웹 페이지를 실시간으로 제공하려면 어떻게해야합니까?


27

유닉스 명령과 스크립팅에 능숙하지만 웹 경험이 거의 없습니다. CPU로드 또는 시스템 온도와 같은 관심있는 메트릭을 잡고 10 초마다 파일을 업데이트하는 스크립트가 있습니다. 이 데이터의 실시간 업데이트 그래픽 표현이있는 Raspberry Pi에서 호스팅하는 로컬 웹 사이트를 iPad로 지정하고 싶습니다.

간단한 Apache 웹 서버를 설정하기 전에 작업했으며 HTML 및 JavaScript를 작성할 수 있습니다. 게다가, 나는 길을 잃었고 올바른 방향으로 나를 가리킬 누군가가 필요합니다.


2
귀하의 질문이 너무 광범위합니다. 빠르고 더러운 솔루션을 원하십니까? 아니면 작은 Linux 임베디드 시스템에도 적합한 최소 프로그램을 코딩하고 싶습니까?
Basile Starynkevitch

처음에는 빠르고 더러운 것을 찾고 있었지만 아래에 언급 된 매우 훌륭한 도구를 사용할 수있게되면 더 관심을 갖게되었습니다.
jake9115

참고로 Raspberry Pi Stack도 있습니다 : raspberrypi.stackexchange.com
Todd Wilcox

github.com/firehol/netdata 는 설정이 매우 쉽습니다. 그래도 파이에서 테스트하지 않았습니다
Der Hochstapler

답변:


30

내 Raspberry Pi 3에서 이를 위해 GrafanaInfluxDB 를 함께 사용 합니다. 상대적으로 설치 및 연결이 비교적 쉽습니다. 그들은 심지어 Raspberry Pi의 Docker 컨테이너 에서도 잘 작동합니다 .

모든 업데이트가 생성 될 때 InfluxDB로 스트리밍합니다. 그런 다음 Grafana는 멋진 그래픽 형식으로 표시하는 모든 그래픽 작업을 수행합니다. 화면이 작은 기존 iPad 전용의 간단한 대시 보드를 설계했습니다.

설치 및 오버 헤드가 많은 것처럼 들리지만 확실히 예쁘게 보입니다.

여기에 이미지 설명을 입력하십시오


매우 시원합니다. Grafana 모니터의 스크린 샷이 있습니까? 그냥 궁금해서
jake9115

예. 이치에 맞지 않을 수도 있습니다. 이것은 잘못된 것입니다. 내 컴퓨터에 꽂혀 iPad에 표시되는 크기가 아닙니다.
0xACE

굉장해, 내 설정을 기다릴 수 없어! 16 노드 오렌지 파이 서버가 있습니다. 다시 감사합니다.
jake9115

(오프 토픽) Pi를 여러 코어가있는 단일 보드처럼 보이는 것에 결합시키는 것에 대한 다른 질문을 보았습니다. 내가 일하고있는 대학의 HPC 직원이 시스템을 설정했다는 메모를 보내려고했지만 그가 원하는 것을하지 않는 "그리드 엔진의 아들"을 사용하고 있다는 것을 기억했습니다.
0xACE

1
@ 0xACE 파이를 고려할 때 요청으로 아파치 서버를 스팸으로 보내는 것은 나쁜 생각입니다. 또한 10은 요청자에게 현재 설정을 나타내는 반면 더 빠른 것을 원합니다.
jdwolf

9

Raspberry에서 모니터링 페이지를 설정 (및 확장) 할 수있는 가볍고 매우 쉬운 웹 모니터링 대시 보드를 갖기 위해 RPi 모니터 를 가지고 있습니다 .

일부 기본값이 제공되며 구성은 대부분 간단한 텍스트 파일을 편집합니다. DTH21에서 습도 그래프를 쉽게 추가하도록 구성했습니다.

img_link img_link2


2
기여해 주셔서 감사합니다. 여기에 더 관련있는 솔루션을 설정하는 방법을 배우는 동안 이것은 정말 가벼우 며 멋진 그래프 선택입니다. 감사!
jake9115

천만에요. 집에서 거의 3 년 동안 사용했습니다. 관련 질문을 참조하십시오 electronics.stackexchange.com/questions/236530/…
Rui F Ribeiro

6

웹상의 실시간 응용 프로그램의 경우 가장 좋은 도구는 WebSocket 입니다. 일반적으로 이들은 웹 서버가 아닌 응용 프로그램 서버에서 구현되지만 Apache는 웹 소켓을 프록시하는 방법을 제공합니다. 이는 초당 또는 1 초 미만의 업데이트를 쉽게 제공 할 수 있습니다.

응용 프로그램 서버에서 사용하는 라이브러리는 사용하려는 웹 플랫폼에 따라 다르지만 예를 들어 Node.js에 널리 사용되는 라이브러리는 Socket.IO입니다.

클라이언트 측에서 다음과 같이 연결을 설정할 수 있습니다.

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
솔직히 나는 그것을 직접 코딩하는 것을 목표로 삼았지만, 그 라바나는 너무 매끄럽게 보이므로 바퀴를 재발 명하고 싶지 않습니다. 그래도 고마워!
jake9115

4

Node-RED를 볼 수도 있습니다 https://nodered.org Raspbian에 재고가 있습니다.

여기 내가 만든 대시 보드가 있습니다 여기에 이미지 설명을 입력하십시오


기여해 주셔서 감사합니다.
jake9115

1
설정과 함께 Node-Red를 사용하지만 기록 데이터는 인스턴스가 실행되는 동안에 만 유효합니다. 즉, 이전 측정치 중 어느 것도 유지하지 않거나 전력을 잃는 경우 차트는 모두 처음부터 다시 시작됩니다. 이 기능으로 인해 실제로 InfluxDB에 로그인을 시작하게되었습니다.
0xACE

아, 반가워요. 역사적 자료는 나에게 중요하다. 비트 코인 가격과 같은 다른 웹 기반 정보를 그래프에 통합하는 방법이 정말 마음에 듭니다. 그것은 나의 초기 범위를 넘어서지 만 더 이상은 아닙니다.
jake9115

예, 그 예는 iOS 앱 스토어에있는 앱의 데이터 (Boy Scouts가 좋은 턴을하고 있음)를 포함하여 데이터를 Google Fire Base에 저장합니다. 그것은 맨 아래에있는지도입니다. 나는 노드 레드를 사용하여 소방서에서 데이터를 가져 와서 유입으로 밀어 넣습니다. 따라서 모든 유입 및 그래프가 아닙니다.
0xACE

2

나는 phpSysInfo 를 사용 하여 모든 Linux 서버 / 컴퓨터를 모니터링하며 그것이 얼마나 간단한지를 정말로 좋아합니다. 설정도 이해하기 쉬우 며 새로 고침 빈도를 설정할 수 있습니다.


1

C 또는 C ++로 코딩하려는 경우 libonion 또는 Wt 와 같은 일부 HTTP 서버 라이브러리 를 사용하여 특수한 HTTP 서버를 코딩 할 수 있습니다 (아마도 데이터베이스에 sqlite 를 사용함 ). 그런 다음 HTTP 프로토콜 ( HTTP 쿠키HTTP 헤더 포함 )과 HTML5를 잘 이해해야합니다 .

AjaxWebSocket 기술 을 사용할 수 있습니다 (WebSocket은 libonion & Wt에서 지원되며 Ajax는 클라이언트 브라우저에서 실행되는 JavaScript 코드로 시작된 일반 HTTP 요청을 제공함). 그래픽에 HTML5 캔버스 및 / 또는 SVG 를 사용할 수 있습니다 . 일부 HTML5 웹 프레임 워크가 유용 할 수 있습니다 . 대부분 자바 스크립트, DOM, HTML5 등을 사용하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.