Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Conéctese a una fuente de datos de SAP HANA
SAP HANA
Con el complemento SAP HANA Grafana Enterprise, puede visualizar sus datos de SAP HANA junto con todas sus demás fuentes de datos en Grafana, así como datos de registro y métricas en contexto. Este complemento incluye un editor de consultas integrado, admite anotaciones y te permite establecer umbrales de alerta, controlar el acceso, establecer permisos y mucho más.
nota
Esta fuente de datos es solo para Grafana Enterprise. Para obtener más información, consulte Gestione el acceso a los complementos empresariales.
Además, en los espacios de trabajo compatibles con la versión 9 o posterior, es posible que esta fuente de datos requiera la instalación del complemento adecuado. Para obtener más información, consulte Amplía tu espacio de trabajo con complementos.
Características
-
Editor de consultas: el complemento viene con un editor de consultas SQL integrado con resaltado de sintaxis que te permite visualizar series temporales o datos de tablas y completar automáticamente las macros básicas de Grafana.
-
Permisos de fuentes de datos: controle quién puede ver o consultar los datos de SAP HANA en Grafana.
-
Anotaciones: superponga eventos o datos de SAP HANA en cualquier gráfico de Grafana para correlacionar los eventos con otros datos del gráfico.
-
Alertas: configure almacenes de métricas basados en alertas en SAP HANA.
-
Variables para consultas: cree variables de plantilla en Grafana, que se basen en datos de SAP HANA, e incluya variables en las consultas de SAP HANA para que los paneles sean interactivos.
Añadir la fuente de datos
-
Abre la consola de Grafana en el espacio de trabajo de Grafana gestionado por Amazon y asegúrate de haber iniciado sesión.
-
En el menú lateral, en Configuración (el icono con forma de engranaje), selecciona Fuentes de datos.
-
Elija Agregar origen de datos.
nota
Si no ves el enlace Fuentes de datos en el menú lateral, significa que tu usuario actual no tiene el
Admin
rol. -
Seleccione SAP HANA de la lista de fuentes de datos.
-
En el editor de Config, introduce la siguiente información:
-
Para la dirección del servidor, proporcione la dirección de la instancia de SAP HANA. Ejemplo:
xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com
. -
Para el puerto del servidor, proporcione el puerto de la instancia de SAP HANA.
-
En Nombre de usuario, introduzca el nombre de usuario que se utilizará para conectarse a la instancia de SAP HANA.
-
En Contraseña, introduzca la contraseña de este usuario.
-
(Opcional) Habilite Omitir la verificación de TLS si desea omitir la verificación de TLS.
-
(Opcional) Habilite la autenticación del cliente TLS si necesita proporcionar un certificado y una clave de cliente.
-
(Opcional) Habilite con un certificado de CA si desea habilitar la verificación de los certificados TLS autofirmados.
-
(Opcional) En el esquema predeterminado, introduzca el esquema predeterminado que se utilizará. Si lo omite, tendrá que especificar el esquema en cada consulta.
-
Acceso y permisos
Para conectar Grafana a SAP HANA, utilice credenciales dedicadas. Proporcione al usuario únicamente los permisos necesarios. En primer lugar, cree un usuario restringido con nombre de usuario y contraseña. La siguiente consulta es un ejemplo de creación de un usuario restringido. Esta consulta también desactiva el cambio forzoso de la contraseña.
CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;
A continuación, permita al usuario conectar el sistema a través de clientes como Grafana con lo siguiente:
ALTER USER <USER> ENABLE CLIENT CONNECT;
Por último, dé al usuario acceso a las vistas, tablas y esquemas necesarios.
ALTER USER <USER> GRANT ROLE PUBLIC; GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;
Permisos a nivel de usuario
Limite el acceso a SAP HANA haciendo clic en la pestaña Permisos de la página de configuración de la fuente de datos para habilitar los permisos de la fuente de datos. En la página de permisos, los administradores pueden habilitar los permisos y restringir los permisos de consulta a usuarios y equipos específicos.
Editor de consultas
El complemento Grafana de SAP HANA incluye un editor de consultas SQL en el que puede introducir cualquier consulta de HANA. Si la consulta devuelve datos de series temporales, puede formatearlos como series temporales para visualizarlos en un panel de gráficos. El editor de consultas permite completar automáticamente las macros de Grafana compatibles y resaltar la sintaxis de la consulta SQL.
Annotations
Puede utilizar las consultas de SAP HANA como fuentes de las anotaciones de Grafana. La consulta de anotaciones debe devolver al menos una columna de tiempo y una columna de texto. Para obtener más información sobre las anotaciones, consulte. Annotations
Para crear anotaciones desde SAP HANA
-
Seleccione el icono con forma de engranaje de configuración del panel de control.
-
En el menú de la izquierda, selecciona Anotaciones, Nuevo.
-
En el menú desplegable de la fuente de datos, seleccione su instancia de fuente de datos de SAP HANA.
-
En el campo Consulta, introduzca una consulta de SAP HANA que devuelva al menos un campo de tiempo y un campo de texto.
-
En el menú desplegable Formatear como, seleccione Serie temporal.
-
Para cada anotación, configure los campos Desde.
Plantillas y variables
Para añadir una nueva variable de consulta de SAP HANA, consulteAñadir una variable de consulta. Utilice su fuente de datos de SAP HANA como fuente de datos.
La siguiente consulta de ejemplo devuelve la lista distinta de username
de la users
tabla.
select distinct("username") from "users"
nota
Asegúrese de seleccionar solo una columna en la consulta de variables. Si la consulta devuelve dos columnas, la primera columna se utilizará como valor de visualización y la segunda como valor real de la variable. Si la consulta devuelve más de dos columnas, se rechazarán.
Plantillas y variables
Puedes usar cualquier variable de Grafana en tu consulta. Los siguientes ejemplos muestran cómo utilizar la variable única/múltiple en la consulta.
-- 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
Al igual que el texto, las variables también funcionan para los campos numéricos. En el siguiente ejemplo, ${age}
es una variable de cuadro de texto en la que acepta números y, a continuación, los compara con el campo numérico de la tabla.
select * from "users" where "age" > ${age} --- wil be translated into select * from "users" where "age" > '36'
Si la variable devuelve varios valores, puede utilizarla en la in
condición de consulta de SAP HANA, como se muestra a continuación. Tenga en cuenta los corchetes que rodean la variable para que la where in
condición sea válida en 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)
Macros
-
$__timeFilter(<time_column>)
— Aplica el rango de tiempo de Grafana a la columna especificada cuando se usa en la consulta sin procesar. Aplicable a columnas de fecha, hora y hora largas. -
$__timeFilter(<time_column>, <format>)
— Igual que el anterior. Pero permite especificar el formato de la time_column almacenada en la base de datos. -
$__timeFilter(<time_column>, "epoch", <format>)
— Igual que el anterior, pero se puede usar cuando la columna de tiempo está en época. El formato puede ser 's', 'ms' y 'ns'. -
$__fromTimeFilter(<time_column>)
— Igual que el anterior, pero se puede usar cuando la columna de tiempo está en época. El formato puede ser uno de «s», «ms» y «n». -
$__fromTimeFilter(<time_column>, <comparison_predicate>)
— Igual que el anterior, pero capaz de especificar comparison_predicate. -
$__fromTimeFilter(<time_column>, <format>)
— Igual que el anterior, pero capaz de especificar el formato de la columna de tiempo. -
$__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)
— Igual que el anterior, pero capaz de especificar comparison_predicate. -
$__toTimeFilter(<time_column>)
— Devuelve la condición de tiempo basada en el tiempo de grafana sobre un campo de tiempo. -
$__toTimeFilter(<time_column>, <comparison_predicate>)
— Igual que el anterior, pero capaz de especificar comparison_predicate. -
$__toTimeFilter(<time_column>, <format>)
— Igual que el anterior, pero capaz de especificar el formato de la columna de tiempo. -
$__toTimeFilter(<time_column>, <comparison_predicate>)
— Igual que el anterior, pero capaz de especificar comparison_predicate. -
$__timeGroup(<time_column>, <interval>)
— Expande la columna de tiempo en grupos de intervalos. Aplicable a columnas de fecha, hora y hora largas.
Macro $__TimeFilter () <time_column>
En el siguiente ejemplo se explica 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>
En algunos casos, las columnas de tiempo de la base de datos se almacenan en formatos personalizados. El siguiente ejemplo explica la $__timeFilter(<time_column>,
<format>)
macro, que ayuda a filtrar las marcas de tiempo personalizadas en función del selector de tiempo de 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
En la macro, el formato puede ser uno de los formatos de HANA válidos que coincidan con tu columna de marcas de tiempo. Por ejemplo, YYYYMMDDHH24MISS
es un formato válido cuando los datos se almacenan en ese formato. 20210421162012
Macro $__TimeFilter (, «epoch») <time_column><format>
En algunos casos, las marcas de tiempo se almacenan como marcas de tiempo de época en su base de datos. El siguiente ejemplo explica la $__timeFilter(<time_column>, "epoch" <format>)
macro que ayuda a filtrar las marcas de tiempo de las épocas en función del selector de tiempo de grafana. En la macro, el formato puede ser ms, s o ns. Si no se especifica, s se considerará el formato predeterminado.
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
En lugar de usar el tercer argumento del $__TimeFilter, puede usar epoch_s, epoch_ms o epoch_ns como segundo argumento.
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")
toTimeFilterMacros $__ () y $__ () fromTimeFilter
La $__fromTimeFilter()
macro se expande a una condición sobre un campo de tiempo basado en el tiempo del selector de tiempo de Grafana.
Esto acepta tres parámetros. El primer parámetro es el nombre del campo de tiempo. Puede pasar comparison_predicate o el formato de la columna de tiempo como segundo argumento. Si quieres pasar ambos, el formato es el segundo parámetro y usa comparison_predicate como el tercer parámetro.
<format>Si no se especifica el formato, el complemento asumirá que la columna de hora es del tipo marca hora/fecha. Si su columna de tiempo está almacenada en un formato que no sea la marca de hora/fecha, pase el formato como segundo argumento. <format>puede ser epoch_s, epoch_ms, epoch_ns o cualquier otro formato personalizado como YYYY-MM-DD.
<comparison_predicate>parámetro opcional. Si no se aprueba, el complemento usará > como predicado de comparación. <comparison_predicate>puede ser uno de los siguientes: =,! =, <>, <, <=, >, >=
$__toTimeFilter()
funciona igual que fromTimeFilter $__ (). En lugar de usar el de Grafana de vez en cuando, usará el tiempo. Además, el predicado de comparación predeterminado será <.
$__TimeGroup (,) <time_column><interval>
Por ejemplo, la macro $__TimeGroup (timecol,1h) se expande a SERIES_ROUND («timecol», 'INTERVAL 1 HOUR') en la consulta.
En el siguiente ejemplo se explica la $__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
Esto se traduce en la siguiente consulta, donde $__timeGroup(timestamp,1h)
se amplía aSERIES_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
Cuando utilice la macro agrupar por con $__TimeGroup, asegúrese de que al seleccionar y ordenar por campos se le asigne el mismo nombre que al agrupar por campo. De lo contrario, es posible que HANA no reconozca la consulta.
Si no quieres codificar el intervalo en la función $__TimeGroup (), puedes dejar eso en manos de Grafana especificando $__interval como tu intervalo. Grafana calculará ese intervalo a partir del rango de tiempo del panel. Ejemplo de consulta:
SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp, $__interval) ORDER BY $__timeGroup(timestamp, $__interval) ASC
Esa consulta se traduce en la siguiente consulta en función del rango de tiempo del panel.
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
Alertas
Para configurar una alerta de SAP HANA en Grafana
-
Cree un panel de gráficos en su panel de control.
-
Cree una consulta de SAP HANA en formato de serie temporal.
-
Elija la pestaña Alerta y especifique los criterios de alerta.
-
Elija Probar regla para probar la consulta de alertas.
-
Especifique los destinatarios de la alerta, el mensaje y la gestión de errores.
-
Guarde el panel de control.
Alertas sobre datos que no son series temporales
Para enviar alertas sobre datos que no sean de series temporales, utilice la TO_TIMESTAMP('${__to:date}')
macro para convertir las métricas que no son de series temporales en series temporales. Esto convertirá la métrica en una consulta de series temporales de un solo punto. El formato de la consulta se indica a continuación
SELECT TO_TIMESTAMP('${__to:date}'), <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>
En el siguiente ejemplo, una tabla tiene cuatro campos denominados nombre de usuario, edad, ciudad y función. Esta tabla no tiene ningún campo de hora. Queremos avisar cuando el número de usuarios con el rol de desarrollador sea inferior a tres.
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'