Hoje mostrar como criar um dashboard no Grafana, através de uma consulta SQL no banco de dados.
Antes de avançarmos é necessário configurar o DATASOURCE para a conexão com o banco.
Clique no ícone lateral e selecione a opção (Data Sources).
Clique no botão Add data source Informe um nome para o data source, selecione o tipo e os dados para a conexão.
É importante que defina um nome que identifique a base de dados, pois será utilizado posteriormente.
No exemplo, estou usando conexão com o Banco MySQL.
Ao salvar, observe que o Grafana fará um teste de conexão, e vai exibir uma mensagem indicando que foi conectado com sucesso. Se a mensagem for de erro revise os dados de conexão.
Será listado todos os data sources configurados.
Vamos ao Dashboard!
Escolha o tipo de dashboard que deseja incluir, estou usando (Table)
Agora clique na opção ao lado do título e em Edit.Informe o título do Dashboard e descrição
Agora clique na aba Metrics, selecione o Data Source e insira o comando SQL, observe que será exibido uma tabela de acordo o SQL criado.
Ainda não crie as condições do WHERE, criaremos logo em seguida na etapa das variáveis.
Obs.: Criei um SQL apenas para demonstrar o processo de criação.
SELECT
DATE_FORMAT(a.dt_entrada,’%m/%Y’) dt_mes
,CASE MONTHNAME(a.dt_entrada)
WHEN ‘January’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Janeiro”)
WHEN ‘February’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Fevereiro”)
WHEN ‘March’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Março”)
WHEN ‘April’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Abril”)
WHEN ‘May’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Maio”)
WHEN ‘June’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Junho”)
WHEN ‘July’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Julho”)
WHEN ‘August’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Agosto”)
WHEN ‘September’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Setembro”)
WHEN ‘October’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Outubro”)
WHEN ‘November’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Novembro”)
WHEN ‘December’ THEN DATE_FORMAT(a.dt_entrada, “%Y/Dezembro”)
END AS dt_mes_extenso
,COUNT(*) qtde_atde
,COUNT(*) -1 qtde_alta
,( (COUNT(*) -1) / COUNT(*) * 100) pct_altas
, ‘300000,00’ vl_previsto
, ‘220000,00’ vl_faturado
,ROUND( ‘220000,00’ / ‘300000,00’ * 100 ,2) pct_faturado
FROM
beind_atendimento a
GROUP BY DATE_FORMAT(a.dt_entrada,’%m/%Y’)
ORDER BY DATE_FORMAT(a.dt_entrada,’%Y’) DESC , DATE_FORMAT(a.dt_entrada,’%m’) DESC
Na aba Options, podemos definir a quantidade de linhas por página e habilitar ou desabilitar o Scroll da página.
Na aba Column Styles, podemos personalizar os nomes das colunas, cor, tipo de valor, máscara entre outros. veja o exemplo abaixo.
Defina o nome para cada coluna.
Lembre de salvar o dashboard para evitar a perda.
A primeira parte está pronta. Agora vamos incluir a opção de filtro(variáveis).
Após abrir o Dashboard, clique sem settings:
Clique em Variables, e Add Variable
Agora defina um nome, label, tipo, data source, ordenação e clique em add.
Exemplo 1: (fixo)
Exemplo 2: (buscando dados do banco / datasource)
Crie quantas variáveis precisar.
Teremos o seguinte resultado:
Em seguida vamos editar o dashboard para incluir a passagem da(s) variáveis.
Vamos editar o SQL incluindo a passagem da variável.
WHERE DATE_FORMAT(a.dt_entrada,’%Y’) = $ano
Pronto seu dashboard será dinâmico de acordo a seleção da variável.
Se você acabou de instalar o Grafana leia o post: http://blog.fabianobento.com.br/2018/05/primeiros-passos-apos-instalacao-grafana/
http://blog.fabianobento.com.br/2018/05/primeiros-passos-apos-instalacao-grafana/
Ola, estou tentando configurar o datasourcer no grafana, como localhost:1434 (telnet passa) porém sempre dá o erro abaixo.
Unable to open tcp connection with host ‘localhost:1434’: dial tcp 127.0.0.1:1434: connect: connection refused
o fw e antivirus estão todos desativados. Pode me ajudar?
Olá Alexandre, o banco de dados está local na mesma máquina que o Grafana? Se estiver, tente usar o endereço IP do computador ou até mesmo o nome do computador.
Gostei, muito das dicas.
Fiz umas pesquisas encontrei vários Dashboard e até baixei alguns do Windows Server e Linux. Gostaria de saber, como posso criar Dashboard de Mikrotik, pois não encontrei nenhum com as informações de configuração do Mikrotik.
Gostaria de saber se é possível disponibilizar um Dashboard para Mikrotik.
Claudio obrigado pela visita.
Veja no link oficial como criar um Plugin; https://grafana.com/resources/getting-started-with-plugins
Muito obrigado por compartilhar seu conhecimento de maneira tão objetiva.
Foi de grande valia pra mim.
Parabéns!!!
Boa noite estou com problema de integração do grafana com meu banco de dados com my sql teria como fazer isso passo a passo, obrigado.
Allan,
Você deverá revisar o IP e senha de conexão com o banco.
Caso este usando um banco de dados online, veja o post http://blog.fabianobento.com.br/2019/12/como-liberar-acesso-remoto-mysql-atraves-do-cpanel/
onde explico como fazer a liberação do acesso remoto ao MySQL.
Boa tarde!
Tenho alguns bancos SQL como datasources porem não consigo criar graficos (pizza, barra, temperatura…) com algumas queries , apenas consigo em forma de tabela
Muito obrigado por compartilhar seu conhecimento, to querendo saber como fazer dashboards no grafana usando o sheets como fonte de dados?
Olá Marcos, Até o momento não usei nenhum tipo de planilha.
Olá, bom dia!
Galera estou com uma dúvida sobre a aplicação do Grafana de uma variável por select não estou conseguindo colocar ela para pegar múltiplos valores e deixar ela com o geral somente fica com um valor.
——– O Select que usei para retornar os setores
Select CCT.NM_CCUSTO AS SETOR FROM HISTMANU Left Join veiculo vcl on histmanu.CD_VEICULO = vcl.CD_VEICULO Left Join TPEQUIP tpe on vcl.CD_TPEQUIP = tpe.CD_TPEQUIP Left Join Ccusto cct on vcl.CD_CCUSTO = cct.CD_CCUSTO
—— O Select usado que queria verificar a variável realizando o filtro com múltiplos setores e o all(Todos os Setores) só que está gerando o problema quando coloco mais de um valor ou o all
SELECT
SYSDATETIME() as time,
CCT.NM_CCUSTO as metric,
count(DISTINCT NR_ORDSERV)
FROM HISTMANU
Left Join veiculo vcl on histmanu.CD_VEICULO = vcl.CD_VEICULO
Left Join Ccusto cct on vcl.CD_CCUSTO = cct.CD_CCUSTO
WHERE DH_SAIDA is null
AND DH_ENTRADA IS NOT NULL
AND CCT.NM_CCUSTO = ${Setor}
GROUP BY CCT.NM_CCUSTO
ORDER BY count(DISTINCT NR_ORDSERV) DESC
Tenho as imagens, mas, não temo como anexar.