Grazie allo IoT e al basso costo della connettività mobile possiamo acquisire grosse quantità di dati eterogenei. Un possibile modo per organizzarli nell'ottica del monitoraggio e dell'analisi proattiva è l'uso dei Time Series Database come InfuxDB. Durante la sessione varrà proposta un'architettura in alta affidabilità, utilizzando il servizio AKS di Microsoft Azure, per implementare un sistema di raccolta e classificazione dati in serie temporali con console di visualizzazione, pronti per alimentare altri servizi presenti nell'infrastruttura Microsoft Azure. Una parte del talk sarà dedicata a mostrare l'uso dell'architettura proposta.
2. #azuresatpn
About me
• Ho esperienza quasi trentennale di sistemi e
software in ambito scientifico e della pubblica
amministrazione;
• Dal 2000 gestisco sistemi in ottica Remoting;
• Da 5 anni studio la cultura DevOps ed ho appreso
che ogni problema ha soluzione ma la tecnologia
non risolve tutti i problemi.
3. #azuresatpn
What, How, Why?
• Siamo immersi in un mondo di eventi che subiamo passivamente;
• Misurare nel tempo gli eventi ci fa ricavare un modello empirico;
• La serie temporale prodotta dalla misura degli eventi ha esigenze e
richiede prestazioni a cui i sistemi DBMS non aderiscono pienamente;
• L’analisi delle serie temporali con approcci classici spesso costringe a
reinventare la ruota sprecando energie e risorse;
• L’esplosione dello IoT ha aumentato esponenzialmente le serie
temporali da cui acquisire metriche;
• L’approccio monolitico su VM è POF nella gestione delle serie
temporali.
4. #azuresatpn
Kubernetes
• Sistema OpenSource di
orchestrazione e gestione di
containers
• Nato in Google a metà del 2014 ora
è sviluppato dal CNCF
• Definizione dichiarativa degli stati da
raggiungere
• Basato su chiamate API è disposibile
su molte piattaforme Cloud e
On Premise
5. #azuresatpn
Servizio AKS
• Cluster Kubernetes ottimizzato per
l’infrastruttura Microsoft Azure
• Associabile ai servizi ACS e ARS di
esecuzione di containers e storage
d’immagini di containers
• Dispiegabile, scalabile e distribuibile
geograficamente attraverso le
interfacce Microsoft Azure
6. #azuresatpn
Stack TICK
• Costruito da: InfluxDB, Telegraf,
Kapacitor e Chronograf;
• Accumula, agisce e analizza su Serie
Temporali;
• Spesso Chronograf è sostituito o
affiancato da Grafana per il display
dei dati in InfluxDB.
7. #azuresatpn
InfluxDB
• Operazioni di write&query via
HTTP APIs con supporto in AA;
• Plugins d’interfaccia verso altre
fonti dati (Es. Graphite,
OpenTSDB);
• Linguaggio d’interrogazione
SQL-like;
• Continuous queries per
aggregazione dati.
Mainflux microservice architecture
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
8. #azuresatpn
Telegraf
• Collettore d’informazioni
• Vari formati di: Input, Output,
Aggregation e Processing disponibili
ed estendibili via plugins;
• Batch size write e write failure cache
dimensionabili;
• Configurabile l’uso della timebase:
locale o quella di InfluxDB.
9. #azuresatpn
Kapacitor
• Processing e Analisi di Serie Temporali;
• Gestione allarmi e anomalie;
• Trasformazioni dei dati tramite InfluxQL;
• Storing delle trasformazioni in InfluxDB;
• Integrato con Slack, PagerDuty, Sensu…
stream
// Select just the cpu measurement
// from our example database.
|from()
.measurement('cpu’)
|alert()
.crit(lambda: int("usage_idle") < 70)
// Whenever we get an
// alert write it to a file.
.log('/tmp/alerts.log')
stream
|from()
.measurement('cpu’)
|alert()
// Compare values to running mean
// and standard deviation
.crit(lambda: sigma("usage_idle") > 3)
.log('/tmp/alerts.log')
11. #azuresatpn
Grafana
• Visualizzazione, Annotazione e Analisi di Serie Temporali e logs;
• Creazione di template per dashboard parametrizzate e riutilizzabili;
• Confronto fra i dati da fonti differenti;
• Esplorazione/Esportazione delle metriche acquisite;
• Editor grafico e testuale per sviluppare query di estrazione per
visualizzazione dati e alerting, integrato con Slack, PagerDuty, Sensu..
• Più di 30 fonti dati Opensource e commerciali supportate tra cui:
InfluxDB, Prometheus, Elastic, Zabbix, GoogleBigQuery, JSON, Oracle.
13. #azuresatpn
Descrizione infrastruttura 2/3
• TS-POD: raccoglie dai sensori esterni (schede Arduino e RaspberryPi) i
valori classificati secondo una serie di tag di cui, gli obbligatori sono:
• Serial del sensore; Latitudine, Longitudine, Altezza sul livello del mare; Serial
acquisitore; Unità di misura.
• Alert-POD:
• Business logic per le segnalazioni di condizioni anomale individuate nei dati
presenti nel TS-POD;
• Generazione di serie temporali derivate dai dati acquisiti risultato di analisi
matematico-statistiche dei valori registrati.
14. #azuresatpn
Descrizione infrastruttura 3/3
• View&Management-POD:
• Visualizzazione e analisi delle serie temporali acquisite e generate presenti in
TS-POD;
• Ambiente di sviluppo delle continuous queries utilizzate nell’infrastruttura;
• Ambiente di management e accounting dell’infrastruttura.
• I canali da e per il mondo esterno sono in HTTPS.
• Sfruttando l’orchestrazione di Kubernetes per garantire la resilienza
dei POD i Persistent Volume saranno allocati su Azure File associati
all’Azure Storage Account utilizzabile da AKS.
16. #azuresatpn
Recap
• Kubernetes assicura la ripartenza dei pod in caso di crash;
• Gli storage persistenti assicurano il mantenimento dei dati accumulati;
• Integrazione con architetture a microservizi;
• Soluzioni documentate da Influxdata per altri Public Cloud;
• Soluzione distribuibile geograficamente;
• Alternativa opensource al cluster InfluxDB su licenza Cloud/Enterprise;
• Da sperimentare e valutare lo scaling del TS-POD
17. #azuresatpn
Applicazioni
Oltre le classiche applicazioni in produzione per acquisire e analizzare
telemetrie veicolate attraverso internet, attraverso la disponibilità di
fondi e donazioni il progetto può costruire delle telemetrie accessibili
pubblicamente raccogliendo i dati messi a disposizione liberamente da
enti non governativi come: