PostgreSQL (núcleo) - 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á.

PostgreSQL (núcleo)

Você pode usar a fonte de dados PostgreSQL para consultar e visualizar dados de seus bancos de dados PostgreSQL do Amazon Aurora.

Importante

A versão 8 do Grafana altera a estrutura de dados subjacente dos quadros de dados das fontes de dados Postgres, MySQL e Microsoft SQL Server. Como resultado, o resultado de uma consulta de série temporal é retornado em um formato amplo. Para obter mais informações, consulte Formato amplo na documentação dos quadros de dados da Grafana. Para que suas visualizações funcionem como antes da versão 8, talvez seja necessário fazer algumas migrações manuais. Uma solução está documentada no Github em Postgres/MySQL/MSSQL: alteração significativa na v8.0 relacionada a consultas de séries temporais e ordenação da coluna de dados.

Na versão 9 do Grafana, a fonte de dados do PostgreSQL configura o certificado raiz para se conectar ao seu banco de dados de forma diferente das versões anteriores. Se você atualizar seu espaço de trabalho da versão 8 para a 9, talvez seja necessário alterar a forma como você se conecta. Consulte Solução de problemas com espaços de trabalho atualizados para obter mais informações.

Adicionando a fonte de dados

  1. Abra o menu lateral escolhendo o ícone Grafana no cabeçalho superior.

  2. No menu lateral, abaixo do ícone Configuração, você deve encontrar um link de fontes de dados.

  3. Escolha o botão + Adicionar fonte de dados no cabeçalho superior.

  4. Selecione PostgreSQL na lista suspensa Tipo.

Opções de fonte de dados

Nome Descrição
Name O nome da fonte de dados. É assim que você vê a fonte de dados em painéis e consultas.
Default A fonte de dados padrão significa que ela será pré-selecionada para novos painéis.
Host O endereço IP/nome do host e a porta opcional da sua instância do PostgreSQL. Não inclua o nome do banco de dados. A cadeia de conexão para conexão com o Postgres não estará correta e causará erros.
Database Nome do seu banco de dados PostgreSQL.
User Login/nome de usuário do banco de dados.
Password Senha do usuário do banco de dados
SSL Mode Essa opção determina se ou com qual prioridade uma conexão SSL TCP/IP segura será negociada com o servidor.
Max open O número máximo de conexões abertas com o banco de dados, padrão unlimited (Grafana v5.4+).
Max idle O número máximo de conexões no pool de conexões ociosas, padrão 2 (Grafana v5.4+).
Max lifetime O tempo máximo em segundos em que uma conexão pode ser reutilizada, padrão 14400 /4 horas (Grafana v5.4+).
Version Essa opção determina quais funções estão disponíveis no construtor de consultas (disponível apenas no Grafana 5.3+).
TimescaleDB O TimescaleDB é um banco de dados de séries temporais construído como uma extensão do PostgreSQL. Se ativado, o Grafana usará time_bucket na $__timeGroup macro e exibirá funções agregadas específicas do TimescaleDB no construtor de consultas (disponível apenas no Grafana 5.3+).

Intervalo de tempo mínimo

Um limite inferior para as $_interval $_interval_ms variáveis. É recomendável definir a frequência de gravação, por exemplo, 1m se seus dados forem gravados a cada minuto. Essa opção também pode ser substituída/configurada em um painel de painel nas opções de fonte de dados. Esse valor deve ser formatado como um número seguido por um identificador de tempo válido; por exemplo, 1m (1 minuto) ou 30s (30 segundos). Os seguintes identificadores de horário são suportados.

Identificador Description
y Ano
M Mês
w Semana
d Dia
h Hora
m Minuto
s Segundo
ms Milissegundo

Permissões de usuário do banco de

Importante

O usuário do banco de dados que você especifica ao adicionar a fonte de dados só deve receber permissões SELECT no banco de dados e nas tabelas especificados que você deseja consultar. Grafana não valida se a consulta é segura. A consulta pode incluir qualquer instrução SQL. Por exemplo, declarações como DELETE FROM user; e DROP TABLE user; seriam executadas. Para se proteger contra isso, é altamente recomendável que você crie um usuário específico do PostgreSQL com permissões restritas.

O código de exemplo a seguir mostra a criação de um usuário específico do PostgreSQL com permissões restritas.

CREATE USER grafanareader WITH PASSWORD 'password'; GRANT USAGE ON SCHEMA schema TO grafanareader; GRANT SELECT ON schema.table TO grafanareader;

Certifique-se de que o usuário não receba nenhuma permissão indesejada da função pública.

Editor de consultas

Você encontra o editor de consultas PostgreSQL na guia de métricas no modo de edição do painel Graph ou Singlestat. Você entra no modo de edição escolhendo o título do painel e depois editando.

O editor de consultas tem um link SQL gerado que aparece após a execução de uma consulta, no modo de edição do painel. Escolha-a e ela se expandirá e mostrará a string SQL bruta interpolada que foi executada.

Selecione tabela, coluna de tempo e coluna métrica (DE)

Quando você entra no modo de edição pela primeira vez ou adiciona uma nova consulta, o Grafana tenta pré-preencher o construtor de consultas com a primeira tabela que tem uma coluna de carimbo de data/hora e uma coluna numérica.

No campo FROM, o Grafana sugerirá tabelas que estão no campo do usuário do banco search_path de dados. Para selecionar uma tabela ou visualização que não esteja na sua, search_path você pode inserir manualmente um nome totalmente qualificado (schema.table), como. public.metrics

O campo da coluna Hora se refere ao nome da coluna que contém seus valores de tempo. Selecionar um valor para o campo Coluna métrica é opcional. Se um valor for selecionado, o campo Coluna métrica será usado como nome da série.

As sugestões de coluna métrica conterão somente colunas com um tipo de dados de texto (char, varchar, text). Para usar uma coluna com um tipo de dados diferente como coluna métrica, você pode inserir o nome da coluna com um elenco:ip::text. Você também pode inserir expressões SQL arbitrárias no campo da coluna métrica que sejam avaliadas como um tipo de dados de texto, comohostname || ' ' || container_name.

Funções de colunas, janelas e agregação (SELECT)

Na SELECT linha, você pode especificar quais colunas e funções deseja usar. No campo da coluna, você pode escrever expressões arbitrárias em vez de um nome de coluna, comocolumn1 * column2 / column3.

As funções disponíveis no editor de consultas dependem da versão do PostgreSQL que você selecionou ao configurar a fonte de dados. Se você usar funções agregadas, deverá agrupar seu conjunto de resultados. Se você adicionar uma função agregada, o editor adicionará automaticamente umaGROUP BY time.

O editor tenta simplificar e unificar essa parte da consulta.

Você pode adicionar mais colunas de valor escolhendo o botão de adição e selecionando Coluna no menu. Várias colunas de valores serão plotadas como séries separadas no painel gráfico.

Filtrando dados (ONDE)

Para adicionar um filtro, escolha o ícone de adição à direita da WHERE condição. Você pode remover filtros escolhendo o filtro e selecionando Remover. Um filtro para o intervalo de tempo selecionado atualmente é adicionado automaticamente às novas consultas.

Agrupar por

Para agrupar por hora ou qualquer outra coluna, escolha o ícone de adição no final da linha AGRUPAR POR. A lista suspensa de sugestões mostrará somente as colunas de texto da tabela atualmente selecionada, mas você pode inserir manualmente qualquer coluna. Você pode remover o grupo escolhendo o item e selecionando Remover.

Se você adicionar qualquer agrupamento, todas as colunas selecionadas deverão ter uma função agregada aplicada. O criador de consultas adicionará automaticamente funções agregadas a todas as colunas sem funções agregadas quando você adicionar agrupamentos.

Preenchimento de lacunas

O Amazon Managed Grafana pode preencher valores ausentes quando você agrupa por horário. A função time aceita dois argumentos. O primeiro argumento é a janela de tempo pela qual você deseja agrupar e o segundo argumento é o valor com o qual você deseja que o Grafana preencha os itens ausentes.

Modo de editor de texto (RAW)

Você pode alternar para o modo de editor de consultas brutas escolhendo o ícone de hambúrguer e selecionando Alternar modo de editor ou escolhendo Editar SQL abaixo da consulta.

nota

Se você usar o editor de consultas brutas, certifique-se de que sua consulta tenhaORDER BY time, no mínimo, um filtro no intervalo de tempo retornado.

Macros

As macros podem ser usadas em uma consulta para simplificar a sintaxe e permitir partes dinâmicas.

Exemplo de macro Descrição
$__time(dateColumn) Será substituída por uma expressão para converter em um carimbo de data/hora UNIX e renomear a coluna para. time_sec Por exemplo, UNIX_TIMESTAMP (DateColumn) como time_sec.
$__timeEpoch(dateColumn) Será substituída por uma expressão para converter em um carimbo de data/hora UNIX e renomear a coluna para. time_sec Por exemplo, UNIX_TIMESTAMP (DateColumn) como time_sec.
$__timeFilter(dateColumn) Será substituído por um filtro de intervalo de tempo usando o nome da coluna especificada. Por exemplo, DateColumn BETWEEN FROM_UNIXTIME (1494410783) E FROM_UNIXTIME (1494410983).
$__timeFrom() Será substituído pelo início da seleção de horário atualmente ativa. Por exemplo, FROM_UNIXTIME (1494410783).
$__timeTo() Será substituído até o final da seleção de horário atualmente ativa. Por exemplo, FROM_UNIXTIME (1494410983).
$__timeGroup(dateColumn,'5m') Será substituída por uma expressão utilizável na cláusula GROUP BY. Por exemplo, cast (cast (UNIX_TIMESTAMP (DateColumn)/(300) como assinado) 300 como assinado), *
$__timeGroup(dateColumn,'5m', 0) Igual à linha anterior, mas com um parâmetro de preenchimento, os pontos ausentes nessa série serão adicionados por grafana e 0 será usado como valor.
$__timeGroup(dateColumn,'5m', NULL) O mesmo que acima, mas NULL será usado como valor para pontos faltantes.
$__timeGroup(dateColumn,'5m', previous) O mesmo que acima, mas o valor anterior dessa série será usado como valor de preenchimento se nenhum valor tiver sido visto ainda. NULL será usado (disponível apenas na Grafana 5.3+).
$__timeGroupAlias(dateColumn,'5m') Será substituído de forma idêntica a $__timeGroup, mas por um alias de coluna adicionado
$__unixEpochFilter(dateColumn)

Será substituído por um filtro de intervalo de tempo usando o nome da coluna especificado com horários representados como timestamp Unix. Por exemplo, *DateColumn > 1494410783 AND DateColumn < 1494497183*

$__unixEpochFrom()`

| Será substituído pelo início da seleção de hora atualmente ativa como timestamp Unix. Por exemplo, *1494410783*

$__unixEpochTo()

Será substituído pelo final da seleção de hora atualmente ativa como timestamp Unix. Por exemplo, *1494497183*

$__unixEpochNanoFilter(dateColumn)

Será substituído por um filtro de intervalo de tempo usando o nome da coluna especificado com horários representados como timestamp de nanossegundos. Por exemplo, *DateColumn > 1494410783152415214 AND DateColumn < 1494497183142514872*

$__unixEpochNanoFrom()

Será substituído pelo início da seleção de tempo atualmente ativa como timestamp de nanossegundos. Por exemplo, *1494410783152415214*
$__unixEpochNanoTo()

Será substituído pelo final da seleção de tempo atualmente ativa como timestamp de nanossegundos. Por exemplo, *1494497183142514872*

$__unixEpochGroup(dateColumn,"5m", [fillmode])

O mesmo que $__timeGroup, mas para horários armazenados como timestamp Unix.

Consultas de tabela

Se a opção de consulta estiver definida como Formatar como tabela, você poderá fazer basicamente qualquer tipo de consulta SQL. O painel da tabela mostrará automaticamente os resultados das colunas e linhas retornadas pela consulta.

Você pode controlar o nome das colunas do painel Tabela usando a sintaxe de seleção de coluna as SQL normal.

Consultas de séries temporais

Se você definir Formato como paraTime series, para uso em um painel gráfico, por exemplo, a consulta deverá retornar uma coluna chamada time que retorne uma data e hora SQL ou qualquer tipo de dados numéricos representando a época do Unix. Qualquer coluna, exceto time e metric é tratada como uma coluna de valor. Você pode retornar uma coluna chamada metric que é usada como nome métrico para a coluna de valor. Se você retornar várias colunas de valor e uma coluna chamadametric, essa coluna será usada como prefixo para o nome da série.

Os conjuntos de resultados das consultas de séries temporais devem ser classificados por tempo.

O código de exemplo a seguir mostra uma metric coluna.

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

O exemplo de código a seguir mostra o uso do parâmetro fill na macro $__timeGroup para converter valores nulos em zero.

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

O código de exemplo a seguir mostra várias colunas.

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

Modelagem

Em vez de codificar itens como nome do servidor, do aplicativo e do sensor em suas consultas métricas, você pode usar variáveis em seu lugar. As variáveis são mostradas como caixas de seleção suspensas na parte superior do painel. Você pode usar essas caixas suspensas para alterar os dados exibidos em seu painel.

Para obter mais informações sobre modelos e variáveis de modelo, consulteModelos.

Variável de consulta

Se você adicionar uma variável de modelo do tipoQuery, poderá escrever uma consulta PostgreSQL que possa retornar itens como nomes de medidas, nomes de chave ou valores de chave que são mostrados como uma caixa de seleção suspensa.

Por exemplo, você pode ter uma variável que contém todos os valores da hostname coluna em uma tabela se especificar uma consulta como essa na configuração Consulta da variável de modelagem.

SELECT hostname FROM host

Uma consulta pode retornar várias colunas e o Grafana criará automaticamente uma lista a partir delas. Por exemplo, a consulta a seguir retornará uma lista com valores de hostname hostname2 e.

SELECT host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city

Para usar macros dependentes do intervalo de tempo, como $__timeFilter(column) em sua consulta, o modo de atualização da variável do modelo deve ser definido como On Time Range Change.

SELECT event_name FROM event_log WHERE $__timeFilter(time_column)

Outra opção é uma consulta que pode criar uma variável chave/valor. A consulta deve retornar duas colunas com o nome __text __value e. O valor da __text coluna deve ser exclusivo (se não for exclusivo, o primeiro valor será usado). As opções na lista suspensa terão um texto e um valor que permitem que você tenha um nome amigável como texto e um id como valor. Um exemplo de consulta com hostname o texto e id o valor:

SELECT hostname AS __text, id AS __value FROM host

Você também pode criar variáveis aninhadas. Usando uma variável chamadaregion, você pode fazer com que a variável hosts mostre somente os hosts da região selecionada atualmente. O exemplo de código a seguir mostra uma consulta como essa (se region for uma variável de vários valores, use o operador de IN comparação em vez de = comparar com vários valores).

SELECT hostname FROM host WHERE region IN($region)

Usando __searchFilter para filtrar resultados na variável de consulta

Usar __searchFilter no campo de consulta filtrará o resultado da consulta com base no que o usuário digita na caixa de seleção suspensa. Quando nada foi inserido pelo usuário, o valor padrão __searchFilter é%.

nota

É importante que você coloque a __searchFilter expressão entre aspas, pois o Grafana não faz isso por você.

O exemplo a seguir mostra como usar __searchFilter como parte do campo de consulta para permitir a pesquisa hostname enquanto o usuário digita na caixa de seleção suspensa.

SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter'

Usando variáveis em consultas

Os valores das variáveis do modelo só são citados quando a variável do modelo é a. multi-value

Se a variável for uma variável de vários valores, use o operador de IN comparação em vez de = comparar com vários valores.

Há duas sintaxes:

$<varname>Exemplo com uma variável de modelo chamadahostname:

SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC

[[varname]]Exemplo com uma variável de modelo chamadahostname:

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

Desativando a cotação para variáveis de vários valores

O Amazon Managed Grafana cria automaticamente uma string entre aspas e separada por vírgula para variáveis de vários valores. Por exemplo: se server01 e server02 for selecionado, ele será formatado como:'server01', 'server02'. Para desativar a citação, use a opção de formatação csv para variáveis.

${servers:csv}

Para obter mais informações sobre as opções de formatação de variáveis, consulteModelos e variáveis.

Anotações

Use anotações para sobrepor informações ricas sobre eventos aos gráficos. Você adiciona consultas de anotação por meio do menu Dashboard /Visualização de anotações. Para ter mais informações, consulte Anotações.

O código de exemplo a seguir mostra uma consulta usando uma coluna de tempo com valores de época.

SELECT epoch_time as time, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

O código de exemplo a seguir mostra uma consulta de região usando colunas de hora e fim de tempo com valores de época.

nota

Isso está disponível apenas no Grafana v6.6+.

SELECT epoch_time as time, epoch_time_end as timeend, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

O código de exemplo a seguir mostra uma consulta usando uma coluna de hora do tipo de dados SQL nativo de data/hora.

SELECT native_date_time as time, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__timeFilter(native_date_time)
Nome Descrição
time O nome do campo de data/hora. Pode ser uma coluna com um tipo de dados SQL nativo de data/hora ou valor de época.
timeend Nome opcional do campo de data/hora de término. Pode ser uma coluna com um tipo de dados SQL nativo de data/hora ou valor de época (Grafana v6.6+).
text Campo de descrição do evento.
tags Nome de campo opcional a ser usado para tags de eventos como uma string separada por vírgula.

Geração de alertas

As consultas de séries temporais devem funcionar em condições de alerta. As consultas formatadas em tabela ainda não são suportadas em condições de regras de alerta.