Connect a una fonte di dati SAP HANA - 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 SAP HANA

SAP HANA è un database in memoria ad alte prestazioni che velocizza le decisioni e le azioni basate sui dati e in tempo reale. È sviluppato e commercializzato da SAP. Il plug-in di origine dati SAP HANA ti aiuta a connettere la tua istanza SAP HANA con Grafana.

Con il plug-in SAP HANA Grafana Enterprise, puoi visualizzare i tuoi dati SAP HANA insieme a tutte le altre fonti di dati in Grafana, nonché i dati di log e metrici nel contesto. Questo plugin include un editor di query integrato, supporta le annotazioni e consente di impostare soglie di avviso, controllare l'accesso, impostare le autorizzazioni e altro ancora.

Nota

Questa fonte di dati è solo per Grafana Enterprise. Per ulteriori informazioni, consulta Gestisci l'accesso ai plugin Enterprise.

Inoltre, nelle aree di lavoro che supportano la versione 9 o successiva, questa fonte di dati potrebbe richiedere l'installazione del plug-in appropriato. Per ulteriori informazioni, consulta Estendi il tuo spazio di lavoro con i plugin.

Funzionalità

  • Editor di query: il plugin è dotato di un editor di query SQL integrato con evidenziazione della sintassi che consente di visualizzare serie temporali o dati di tabelle e completa automaticamente le macro Grafana di base.

  • Autorizzazioni all'origine dati: controlla chi può visualizzare o interrogare i dati SAP HANA in Grafana.

  • Annotazioni: sovrapponi eventi o dati SAP HANA su qualsiasi grafico Grafana per correlare gli eventi con altri dati del grafico.

  • Avvisi: imposta archivi di metriche basati sugli avvisi in SAP HANA.

  • Variabili per le query: crea variabili modello in Grafana, basate su dati SAP HANA, e includi variabili nelle query SAP HANA per rendere interattive le dashboard.

Aggiungere la fonte di dati

  1. Apri la console Grafana nell'area di lavoro Amazon Managed Grafana e assicurati di aver effettuato l'accesso.

  2. Nel menu laterale sotto Configurazione (l'icona a forma di ingranaggio), scegli Data Sources.

  3. Scegli Aggiungi origine dati

    Nota

    Se non vedi il link Fonti di dati nel menu laterale, significa che l'utente attuale non ha il Admin ruolo.

  4. Seleziona SAP HANA dall'elenco delle fonti di dati.

  5. Nell'editor Config, inserisci le seguenti informazioni:

    • Per Indirizzo del server, fornisci l'indirizzo dell'istanza SAP HANA. Esempio:. xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com

    • Per Porta server, fornisci la porta dell'istanza SAP HANA.

    • Per Nome utente, inserisci il nome utente da utilizzare per connetterti all'istanza SAP HANA.

    • Per Password, inserisci la password per questo utente.

    • (Facoltativo) Abilita la verifica Skip TLS se desideri ignorare la verifica TLS.

    • (Facoltativo) Abilita l'autenticazione del client TLS se devi fornire un certificato e una chiave del client.

    • (Facoltativo) Abilita con CA cert se desideri abilitare la verifica dei certificati TLS autofirmati.

    • (Facoltativo) Per Schema predefinito, immettere uno schema predefinito da utilizzare. Se lo ometti, dovrai specificare lo schema in ogni query.

Accesso e autorizzazioni

Per connettere Grafana a SAP HANA, utilizza credenziali dedicate. Fornisci solo le autorizzazioni necessarie all'utente. Innanzitutto, crea un utente con restrizioni con nome utente e password. La seguente query è un esempio di creazione di un utente con restrizioni. Questa query disabilita anche la modifica forzata della password.

CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;

Quindi, consenti all'utente di connettere il sistema tramite client come Grafana con quanto segue:

ALTER USER <USER> ENABLE CLIENT CONNECT;

Infine, consenti all'utente di accedere alle viste, alle tabelle e agli schemi necessari.

ALTER USER <USER> GRANT ROLE PUBLIC; GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;

Autorizzazioni a livello utente

Limita l'accesso a SAP HANA facendo clic sulla scheda Autorizzazioni nella pagina di configurazione dell'origine dati per abilitare le autorizzazioni dell'origine dati. Nella pagina delle autorizzazioni, gli amministratori possono abilitare le autorizzazioni e limitare le autorizzazioni per le query a utenti e team specifici.

Editor della query

Il plugin SAP HANA Grafana è dotato di un editor di query SQL in cui è possibile inserire qualsiasi query HANA. Se la tua query restituisce dati di serie temporali, puoi formattarla come serie temporali per visualizzarli in un pannello grafico. L'editor di query fornisce il completamento automatico per le macro Grafana supportate e l'evidenziazione della sintassi della query SQL.

Annotazioni

È possibile utilizzare le query SAP HANA come fonti delle annotazioni Grafana. La tua query di annotazione dovrebbe restituire almeno una colonna temporale e una colonna di testo. Per ulteriori informazioni sulle annotazioni, vedere. Annotazioni

Per creare annotazioni da SAP HANA
  1. Scegli l'icona a forma di ingranaggio delle impostazioni della dashboard.

  2. Dal menu a sinistra, scegli Annotazioni, Nuovo.

  3. Dal menu a discesa Origine dati, seleziona l'istanza dell'origine dati SAP HANA.

  4. Nel campo Query, inserisci una query SAP HANA che restituisca almeno un campo time e un campo di testo.

  5. Nel menu a discesa Formato come, seleziona Time Series.

  6. Per ogni annotazione, configura i campi Da.

Modelli e variabili

Per aggiungere una nuova variabile di query SAP HANA, vedere. Aggiungere una variabile di query Usa la tua fonte di dati SAP HANA come fonte di dati.

La seguente query di esempio restituisce l'elenco distinto di username dalla users tabella.

select distinct("username") from "users"
Nota

Assicuratevi di selezionare solo una colonna nella query variabile. Se la query restituisce due colonne, la prima colonna verrà utilizzata come valore di visualizzazione e la seconda colonna verrà utilizzata come valore effettivo della variabile. Se la query restituisce più di due colonne, queste verranno rifiutate.

Modelli e variabili

È possibile utilizzare qualsiasi variabile Grafana nella query. Gli esempi seguenti mostrano come utilizzare la variabile singola/multipla nella query.

-- For example, following query select * from "users" where "city" = ${city} -- will be translated into select * from "users" where "city" = 'london' --- where you can see ${city} variable translated into actual value in the variable

Analogamente al testo, le variabili funzionano anche per i campi numerici. Nell'esempio seguente, ${age} è una variabile di una casella di testo in cui accetta numeri e quindi viene confrontata con il campo numerico della tabella.

select * from "users" where "age" > ${age} --- wil be translated into select * from "users" where "age" > '36'

Se la variabile restituisce più valori, puoi utilizzarla nelle condizioni della query SAP HANA come di in seguito. Nota le parentesi che circondano la variabile per rendere la where in condizione valida in SAP HANA.

select * from "users" where "city" in (${cities}) --- will be translated into select * from "users" where "city" in ('london','perth','delhi') --- where you can see ${cities} turned into a list of grafana variables selected. --- You can also write the same query using shorthand notation as shown below select * from "users" where "city" in ($cities)

Macro

  • $__timeFilter(<time_column>)— Applica l'intervallo di tempo di Grafana alla colonna specificata quando viene utilizzato nella query non elaborata. Applicabile alle colonne data/timestamp/long time.

  • $__timeFilter(<time_column>, <format>)— Come sopra. Ma dà la possibilità di specificare il formato della time_column memorizzata nel database.

  • $__timeFilter(<time_column>, "epoch", <format>)— Come sopra ma può essere usato quando la colonna temporale è in epoche. il formato può essere uno tra 's', 'ms' e 'ns'.

  • $__fromTimeFilter(<time_column>)— Come sopra ma può essere usato quando la colonna temporale è in epoca. il formato può essere uno tra 's', 'ms' e 'n'.

  • $__fromTimeFilter(<time_column>, <comparison_predicate>)— Come sopra ma in grado di specificare comparison_predicate.

  • $__fromTimeFilter(<time_column>, <format>)— Come sopra ma in grado di specificare il formato della colonna temporale.

  • $__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)— Come sopra ma in grado di specificare comparison_predicate.

  • $__toTimeFilter(<time_column>)— Restituisce la condizione temporale in base al valore temporale del grafana in un campo temporale.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— Come sopra ma in grado di specificare comparison_predicate.

  • $__toTimeFilter(<time_column>, <format>)— Come sopra ma in grado di specificare il formato della colonna temporale.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— Come sopra ma in grado di specificare comparison_predicate.

  • $__timeGroup(<time_column>, <interval>)— Espande la colonna temporale in gruppi di intervalli. Applicabile alle colonne data/timestamp/long time.

Macro $__timeFilter () <time_column>

L'esempio seguente spiega la macro: $__timeFilter(<time_column>)

- In the following example, the query select ts, temperature from weather where $__timeFilter(ts) --- will be translated into select ts, temperature from weather where ts > '2021-02-24T12:52:48Z' AND ts < '2021-03-24T12:52:48Z' --- where you can see the grafana dashboard's time range is applied to the column ts in the query.

macro $__timeFilter (,) <time_column><format>

In alcuni casi, le colonne temporali nel database sono memorizzate in formati personalizzati. L'esempio seguente spiega la $__timeFilter(<time_column>, <format>) macro, che aiuta a filtrare i timestamp personalizzati in base al selettore orario di grafana:

SELECT TO_TIMESTAMP("TS",'YYYYMMDDHH24MISS') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYYMMDDHH24MISS") -- TS is in 20210421162012 format SELECT TO_TIMESTAMP("TS",'YYYY-MON-DD') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYY-MON-DD") -- TS is in 2021-JAN-15 format

Nella macro, il formato può essere uno dei formati HANA validi corrispondenti alla colonna del timestamp. Ad esempio, YYYYMMDDHH24MISS è un formato valido quando i dati sono archiviati nel formato. 20210421162012

Macro $__TimeFilter (, «epoch») <time_column><format>

In alcuni casi, i timestamp vengono memorizzati come timestamp epoch nel database. L'esempio seguente spiega la $__timeFilter(<time_column>, "epoch" <format>) macro che aiuta a filtrare i timestamp delle epoche in base al selettore temporale di grafana. Nella macro, il formato può essere uno tra ms, s o ns. Se non viene specificato, s verrà considerato come formato predefinito.

SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","s") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- Example : TIMESTAMP field stored in epoch_ms format 1257894000000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000000000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ns") -- Example : TIMESTAMP field stored in epoch_nanoseconds format 1257894000000000000

Invece di usare il terzo argomento per $__timeFilter, puoi usare uno tra epoch_s, epoch_ms o epoch_ns come secondo argomento..

SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- is same as SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch_ms")

macro toTimeFilter $__ () e $__ () fromTimeFilter

La $__fromTimeFilter() macro si espande in una condizione su un campo temporale basato sul time picker Grafana.

Questo accetta tre parametri. Il primo parametro è il nome del campo temporale. Puoi passare comparison_predicate o il formato della colonna time come secondo argomento. Se vuoi passare entrambi, allora format è il secondo parametro e usa comparison_predicate come terzo parametro.

<format>Se il formato non è specificato, il plugin presumerà che la colonna dell'ora sia di tipo timestamp/date. Se la colonna dell'ora è memorizzata in un formato diverso da timestamp/date, passa il formato come secondo argomento. <format>può essere uno tra epoch_s, epoch_ms, epoch_ns o qualsiasi altro formato personalizzato come YYYY-MM-DD.

<comparison_predicate>parametro opzionale. Se non viene passato, il plugin utilizzerà > come predicato di confronto. <comparison_predicate>può essere uno tra =,! =, <>, <, <=, >, >=

$__toTimeFilter()funziona come fromTimeFilter $__ (). Invece di usare Grafana's from time, utilizzerà to time. Inoltre, il predicato di confronto predefinito sarà <.

$__timeGroup (,) <time_column><interval>

Ad esempio, la macro $__TimeGroup (timecol,1h) viene estesa a SERIES_ROUND («timecol», 'INTERVAL 1 HOUR') nella query.

L'esempio seguente spiega il $__timeGroup(<time_column>, <interval>) macro.

SELECT $__timeGroup(timestamp,1h), "user", sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp,1h), "user" ORDER BY $__timeGroup(timestamp,1h) ASC

Questo viene tradotto nella seguente query dove $__timeGroup(timestamp,1h) viene espanso inSERIES_ROUND("timestamp", 'INTERVAL 1 HOUR').

SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR') as "timestamp", "user", sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2020-01-01T00:00:00Z' AND "timestamp" < '2020-01-01T23:00:00Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR'), "user" ORDER BY "timestamp" ASC
Nota

Quando usi group by con la macro $__TimeGroup, assicurati che i campi select, sort by abbiano lo stesso nome del gruppo per campo. Altrimenti, HANA potrebbe non riconoscere la query.

Se non vuoi codificare l'intervallo nella funzione $__timeGroup (), puoi lasciarlo a Grafana specificando $__interval come intervallo. Grafana calcolerà tale intervallo dall'intervallo di tempo della dashboard. Query di esempio:

SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp, $__interval) ORDER BY $__timeGroup(timestamp, $__interval) ASC

Tale query viene tradotta nella seguente query in base all'intervallo di tempo del dashboard.

SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE'), sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2019-12-31T23:09:14Z' AND "timestamp" < '2020-01-01T23:17:54Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ORDER BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ASC

Avviso

Per configurare un avviso SAP HANA a Grafana
  1. Crea un pannello grafico nella tua dashboard.

  2. Crea una query SAP HANA in formato serie temporale.

  3. Scegli la scheda Avviso e specifica i criteri di avviso.

  4. Scegliete Test Rule per testare la query di avviso.

  5. Specificate i destinatari dell'avviso, il messaggio e la gestione degli errori.

  6. Salva la dashboard.

Avvisi relativi a dati non relativi a serie temporali

Per inviare avvisi sui dati non relativi alle serie temporali, utilizzate la TO_TIMESTAMP('${__to:date}') macro per trasformare le metriche non relative alle serie temporali in serie temporali. Questo convertirà la metrica in una query di serie temporali a punto singolo. Il formato della query è riportato di seguito

SELECT TO_TIMESTAMP('${__to:date}'), <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>

Nell'esempio seguente, una tabella contiene quattro campi denominati nome utente, età, città e ruolo. Questa tabella non ha alcun campo temporale. Desideriamo avvisare quando il numero di utenti con ruolo di sviluppo è inferiore a tre.

SELECT TO_TIMESTAMP('${__to:date}'), count(*) as "count" FROM ( SELECT 'John' AS "username", 32 AS "age", 'Chennai' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Jacob' AS "username", 32 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Ali' AS "username", 42 AS "age", 'Delhi' as "city", 'admin' as "role" FROM dummy UNION ALL SELECT 'Raja' AS "username", 12 AS "age", 'New York' as "city", 'ceo' as "role" FROM dummy UNION ALL SELECT 'Sara' AS "username", 35 AS "age", 'Cape Town' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Ricky' AS "username", 25 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Angelina' AS "username", 31 AS "age", 'London' as "city", 'cxo' as "role" FROM dummy ) WHERE "role" = 'dev'