Connect a una fonte di dati MySQL - 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à.

Connect a una fonte di dati MySQL

Aggiungi la fonte di dati MySQL per poter interrogare e visualizzare i dati da un database compatibile con MySQL.

Importante

La versione 8.0 di Grafana modifica la struttura dei dati sottostante per i frame di dati per le fonti di dati MySQL, Postgres e Microsoft SQL Server. Di conseguenza, il risultato di una query di serie temporali viene restituito in un formato ampio. Per ulteriori informazioni, consulta Wide format nella documentazione dei frame di dati Grafana.

Per far funzionare le visualizzazioni come prima, potrebbe essere necessario eseguire alcune migrazioni manuali. Una soluzione è documentata su Github all'indirizzo Postgres/MySQL/MSSQL: Breaking change in v8.0 relativo alle query sulle serie temporali e all'ordinamento della colonna di dati.

Aggiungere la fonte di dati

  1. Apri il menu laterale selezionando l'icona Grafana nell'intestazione in alto.

  2. Nel menu laterale sotto il link Dashboards, dovresti trovare un link chiamato Data Sources.

  3. Scegli il pulsante + Aggiungi fonte di dati nell'intestazione in alto.

  4. Seleziona MySQL dall'elenco a discesa Tipo.

Opzioni relative all'origine dei dati

Nome Descrizione
Name Il nome dell'origine dati. Ecco come viene visualizzata la fonte di dati nei pannelli e nelle query.
Default L'origine dati predefinita significa che sarà preselezionata per i nuovi pannelli.
Host L'indirizzo IP/nome host e la porta opzionale dell'istanza MySQL.
Database Nome del database MySQL.
User Login/nome utente dell'utente del database.
Password Password dell'utente del database.
Max open Il numero massimo di connessioni aperte al database, predefinito unlimited (Grafana v5.4+).
Max idle Il numero massimo di connessioni nel pool di connessioni inattive, predefinito 2 (Grafana v5.4+).
Max lifetime La quantità massima di tempo in secondi per riutilizzare una connessione, impostazione predefinita: /4 ore. 14400 Questo dovrebbe essere sempre inferiore a quello wait_timeout configurato in MySQL (Grafana v5.4+).

Intervallo di tempo minimo

Un limite inferiore per le $_interval $_interval_ms variabili. Si consiglia di impostare la frequenza di scrittura, ad esempio 1m se i dati vengono scritti ogni minuto. Questa opzione può anche essere sovrascritta/configurata in un pannello del dashboard sotto le opzioni dell'origine dati. Questo valore deve essere formattato come un numero seguito da un identificatore temporale valido, ad esempio 1m (1 minuto) o (30 secondi). 30s Sono supportati i seguenti identificatori di orario.

Identificatore Descrizione
y Anno
M Mese
w Settimana
d Day (Giorno)
h Ora
m Minuto
s Secondo
ms Millisecondi

Autorizzazioni utente del database

Importante

All'utente del database specificato quando si aggiunge l'origine dati devono essere concesse solo le autorizzazioni SELECT per il database e le tabelle specificati su cui si desidera eseguire la query. Grafana non conferma che la query sia sicura. La query potrebbe includere qualsiasi istruzione SQL. Ad esempio, DROP TABLE user; verrebbero eseguite istruzioni come USE otherdb; e. Per proteggerti da ciò, ti consigliamo vivamente di creare un utente MySQL specifico con autorizzazioni limitate.

Il seguente esempio di codice mostra la creazione di un utente MySQL specifico con autorizzazioni limitate.

CREATE USER 'grafanaReader' IDENTIFIED BY 'password'; GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';

Per concedere l'accesso a più database e tabelle, puoi usare caratteri jolly (*) al posto del database o della tabella, se lo desideri.

Editor della query

Trovi l'editor di query MySQL nella scheda metriche nella modalità di modifica di un pannello. Si accede alla modalità di modifica scegliendo il titolo del pannello, quindi Modifica.

L'editor di query ha un collegamento SQL generato che viene visualizzato dopo l'esecuzione di una query, in modalità di modifica del pannello. Sceglilo e si espanderà e mostrerà la stringa SQL interpolata non elaborata che è stata eseguita.

Seleziona tabella, colonna temporale e colonna metrica (FROM)

Quando si accede alla modalità di modifica per la prima volta o si aggiunge una nuova query, Grafana proverà a precompilare il generatore di query con la prima tabella che ha una colonna timestamp e una colonna numerica.

Nel campo FROM, Grafana suggerirà le tabelle presenti nel database configurato. Per selezionare una tabella o una vista in un altro database a cui l'utente del database ha accesso, è possibile inserire manualmente un nome completo (database.table) come. otherDb.metrics

Il campo della colonna Ora si riferisce al nome della colonna contenente i valori temporali. La selezione di un valore per il campo della colonna Metrica è facoltativa. Se viene selezionato un valore, il campo della colonna Metrica verrà utilizzato come nome della serie.

Le colonne metriche suggerite conterranno solo colonne con un tipo di dati testuale (text, tinytext, mediumtext, longtext, varchar, char). Se desideri utilizzare una colonna con un tipo di dati diverso come colonna metrica, puoi inserire il nome della colonna con un cast:. CAST(numericColumn as CHAR) Puoi anche inserire espressioni SQL arbitrarie nel campo della colonna metrica che restituiscono un tipo di dati di testo come. CONCAT(column1, " ", CAST(numericColumn as CHAR))

Colonne e funzioni di aggregazione (SELECT)

Nella SELECT riga è possibile specificare le colonne e le funzioni che si desidera utilizzare. Nel campo della colonna, è possibile scrivere espressioni arbitrarie anziché un nome di colonna comecolumn1 * column2 / column3.

Se si utilizzano funzioni aggregate, è necessario raggruppare il set di risultati. L'editor aggiungerà automaticamente un GROUP BY time se aggiungi una funzione aggregata.

Puoi aggiungere altre colonne di valori scegliendo il pulsante più e selezionando Column dal menu. Le colonne con valori multipli verranno tracciate come serie separate nel pannello grafico.

Filtraggio dei dati (WHERE)

Per aggiungere un filtro, scegli l'icona con il segno più a destra della WHERE condizione. Puoi rimuovere i filtri scegliendo sul filtro e selezionandoRemove. Un filtro per l'intervallo di tempo attualmente selezionato viene aggiunto automaticamente alle nuove interrogazioni.

Raggruppa per

Per raggruppare in base all'ora o a qualsiasi altra colonna, scegli l'icona più alla fine della riga GROUP BY. L'elenco a discesa dei suggerimenti mostrerà solo le colonne di testo della tabella attualmente selezionata, ma puoi inserire manualmente qualsiasi colonna. Puoi rimuovere il gruppo scegliendo l'elemento e quindi selezionando. Remove

Se aggiungi un raggruppamento, a tutte le colonne selezionate deve essere applicata una funzione di aggregazione. Il generatore di query aggiungerà automaticamente funzioni di aggregazione a tutte le colonne senza funzioni di aggregazione quando si aggiungono raggruppamenti.

Riempimento degli

Grafana può inserire i valori mancanti quando si raggruppa per ora. La funzione time accetta due argomenti. Il primo argomento è la finestra temporale in base alla quale vuoi raggruppare e il secondo argomento è il valore con cui vuoi che Grafana riempia gli elementi mancanti.

Modalità editor di testo (raw)

Puoi passare alla modalità editor di query raw scegliendo l'icona a forma di hamburger e selezionando Cambia modalità editor o scegliendo Modifica SQL sotto la query.

Nota

Se utilizzi l'editor di query non elaborato, assicurati che la tua query abbia ORDER BY time almeno un filtro sull'intervallo di tempo restituito.

Macro

Per semplificare la sintassi e consentire l'utilizzo di parti dinamiche, come i filtri per intervalli di date, la query può contenere macro.

Esempio di macro Descrizione
$__time(dateColumn) Verrà sostituito da un'espressione da convertire in un timestamp UNIX e rinominare la colonna intime_sec; ad esempio, UNIX_TIMESTAMP (dateColumn) come time_sec.
$__timeEpoch(dateColumn) Verrà sostituito da un'espressione da convertire in un timestamp UNIX e rinominare la colonna in; ad esempio, UNIX_TIMESTAMP (dateColumn) come time_sec. time_sec
$__timeFilter(dateColumn) Verrà sostituito da un filtro per intervallo di tempo che utilizza il nome della colonna specificato. Ad esempio, DateColumn BETWEEN FROM_UNIXTIME (1494410783) AND FROM_UNIXTIME (1494410983).
$__timeFrom() Verrà sostituito dall'inizio della selezione temporale attualmente attiva. Ad esempio, FROM_UNIXTIME (1494410783).
$__timeTo() Verrà sostituito dalla fine della selezione temporale attualmente attiva. Ad esempio, FROM_UNIXTIME (1494410983).
$__timeGroup(dateColumn,'5m') Verrà sostituito da un'espressione utilizzabile nella clausola GROUP BY. Ad esempio, cast (cast (UNIX_TIMESTAMP (DateColumn)/(300) as signed) 300 as signed), *
$__timeGroup(dateColumn,'5m', 0) Uguale alla riga precedente, ma con un parametro fill, quindi i punti mancanti in quella serie verranno aggiunti da grafana e 0 verrà utilizzato come valore.
$__timeGroup(dateColumn,'5m', NULL) Come sopra, ma NULL verrà utilizzato come valore per i punti mancanti.
$__timeGroup(dateColumn,'5m', previous) Come sopra, ma il valore precedente di quella serie verrà utilizzato come valore di riempimento se non è stato ancora visualizzato alcun valore verrà utilizzato NULL (disponibile solo in Grafana 5.3+).
$__timeGroupAlias(dateColumn,'5m') Verrà sostituito identico $__timeGroup ma con un alias di colonna aggiunto (disponibile solo in Grafana 5.3+).
$__unixEpochFilter(dateColumn) Verrà sostituito da un filtro per intervallo temporale che utilizza il nome di colonna specificato con gli orari rappresentati come timestamp Unix. Ad esempio, dateColumn > 1494410783 AND dateColumn < 1494497183.
$__unixEpochFrom() Verrà sostituito dall'inizio della selezione temporale attualmente attiva come timestamp Unix. Ad esempio, 1494410783.
$__unixEpochTo() Verrà sostituito dalla fine della selezione temporale attualmente attiva come timestamp Unix. Ad esempio, 1494497183.
$__unixEpochNanoFilter(dateColumn) Verrà sostituito da un filtro per intervallo temporale che utilizza il nome della colonna specificato con i tempi rappresentati come timestamp in nanosecondi. Ad esempio, dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872.
$__unixEpochNanoFrom() Verrà sostituito dall'inizio della selezione temporale attualmente attiva come timestamp in nanosecondi. Ad esempio, 1494410783152415214.
$__unixEpochNanoTo() Verrà sostituito dalla fine della selezione temporale attualmente attiva come timestamp in nanosecondi. Ad esempio, 1494497183142514872.
$__unixEpochGroup(dateColumn,"5m", [fillmode]) Uguale $__timeGroup ma per gli orari memorizzati come timestamp Unix (disponibile solo in Grafana 5.3+).
$__unixEpochGroupAlias(dateColumn,"5m", [fillmode])` Come sopra ma aggiunge anche un alias di colonna (disponibile solo in Grafana 5.3+).

L'editor di query ha un collegamento SQL generato che viene visualizzato dopo l'esecuzione di una query, in modalità di modifica del pannello. Sceglilo e si espanderà e mostrerà la stringa SQL interpolata non elaborata che è stata eseguita.

Interrogazioni sulla tabella

Se l'opzione Formatta come query è impostata su Tabella, puoi praticamente eseguire qualsiasi tipo di query SQL. Il pannello della tabella mostrerà automaticamente i risultati delle colonne e delle righe restituite dalla query.

Il codice seguente mostra una query di esempio.

SELECT title as 'Title', user.login as 'Created By' , dashboard.created as 'Created On' FROM dashboard INNER JOIN user on user.id = dashboard.created_by WHERE $__timeFilter(dashboard.created)

È possibile controllare il nome delle colonne del pannello Tabella utilizzando la normale sintassi as SQL per la selezione delle colonne.

Interrogazioni sulle serie temporali

Se impostate Format su Time series, per utilizzarlo ad esempio in un pannello grafico, la query deve restituire una colonna denominata time che restituisca un datetime SQL o qualsiasi tipo di dati numerico che rappresenti l'epoca Unix. Qualsiasi colonna tranne time e metric viene trattata come una colonna di valori. È possibile restituire una colonna denominata metric che viene utilizzata come nome metrico per la colonna dei valori. Se restituisci più colonne di valori e una colonna denominatametric, questa colonna viene utilizzata come prefisso per il nome della serie (disponibile solo in Grafana 5.3+).

I set di risultati delle query sulle serie temporali devono essere ordinati in base all'ora.

Il seguente esempio di codice mostra la metric colonna.

SELECT $__timeGroup(time_date_time,'5m'), min(value_double), 'min' as metric FROM test_data WHERE $__timeFilter(time_date_time) GROUP BY time ORDER BY time

Il seguente esempio di codice mostra l'utilizzo del parametro fill nella macro $__TimeGroup per convertire invece i valori null in zero.

SELECT $__timeGroup(createdAt,'5m',0), sum(value_double) as value, measurement FROM test_data WHERE $__timeFilter(createdAt) GROUP BY time, measurement ORDER BY time

Il seguente esempio di codice mostra più colonne.

SELECT $__timeGroup(time_date_time,'5m'), min(value_double) as min_value, max(value_double) as max_value FROM test_data WHERE $__timeFilter(time_date_time) GROUP BY time ORDER BY time

Non è disponibile il supporto per un gruppo dinamico per orario in base all'intervallo di tempo e alla larghezza del pannello.

Modellazione

Invece di inserire elementi come il nome del server, dell'applicazione e del sensore nelle query metriche, puoi utilizzare variabili al loro posto. Le variabili vengono visualizzate come caselle di selezione a discesa nella parte superiore della dashboard. Puoi utilizzare queste caselle a discesa per modificare i dati visualizzati nella dashboard.

Per ulteriori informazioni sui modelli e sulle variabili dei modelli, consulta. Modelli

Variabile di interrogazione

Se aggiungi una variabile modello di questo tipoQuery, puoi scrivere una query MySQL in grado di restituire elementi come nomi di misurazioni, nomi di chiavi o valori chiave che vengono visualizzati come una casella di selezione a discesa.

Ad esempio, è possibile avere una variabile che contiene tutti i valori per la hostname colonna in una tabella se si specifica una query come questa nell'impostazione della variabile di modello Query.

SELECT hostname FROM my_host

Una query può restituire più colonne e Grafana creerà automaticamente un elenco da esse. Ad esempio, la seguente query restituirà un elenco con valori da hostname ehostname2.

SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city

Per utilizzare macro dipendenti dall'intervallo di tempo, ad esempio $__timeFilter(column) nella query, la modalità di aggiornamento della variabile modello deve essere impostata su On Time Range Change.

SELECT event_name FROM event_log WHERE $__timeFilter(time_column)

Un'altra opzione è una query che può creare una variabile chiave/valore. La query dovrebbe restituire due colonne __text denominate e. __value Il valore della __text colonna deve essere univoco (se non è univoco, viene utilizzato il primo valore). Le opzioni nell'elenco a discesa avranno un testo e un valore in modo da poter avere un nome descrittivo come testo e un ID come valore.

Il seguente esempio di codice mostra una query con hostname come testo e id come valore.

SELECT hostname AS __text, id AS __value FROM my_host

È inoltre possibile creare variabili annidate. Ad esempio, se aveste un'altra variabile denominataregion. Quindi potresti fare in modo che la variabile hosts mostri solo gli host della regione attualmente selezionata con una query come questa (se region è una variabile multivalore, usa l'operatore di IN confronto anziché = confrontare più valori).

SELECT hostname FROM my_host WHERE region IN($region)

Utilizzo __searchFilter per filtrare i risultati in Query Variable

L'utilizzo __searchFilter nel campo di interrogazione filtrerà il risultato della query in base a ciò che l'utente digita nella casella di selezione a discesa. Quando l'utente non ha inserito nulla, il valore predefinito per __searchFilter è%.

Nota

È importante circondare l'__searchFilterespressione tra virgolette poiché Grafana non lo fa per te.

L'esempio seguente mostra come utilizzare, __searchFilter come parte del campo di interrogazione, la ricerca hostname mentre l'utente digita nella casella di selezione a discesa.

SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter'

Utilizzo delle variabili nelle interrogazioni

Da Grafana 4.3.0 a 4.6.0, le variabili del modello vengono sempre citate automaticamente, quindi se si tratta di un valore stringa non racchiuderle tra virgolette nelle clausole where.

A partire da Grafana 4.7.0, i valori delle variabili modello vengono citati solo quando la variabile modello è a. multi-value

Se la variabile è una variabile multivalore, utilizza l'operatore di IN confronto anziché = confrontare valori multipli.

Esistono due sintassi:

$<varname>Esempio con una variabile modello denominatahostname:

SELECT UNIX_TIMESTAMP(atimestamp) as time, aint as value, avarchar as metric FROM my_table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC

[[varname]]Esempio con una variabile modello denominatahostname:

SELECT UNIX_TIMESTAMP(atimestamp) as time, aint as value, avarchar as metric FROM my_table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp ASC

Disattivazione delle virgolette per le variabili multivalore

Grafana crea automaticamente una stringa tra virgole e virgole per variabili multivalore. Ad esempio: se server02 sono selezionati server01 e, verranno formattati come:. 'server01', 'server02' Per disattivare le virgolette, usa l'opzione di formattazione csv per le variabili.

${servers:csv}

Per ulteriori informazioni sulle opzioni di formattazione delle variabili, vedere. Opzioni avanzate di formato variabile

Annotazioni

È possibile utilizzare le annotazioni per sovrapporre informazioni dettagliate sugli eventi ai grafici. È possibile aggiungere interrogazioni di annotazione tramite il menu Dashboard /la vista Annotazioni. Per ulteriori informazioni, consulta .

Il codice di esempio seguente mostra una query che utilizza una colonna temporale con valori epoch.

SELECT epoch_time as time, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

Il codice di esempio seguente mostra una query regionale che utilizza le colonne time e timeend con valori epoch.

Nota

Disponibile solo in Grafana v6.6+.

SELECT epoch_time as time, epoch_timeend as timeend, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

Il codice di esempio seguente mostra una query che utilizza una colonna time del tipo di dati data/ora SQL nativo.

SELECT native_date_time as time, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__timeFilter(native_date_time)
Nome Descrizione
time Il nome del campo data/ora. Potrebbe essere una colonna con un tipo di dati data/ora SQL nativo o un valore epocale.
timeend Nome opzionale del campo data/ora di fine. Potrebbe essere una colonna con un tipo di dati di data/ora SQL nativo o un valore epocale.
text Campo di descrizione dell'evento.
tags Nome di campo opzionale da utilizzare per i tag degli eventi come stringa separata da virgole.

Avviso

Le interrogazioni sulle serie temporali dovrebbero funzionare in condizioni di avviso. Le interrogazioni in formato tabella non sono ancora supportate nelle condizioni delle regole di avviso.