Crea la tua prima dashboard - Grafana gestito da Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea la tua prima dashboard

Creazione di un pannello di controllo

Segui questi passaggi per creare una dashboard nella console Grafana.

Per creare la tua prima dashboard
  1. Scegli l'icona + nel pannello di sinistra, scegli Crea dashboard, quindi scegli Aggiungi nuovo pannello.

  2. Nella visualizzazione Nuova dashboard o pannello di modifica, scegli la scheda Query.

  3. Configura la tua query selezionando la fonte di dati da interrogare. Ad esempio, se hai aggiunto TestDB come fonte di dati, viene generata una dashboard di esempio chiamata dashboard Random Walk.

Introduzione alle serie temporali

Immagina di voler sapere come cambia la temperatura esterna nel corso della giornata. Una volta all'ora, controllavi il termometro e annotavi l'ora insieme alla temperatura attuale. Dopo un po', avresti qualcosa come i seguenti dati.

Orario Valore
09:00 24° C
10:00 26° C
11:00 27° C

Dati di temperatura come questi sono un esempio di serie temporale: una sequenza di misurazioni ordinate nel tempo. Ogni riga della tabella rappresenta una singola misurazione in un momento specifico.

Le tabelle sono utili quando si desidera identificare le singole misurazioni, ma possono rendere difficile la visione d'insieme. Una visualizzazione più comune per le serie temporali è il grafico, che invece colloca ogni misurazione lungo un asse temporale. Le rappresentazioni visive come il grafico facilitano l'individuazione di modelli e caratteristiche dei dati che altrimenti sarebbero difficili da vedere.

Altri esempi di serie temporali sono:

  • Utilizzo della CPU e della memoria

  • Dati del sensore

  • Indice del mercato azionario

Sebbene ciascuno di questi esempi sia una sequenza di misurazioni ordinate cronologicamente, condividono anche altri attributi:

  • I nuovi dati vengono aggiunti alla fine, a intervalli regolari, ad esempio ogni ora alle 09:00, 10:00, 11:00 e così via.

  • Le misurazioni vengono raramente aggiornate dopo l'aggiunta. Ad esempio, la temperatura di ieri non cambia.

Le serie temporali sono potenti. Ti aiutano a capire il passato permettendoti di analizzare lo stato del sistema in qualsiasi momento. Le serie temporali potrebbero indicare che il server si è bloccato pochi istanti dopo che lo spazio libero su disco è sceso a zero.

Le serie temporali possono anche aiutarti a prevedere il futuro scoprendo le tendenze nei tuoi dati. Ad esempio, se il numero di utenti registrati è aumentato mensilmente del 4% negli ultimi mesi, puoi prevedere l'ampiezza della tua base di utenti alla fine dell'anno.

Alcune serie temporali hanno schemi che si ripetono in un periodo noto. Ad esempio, la temperatura è in genere più alta durante il giorno, prima che scenda di notte. Identificando queste serie temporali periodiche o stagionali, è possibile fare previsioni affidabili sul periodo successivo. Se sapete che il carico del sistema raggiunge i picchi di carico ogni giorno intorno alle 18:00, potete aggiungere subito altre macchine.

Serie temporali aggregate

A seconda di ciò che stai misurando, i dati possono variare notevolmente. E se volessi confrontare periodi più lunghi dell'intervallo tra le misurazioni? Se misurassi la temperatura una volta ogni ora, otterresti 24 punti dati al giorno. Per confrontare la temperatura di agosto nel corso degli anni, dovresti combinare i dati 31 volte 24 in uno solo.

La combinazione di una raccolta di misurazioni si chiama aggregazione. Esistono diversi modi per aggregare i dati delle serie temporali. Ecco alcuni di quelli più comuni:

  • La media restituisce la somma di tutti i valori divisa per il numero totale di valori.

  • Min e Max restituiscono il valore più piccolo e più grande dell'insieme.

  • Sum restituisce la somma di tutti i valori dell'insieme.

  • Count restituisce il numero di valori nella raccolta.

Ad esempio, aggregando i dati in un mese, è possibile determinare che agosto 2017 è stato, in media, più caldo dell'anno precedente. Se vuoi vedere in quale mese si è verificata la temperatura più alta, confronteresti la temperatura massima di ogni mese.

Il modo in cui aggregare i dati delle serie temporali è una decisione importante e dipende dalla storia che vuoi raccontare con i tuoi dati. È comune utilizzare diverse aggregazioni per visualizzare le stesse serie temporali di dati in modi diversi.

Serie temporali e monitoraggio

Nel settore IT, i dati delle serie temporali vengono spesso raccolti per monitorare elementi come gli eventi dell'infrastruttura, dell'hardware o delle applicazioni. I dati delle serie temporali generati dalle macchine vengono generalmente raccolti a intervalli brevi, in modo da poter reagire a eventuali modifiche impreviste, subito dopo che si sono verificate. I dati si accumulano a un ritmo rapido, quindi è fondamentale disporre di un modo per archiviare e interrogare i dati in modo efficiente. Di conseguenza, i database ottimizzati per i dati delle serie temporali hanno registrato un aumento di popolarità negli ultimi anni.

Database di serie temporali

Un database di serie temporali (TSDB) è un database progettato esplicitamente per dati di serie temporali. Sebbene sia possibile utilizzare qualsiasi normale database per archiviare le misurazioni, un TSDB offre alcune utili ottimizzazioni.

I TSDB moderni traggono vantaggio dal fatto che le misurazioni vengono sempre e solo aggiunte e raramente aggiornate o rimosse. Ad esempio, i timestamp per ogni misurazione cambiano poco nel tempo, il che comporta l'archiviazione di dati ridondanti.

L'esempio seguente mostra una sequenza di timestamp Unix.

1572524345, 1572524375, 1572524404, 1572524434, 1572524464

Osservando questi timestamp, tutti iniziano con, il che porta a uno scarso 1572524 utilizzo dello spazio su disco. È invece possibile memorizzare ogni timestamp successivo come differenza, o delta, rispetto al primo, come illustrato nell'esempio seguente.

1572524345, +30, +29, +30, +30

Potresti anche fare un ulteriore passo avanti calcolando i delta di questi delta, come mostrato nell'esempio seguente.

1572524345, +30, -1, +1, +0

Se le misurazioni vengono effettuate a intervalli regolari, la maggior parte di esse sarà pari a 0. delta-of-deltas Grazie a ottimizzazioni come queste, i TSDB utilizzano drasticamente meno spazio rispetto ad altri database.

Un'altra caratteristica di un TSDB è la possibilità di filtrare le misurazioni utilizzando i tag. Ogni punto dati è etichettato con un tag che aggiunge informazioni di contesto, ad esempio dove è stata effettuata la misurazione.

Grafana supporta i seguenti TSDB:

  • Grafite

  • InfluxDB

  • Prometheus

    weather,location=us-midwest temperature=82 1465839830100400200 | -------------------- -------------- | | | | | | | | | +-----------+--------+-+---------+-+---------+ |measurement|,tag_set| |field_set| |timestamp| +-----------+--------+-+---------+-+---------+
Raccolta di dati sulle serie temporali

Ora che hai un posto dove archiviare le serie temporali, come raccogli effettivamente le misurazioni? Per raccogliere i dati delle serie temporali, in genere installi un raccoglitore sul dispositivo, sulla macchina o sull'istanza che desideri monitorare. Alcuni raccoglitori sono creati pensando a un database specifico e altri supportano diverse destinazioni di output.

Ecco alcuni esempi di collezionisti:

Un raccoglitore invia i dati a un database o consente al database di estrarre i dati dal raccoglitore. Ogni approccio presenta una serie di vantaggi e svantaggi.

Pro Contro
Push È più facile replicare i dati su più destinazioni. Il TSDB non ha alcun controllo sulla quantità di dati inviati.
Pull Maggiore controllo sulla quantità di dati acquisiti e sull'autenticità dei dati. I firewall, le VPN o i sistemi di bilanciamento del carico possono rendere difficile l'accesso agli agenti.

Poiché è inefficiente scrivere ogni misurazione nel database, i raccoglitori preaggregano i dati e li scrivono nel TSDB a intervalli regolari.

Dimensioni delle serie temporali

Con i dati delle serie temporali, i dati sono spesso un insieme di più serie temporali. Molte fonti di dati Grafana supportano questo tipo di dati.

Il caso comune consiste nell'emissione di una singola query per una misurazione con una o più proprietà aggiuntive come dimensioni. Ad esempio, è possibile interrogare una misurazione della temperatura insieme a una proprietà di posizione. In questo caso, vengono restituite più serie da quella singola query e ogni serie ha una posizione unica come dimensione.

Per identificare serie uniche all'interno di un insieme di serie temporali, Grafana memorizza le dimensioni nelle etichette.

Etichette

Ogni serie temporale in Grafana ha opzionalmente delle etichette. Le etichette sono un insieme di coppie chiave-valore per identificare le dimensioni. Le etichette di esempio sono {location=us} o. {country=us,state=ma,city=boston} All'interno di un insieme di serie temporali, la combinazione del nome e delle etichette identifica ogni serie. Ad esempio, temperature {country=us,state=ma,city=boston}.

Diverse fonti di dati sulle serie temporali hanno dimensioni memorizzate in modo nativo o modelli di archiviazione comuni che consentono l'estrazione dei dati in dimensioni.

Di solito, i TSDB supportano nativamente la dimensionalità. Prometheus memorizza le dimensioni nelle etichette. In TSDB come Graphite o OpenTSDB, viene invece utilizzato il termine tag.

Nei database tabellari come SQL, queste dimensioni sono generalmente i parametri di una query. GROUP BY

Dimensioni multiple in formato tabella

Nei database di tipo SQL o SQL che restituiscono risposte alle tabelle, le dimensioni aggiuntive in genere sono colonne nella tabella di risposta alla query.

Dimensione singola

Ad esempio, si consideri una query come nell'esempio seguente.

SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T GROUP BY BUCKET(StartTime, 1h), Location ORDER BY time asc

La query potrebbe restituire una tabella con tre colonne.

StartTime Temp Ubicazione
09:00 24 LGA
09:00 20 CAPO
10:00 26 LGA
10:00 22 CAPO

Il formato della tabella è una serie temporale con formato lungo, chiamato anche tall. Ha timestamp ripetuti e valori ripetuti in Location. In questo caso, due serie temporali del set verrebbero identificate come eTemp {Location=LGA}. Temp {Location=BOS}

Le singole serie temporali del set vengono estratte utilizzando le seguenti dimensioni:

  • La colonna temporale digitata StartTime come indice temporale della serie temporale

  • La colonna numerica digitata Temp come nome della serie

  • Il nome e i valori della Location colonna digitata come stringa per creare le etichette, ad esempio location=LGA

Dimensioni multiple

Se la query viene aggiornata per selezionare e raggruppare in base a più di una colonna di stringhe (ad esempio,GROUP BY BUCKET(StartTime, 1h), Location, Sensor), viene aggiunta una dimensione aggiuntiva.

StartTime Temp Ubicazione Sensor
09:00 24 LGA A
09:00 24,1 LGA B
09:00 20 CAPO A
09:00 20,2 - SCATOLA B
10:00 26 LGA A
10:00 26,1 LGA B
10:00 22 CAPO A
10:00 22,2 - SCATOLA B

In questo caso, le etichette che rappresentano le dimensioni hanno due chiavi basate sulle due colonne tipizzate a stringa e. Location Sensor I dati risultano in quattro serie:

  • Temp {Location=LGA,Sensor=A}

  • Temp {Location=LGA,Sensor=B}

  • Temp {Location=BOS,Sensor=A}

  • Temp {Location=BOS,Sensor=B}

Nota

Nota: le dimensioni multiple non sono supportate in modo da mappare a più avvisi in Grafana. Vengono invece trattate come condizioni multiple per un singolo avviso.

Valori multipli

Nel caso di fonti di dati simili a SQL, è possibile selezionare più di una colonna numerica, con o senza colonne di stringhe aggiuntive da utilizzare come dimensioni; ad esempio,. AVG(Temperature) AS AvgTemp, MAX(Temperature) AS MaxTemp Questo, se combinato con più dimensioni, può dare origine a numerose serie. La selezione di più valori è attualmente progettata per essere utilizzata solo con la visualizzazione.

Introduzione agli istogrammi e alle mappe di calore

Un istogramma è una rappresentazione grafica della distribuzione di dati numerici. Raggruppa i valori in secchi (a volte chiamati anche contenitori). Quindi conta quanti valori rientrano in ogni bucket.

Invece di rappresentare graficamente i valori effettivi, gli istogrammi rappresentano graficamente i bucket. Ogni barra rappresenta un bucket e l'altezza della barra rappresenta la frequenza (ad esempio il conteggio) dei valori che rientrano nell'intervallo di quel bucket.

Gli istogrammi esaminano solo le distribuzioni dei valori in un intervallo di tempo specifico. Il problema degli istogrammi è che non è possibile visualizzare tendenze o cambiamenti nella distribuzione nel tempo. È qui che le mappe di calore diventano utili.

Mappe di calore

Una heatmap è come un istogramma nel tempo, in cui ogni porzione temporale rappresenta il proprio istogramma. Invece di utilizzare l'altezza della barra come rappresentazione della frequenza, utilizza delle celle, colorando una cella proporzionalmente al numero di valori contenuti nel bucket.

Dati predefiniti

Diverse fonti di dati supportano l'istogramma nel tempo, tra cui:

  • Amazon OpenSearch Service (utilizzando un'aggregazione di bucket a istogramma)

  • Prometheus (con il tipo di metrica dell'istogramma e l'opzione Formato come opzione impostata su Heatmap)

In genere, puoi utilizzare qualsiasi fonte di dati che restituisca serie con nomi che rappresentano bucket bound o restituisca serie ordinate per limite in ordine crescente.

Dati grezzi e dati aggregati

Se utilizzi la heatmap con dati di serie temporali regolari (non predefiniti), è importante ricordare che spesso i dati sono già aggregati dal backend delle serie temporali. La maggior parte delle query sulle serie temporali non restituisce dati di esempio non elaborati. Includono invece un gruppo per intervallo di tempo o maxDataPoints limite abbinato a una funzione di aggregazione (in genere media).

Dipende dall'intervallo di tempo della tua richiesta. Il punto importante è sapere che il bucketing degli istogrammi eseguito da Grafana potrebbe essere eseguito su dati già aggregati e mediati. Per mappe di calore più accurate, è meglio eseguire il bucketing durante la raccolta delle metriche o archiviare i dati in, o in un'altra fonte di dati che supporti l'impostazione dell'istogramma OpenSearch, sui dati grezzi.

Se rimuovi o riduci il gruppo per ora (o aumenta maxDataPoints) nella tua query per restituire più punti dati, la tua heatmap è più accurata. Ma ciò può anche gravare pesantemente sulla CPU e sulla memoria. Se il numero di punti dati diventa irragionevolmente elevato, ciò potrebbe causare blocchi e arresti anomali.