Conecte-se a uma fonte de dados do SAP HANA - Amazon Managed Grafana

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conecte-se a uma fonte de dados do SAP HANA

O SAP HANA é um banco de dados em memória de alto desempenho que acelera decisões e\ ações baseadas em dados e em tempo real. Ele é desenvolvido e comercializado pela SAP. O plug-in de fonte de dados do SAP HANA ajuda você a conectar sua instância do SAP HANA ao Grafana.

Com o plug-in SAP HANA Grafana Enterprise, você pode visualizar seus dados do SAP HANA junto com todas as outras fontes de dados no Grafana, bem como dados de log e métricas no contexto. Esse plug-in inclui um editor de consultas integrado, suporta anotações e permite definir limites de alerta, controlar o acesso, definir permissões e muito mais.

nota

Essa fonte de dados é somente para a Grafana Enterprise. Para ter mais informações, consulte Gerencie o acesso aos plug-ins corporativos.

Além disso, em espaços de trabalho compatíveis com a versão 9 ou mais recente, essa fonte de dados pode exigir a instalação do plug-in apropriado. Para ter mais informações, consulte Amplie seu espaço de trabalho com plug-ins.

Atributos

  • Editor de consultas — O plug-in vem com um editor de consultas SQL integrado com destaque de sintaxe que permite visualizar séries temporais ou dados de tabelas e preencher automaticamente as macros básicas do Grafana.

  • Permissões da fonte de dados — Controle quem pode visualizar ou consultar dados do SAP HANA no Grafana.

  • Anotações — sobreponha eventos ou dados do SAP HANA em qualquer gráfico da Grafana para correlacionar eventos com outros dados gráficos.

  • Alertas — defina armazenamentos de métricas com base em alertas no SAP HANA.

  • Variáveis para consultas — Crie variáveis de modelo no Grafana, baseadas em dados do SAP HANA, e inclua variáveis nas consultas do SAP HANA para tornar os painéis interativos.

Adicionando a fonte de dados

  1. Abra o console do Grafana no espaço de trabalho do Amazon Managed Grafana e verifique se você está logado.

  2. No menu lateral, em Configuração (o ícone de engrenagem), escolha Fontes de dados.

  3. Escolha Adicionar fonte de dados.

    nota

    Se você não vê o link Fontes de dados no menu lateral, isso significa que seu usuário atual não tem a Admin função.

  4. Selecione SAP HANA na lista de fontes de dados.

  5. No editor Config, insira as seguintes informações:

    • Em Endereço do servidor, forneça o endereço da instância do SAP HANA. Exemplo:xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com.

    • Para a porta do servidor, forneça a porta da instância do SAP HANA.

    • Em Nome de usuário, insira o nome de usuário a ser usado para se conectar à instância do SAP HANA.

    • Em Senha, insira a senha desse usuário.

    • (Opcional) Ative Ignorar verificação de TLS se quiser ignorar a verificação de TLS.

    • (Opcional) Ative o TLS Client Auth se precisar fornecer um certificado e uma chave de cliente.

    • (Opcional) Ative com certificado CA se quiser ativar a verificação de certificados TLS autoassinados.

    • (Opcional) Em Esquema padrão, insira um esquema padrão a ser usado. Se você omitir isso, precisará especificar o esquema em cada consulta.

Acesso e permissões

Para conectar o Grafana ao SAP HANA, use credenciais dedicadas. Forneça somente as permissões necessárias ao usuário. Primeiro, crie um usuário restrito com nome de usuário e senha. A consulta a seguir é um exemplo para criar um usuário restrito. Essa consulta também desativa a alteração forçada da senha.

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

Em seguida, permita que o usuário conecte o sistema por meio de clientes como o Grafana com o seguinte:

ALTER USER <USER> ENABLE CLIENT CONNECT;

Por fim, dê ao usuário acesso às visualizações, tabelas e esquemas necessários.

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

Permissões em nível de usuário

Limite o acesso ao SAP HANA clicando na guia Permissões na página de configuração da fonte de dados para ativar as permissões da fonte de dados. Na página de permissões, os administradores podem ativar permissões e restringir as permissões de consulta a usuários e equipes específicos.

Editor de consultas

O plug-in SAP HANA Grafana vem com um editor de consultas SQL onde você pode inserir qualquer consulta do HANA. Se sua consulta retornar dados de séries temporais, você poderá formatá-los como séries temporais para visualizá-los em um painel gráfico. O editor de consultas fornece preenchimento automático para macros Grafana compatíveis e destaque de sintaxe de sua consulta SQL.

Anotações

Você pode usar as consultas do SAP HANA como fontes das anotações do Grafana. Sua consulta de anotação deve retornar pelo menos uma coluna de tempo e uma coluna de texto. Para obter mais informações sobre anotações, consulte. Anotações

Para criar anotações a partir do SAP HANA
  1. Escolha o ícone de engrenagem de configurações do painel.

  2. No menu à esquerda, escolha Anotações, Novo.

  3. No menu suspenso Fonte de dados, selecione sua instância da fonte de dados SAP HANA.

  4. No campo Consulta, insira uma consulta do SAP HANA que retorne pelo menos um campo de hora e um campo de texto.

  5. No menu suspenso Formatar como, selecione Série temporal.

  6. Para cada anotação, configure os campos De.

Modelos e variáveis

Para adicionar uma nova variável de consulta do SAP HANA, consulteAdicionando uma variável de consulta. Use sua fonte de dados SAP HANA como sua fonte de dados.

O exemplo de consulta a seguir retorna a lista distinta username de da users tabela.

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

Certifique-se de selecionar somente uma coluna em sua consulta variável. Se sua consulta retornar duas colunas, a primeira coluna será usada como valor de exibição e a segunda coluna será usada como o valor real da variável. Se sua consulta retornar mais de duas colunas, elas serão rejeitadas.

Modelos e variáveis

Você pode usar qualquer variável do Grafana em sua consulta. Os exemplos a seguir mostram como usar a variável única/múltipla na sua 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

Semelhante ao texto, as variáveis também funcionam para campos numéricos. No exemplo abaixo, ${age} é uma variável de caixa de texto em que ela aceita números e depois se compara com o campo numérico na tabela.

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

Se sua variável retornar vários valores, você poderá usá-la na in condição de consulta do SAP HANA, conforme abaixo. Observe os colchetes ao redor da variável para tornar a where in condição válida no 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 o intervalo de tempo do Grafana à coluna especificada quando usado na consulta bruta. Aplicável às colunas de data/timestamp/longa data.

  • $__timeFilter(<time_column>, <format>)— O mesmo que acima. Mas oferece a capacidade de especificar o formato da time_column armazenada no banco de dados.

  • $__timeFilter(<time_column>, "epoch", <format>)— O mesmo que acima, mas pode ser usado quando sua coluna de tempo está na época. O formato pode ser 's', 'ms' e 'ns'.

  • $__fromTimeFilter(<time_column>)— O mesmo que acima, mas pode ser usado quando sua coluna de tempo está na época. O formato pode ser 's', 'ms' e 'ns'.

  • $__fromTimeFilter(<time_column>, <comparison_predicate>)— O mesmo que acima, mas capaz de especificar comparison_predicate.

  • $__fromTimeFilter(<time_column>, <format>)— O mesmo que acima, mas capaz de especificar o formato da coluna de tempo.

  • $__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)— O mesmo que acima, mas capaz de especificar comparison_predicate.

  • $__toTimeFilter(<time_column>)— Retorna a condição de tempo com base na grafana para o tempo em um campo de tempo.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— O mesmo que acima, mas capaz de especificar comparison_predicate.

  • $__toTimeFilter(<time_column>, <format>)— O mesmo que acima, mas capaz de especificar o formato da coluna de tempo.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— O mesmo que acima, mas capaz de especificar comparison_predicate.

  • $__timeGroup(<time_column>, <interval>)— Expande a coluna de tempo em grupos de intervalos. Aplicável às colunas de data/timestamp/longa data..

Macro $__timeFilter () <time_column>

O exemplo a seguir explica a $__timeFilter(<time_column>) macro:

- 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>

Em alguns casos, as colunas de tempo no banco de dados são armazenadas em formatos personalizados. O exemplo a seguir explica a $__timeFilter(<time_column>, <format>) macro, que ajuda a filtrar carimbos de data/hora personalizados com base no seletor de hora do 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

Na macro, o formato pode ser um dos formatos HANA válidos que correspondem à sua coluna de carimbo de data/hora. Por exemplo, YYYYMMDDHH24MISS é um formato válido quando seus dados são armazenados em 20210421162012 formato.

Macro $__timeFilter (, “época”) <time_column><format>

Em alguns casos, os timestamps são armazenados como timestamps de época em seu banco de dados. O exemplo a seguir explica a $__timeFilter(<time_column>, "epoch" <format>) macro que ajuda a filtrar os timestamps de época com base no seletor de data e hora da grafana. Na macro, o formato pode ser ms, s ou ns. Se não for especificado, s será tratado como formato padrão.

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

Em vez de usar o terceiro argumento para o $__timeFilter, você pode usar um dos epoch_s, epoch_ms ou epoch_ns como seu 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")

Macros $__ fromTimeFilter () e $__ toTimeFilter ()

A $__fromTimeFilter() macro se expande para uma condição em um campo de tempo com base no seletor de tempo da Grafana a partir do horário.

Isso aceita três parâmetros. O primeiro parâmetro é o nome do campo de hora. Você pode passar comparison_predicate ou formato da coluna de tempo como segundo argumento. Se você quiser passar os dois, o formato é o segundo parâmetro e use comparison_predicate como seu terceiro parâmetro.

<format>Se o formato não for especificado, o plug-in assumirá que a coluna de hora é do tipo timestamp/data. Se sua coluna de hora estiver armazenada em qualquer outro formato que não seja timestamp/data, transmita o formato como segundo argumento. <format>pode ser um dos epoch_s, epoch_ms, epoch_ns ou qualquer outro formato personalizado como YYYY-MM-DD.

<comparison_predicate>parâmetro opcional. Se não for aprovado, o plugin usará > como predicado de comparação. <comparison_predicate>pode ser um dos =,! =, <>, <, <=, >, >=

$__toTimeFilter()funciona da mesma forma que $__ fromTimeFilter (). Em vez de usar o Grafana de vez em quando, ele usará o tempo. Além disso, o predicado de comparação padrão será <.

$__timeGroup (,) <time_column><interval>

Por exemplo, a macro $__timeGroup (timecol,1h) é expandida para SERIES_ROUND (“timecol”, 'INTERVAL 1 HOUR') na consulta.

O exemplo a seguir explica o $__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

Isso é traduzido na consulta a seguir, onde $__timeGroup(timestamp,1h) é expandido paraSERIES_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

Ao usar agrupar por com a macro $__timeGroup, certifique-se de que seus campos de seleção e classificação por sigam o mesmo nome do campo agrupar por. Caso contrário, o HANA pode não reconhecer a consulta.

Se você não quiser codificar o intervalo na função $__timeGroup (), você pode deixar isso para Grafana especificando $__interval como seu intervalo. Grafana calculará esse intervalo a partir do intervalo de tempo do painel. Exemplo 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

Essa consulta é traduzida na consulta a seguir com base no intervalo de tempo do painel.

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

Geração de alertas

Para configurar um alerta do SAP HANA na Grafana
  1. Crie um painel gráfico em seu painel.

  2. Crie uma consulta SAP HANA em formato de série temporal.

  3. Escolha a guia Alerta e especifique os critérios de alerta.

  4. Escolha Testar regra para testar a consulta de alerta.

  5. Especifique os destinatários do alerta, a mensagem e o tratamento de erros.

  6. Salve o painel.

Alertas sobre dados que não são de série temporal

Para alertar sobre dados que não sejam séries temporais, use a TO_TIMESTAMP('${__to:date}') macro para transformar métricas que não sejam séries temporais em séries temporais. Isso converterá sua métrica em uma consulta de série temporal de ponto único. O formato da consulta é fornecido abaixo

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

No exemplo a seguir, uma tabela tem quatro campos chamados nome de usuário, idade, cidade e função. Essa tabela não tem nenhum campo de horário. Queremos notificar quando o número de usuários com função de desenvolvedor for menor que três.

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'