Dashboard e raccolta dati sensori e metriche, a portata di tutti | 1/2


Informatica / venerdì, Febbraio 7th, 2020

L’informazione è la merce più preziosa ai giorni nostri.
L’informazione permette scelte decisionali ottimali. Permette di salvare vite, crea nuovi posti di lavorio, nuove specializzazioni, ed un infinità di altre fondamentali cose che non riguardano l’informatica.

I dati, hanno una caratteristica, crescono a dismisura e vanno archiviati.

In questo tutorial, prendiamo esempio, di aver progettato un macchinario, un casa domotica o quello che preferite.

I valori dei sensori saranno vitali per la gestione e magari la sicurezza. Pensa ad un sensore di incendio, un avviso di blocco della produzione, o a qualsiasi altra cosa necessiti di monitoraggio.

Obbiettivo

L’idea è semplice, prendere i dati da molti dispositivi indipendenti, archiviarli in un database Influxdb, creare dei grafici e magari degli allert usando Chronograf.

I modi sono molteplici, ma ho scelto l’uso di InfluxDB, perché :

  • è un database basato sulle serie temporali
  • facile da usare e ben documentato, con librerie per molti linguaggi
  • pensato per l’ iot
  • non ha dipendenze
  • gestisce grossi volumi di dati rapidi per l’analisi in realtime
  • è un database NoSql
  • Chronograf permette di creare grafici e gestire i database in modo semplice
  • è integrato con telegraf, l’agente di raccolta dati

Installazione

Partiamo dall’ installazione del nostro database InfluxDb

Partiamo dal sito influxdata , non è necessario registrarci, una volta selezionato il influxdb, consiglio la versione stabile, ci verrano proposte le possibilità per OS X, Docker, Ubuntu Debian, Readhat & Centos, Mac OS X, Windows 64 bit, Arm e binari linux generici. Il tutto presentato in modo molto chiaro e semplice.

Nel mio caso uso Raspian Buster Lite per RaspberryPi, quindi esegui il comando proposto dal sito, attualmente è

Download

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Installazione

Precedendo col semplice APT, installiamo influxdb ed avviamolo come servizo

sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start

Configurazione

InfluxDb come molti software ha il suo file di configurazione editabile tramite

nano /etc/influxdb/influxdb.conf

inoltre possiamo leggere la configurazione attiva tramite

influxd config

Le istruzioni per gli altri sistemi le troviamo nella documentazione ufficiale.

Perfetto! Abbiamo il motore del database attivo e possiamo attualmente gestirlo tramite la pagina riga di comando.

Se non funziona, verifica di aver aperto la porta nel firewall del dispositivo in cui risiede InfluxDb.

Gestione Web

Per chi amasse una gestione web, InfluxData offre la sua interfaccia web, per manipolare i database e

creare delle dashboard web responsive molto interessanti e incredibilmente facili da gestire, tramite pochi click.

La soluzione si chiama Chronograf, attualmente la V.17

Tornando alla pagine di download scarichiamo l’ultima versione stabile installandola successivamente

Installazione

Come per il influxdb troveremo pronto il pacchetto installabile conf

apt install chronograf

L’installazione ci avvierà il relativo servizio, che sarà accessibile tramite il link

http://[indirizzo ip]:8888

Dopo la schermata di benvenuto, basterà impostare dei semplici dati, scegliendo un nome utente per il login protetto, il nome da dare alla connessione del database e il relativo link. E’ necessario perché potrei avere Chronograf nel Mac e mille connessioni a database sparsi per il mondo.

Il database telegraf si può lasciare cosi, come per le Retention policy.

La scelta successiva è inerente alle Dashboard, in base alle esigenze,

selezioniamo InfluxDb per proseguire.

Ultimo step, Kapacitor, lo installeremo dopo, o mettete i dati se siete partiti subito con

sudo apt install telegraf influxdb chronograf kapacitor

Chronograf

Chronograf ha un menu a sinitra con i seguenti scopi

  • Home: raccoglie alert e feed
  • Host List: una lista aggiornata degli host che hanno inviato dati
  • Explore: a mano che gli host invieranno dati, verrà popolata e potremmo con pochi click impostare la query e relativa modalità di visualizzazione, nel menù visualization. Tips. Se non vedi il valore, imposta Fill:none. Inizia a capire l’uso sfogliando _internal.monitor
  • Dashboard: l’elenco di tutte le dashboard, la prima Influxdb richiede telegraf, vediamolo dopo.
  • Allerting: gestione degli allert ed azioni tramite kapacitor
  • Log viewer: elenco log
  • InfluxDb Admin: possiamo creare e cancellare i database, utenti
  • Configuration: gestione dei collegamenti ai database vari

Se abbiamo già operativi gli agent telegraf, nella sezione dashboard, influxdb

cloniano il template, cliccando su Variables, ingranaggio, FROM system WITH KEY host, save. Avremmo a disposizione tutti i dati inviati da telegraf installato nei nostri server sparsi per il mondo. Ricordati di attivare il refresh.

Inviare dati

InfluxDb è supportato da vari client in vari linguaggi, dal più semplice curl a C++, Elixir, Erlang, Go, Haskell, Java, JavaScript/Node.js, Lisp, MatLab,.Net, Perl, PHP, Python, R, Ruby, Rust, Scala, Sensu, SNMP agent.

Che ne dici, sono sufficenti?

Che ne dici di partire con curl?

Dopo aver creato il database “sensori” in Chronograf o linea di comando prova ad inviare un dato

CURL

curl -i -XPOST 'http://localhost:8086/write?db=sensori' --data-binary 'misurazioni,host=raspberrygiardino,zona=vialetto temperatura=21'

Per gli altri linguaggi qui troverai ulteriori dettagli.

Questa era la base che ti consiglio di appofondire leggendo i file di configurazione vari e la documentazione ufficiale.

La guida proseguirà con la seconda parte.

Materiale

La guida è stata testata su

  • RaspberryPi 3B
  • Influxdb 1.7.9
  • Telegraf 1.13.0
  • Kapacitor 1.5.3
  • Ubuntu Server 18