Gestão de Indicadores/Métricas com Grafana

Um dos principais motivos pelo qual tentamos padronizar a gestão de serviços como um todo é para gerar indicadores relevantes que nos apoiarão na análise, planejamento e tomada de decisão. Pessoal, sem um controle eficaz, a tendência é que trabalhemos em meio ao caos, com mais pressão, sem priorização, sem expectativas e com decisões sendo tomadas de forma ineficientes e/ou intempestivas.

Por isso é essencial termos um acompanhamento gerencial e em tempo real do nosso dia a dia e, para isso, apresento-lhes o Grafana.

Você já ouviu falar sobre Grafana?

Se ainda não, vamos lá. O Grafana é uma excelente solução gratuita e de código aberto para gestão de métricas e indicadores. Ela vem ganhando cada vez mais adoção, especialmente no universo de software livre, pois sua estrutura leve e multi data source oferece uma flexibilidade incrível para quem a utiliza, possuindo integração com diversas soluções famosas, como Zabbix, MySQL, GLPI, PostgreSQL, GoogleCalendar, InfluxDB e muito mais. A lista é significativa.

Outra grande vantagem do Grafana é sua comunidade rica e participativa. Seus desenvolvedores fazem questão de documentar bastante coisa, além de serem bem ativos nos fóruns juntamente com milhares de usuários ao redor do mundo. É muito fácil conseguir ajuda quando nos deparamos com algum problema.

A instalação é muito simples e pode ser feita em diversas distribuições Linux, em Docker, no Windows ou em MAC/OS. Confere aqui os manuais oficiais de instalação em todas essas plataformas.

O objetivo deste artigo é dar um overview da ferramenta para vocês terem uma ideia de seu potencial, entretanto, não entrarei nos detalhes, pois estou preparando um material completo que estará disponível em breve, indo desde a instalação, configuração até a criação de relatórios e dashboards personalizados. Confere só um dashboard simples que montei a partir da integração com MySQL e GLPI: DASHBOARD DE CHAMADOS  –  GRAFANA

Vamos, então, conferir o que é preciso para começar a trabalhar com o Grafana.

As integrações do Grafana são em forma de plugin. Para instalar, basta seguir o manual clicando aqui. Certifique-se que os plugins desejados estão instalados clicando em Configuration > Plugins

0_K2f8RBd-uF2rCwdo

0__SD_wF66U5nOzFbH

0_Su2I8Kr0S--NuUQV

0_KXl9am2vcylWk8LI

Após a instalação do plugin, é necessário configurar os data sources (fonte de dados). Para isso, devemos ir em Configuration > Data Sources. Segue orientações para instalação dos plugins que vamos demonstrar: MySQL, GLPI e ZABBIX.

0_7UjD4QGH8MzrYjJA

Com os data sources configurados, já podemos começar a criar os dashboards imediatamente! Clique em Create > Dashboard, depois em Add Panel e por fim em Graph

0_9-WUqrVDqp-70-bQ

0_eWNUoVyLhs3x79n7

Para criar um gráfico de evolução histórica de chamados abertos mês a mês (imagem acima), poderíamos utilizar o plugin MySQL, selecionando o data source configurado e inserindo a query que montamos, conforme abaixo:

0_RQPrFmu-Z6v5eSHi

 SELECT UNIX_TIMESTAMP(date) as time_sec,
 CASE
 WHEN month(date) = 1 THEN ‘Janeiro’
 WHEN month(date) = 2 THEN ‘Fevereiro’
 WHEN month(date) = 3 THEN ‘Março’
 WHEN month(date) = 4 THEN ‘Abril’
 WHEN month(date) = 5 THEN ‘Maio’
 WHEN month(date) = 6 THEN ‘Junho’
 WHEN month(date) = 7 THEN ‘Julho’
 WHEN month(date) = 8 THEN ‘Agosto’
 WHEN month(date) = 9 THEN ‘Setembro’
 WHEN month(date) = 10 THEN ‘Outubro’
 WHEN month(date) = 11 THEN ‘Novembro’
 WHEN month(date) = 12 THEN ‘Dezembro’
 ELSE ‘Indefinido’
 END as metric,
 count(month(date)) as value
 FROM glpi_tickets
GROUP BY 1,2

0_5Hc4I4LOLuyoYWzt

Para criar um indicador de chamados que excederam o prazo do SLA (imagem ao lado), poderíamos utilizar um gráfico do tipo Singlestat e o data source proveniente do plugin do GLPI. Uma vantagem desse plugin é o fato de não ser necessário escrever consultas em SQL, pois ele utiliza a URL que o próprio GLPI gera quando montamos um filtro dentro da ferramenta.

0_i8NOjQNvRisBQ2Pr

Ao fazer esse filtro, o GLPI gerou a URL no próprio navegador, a qual posso copiar e colar dentro do Grafana e automaticamente o gráfico será gerado.

0_VRjdRxulyCw7qXbb

0_ZJSRFuPco-D5xR8A

Para criar um gráfico de utilização em disco (conforme acima), podemos utilizar o plugin do Zabbix, selecionando o data source e escolhendo variáveis desejadas.

0_L-wMhv2jCx05txtk

Pessoal, o mais legal do Grafana é a possibilidade de reunir indicadores de várias fontes diferentes. Os três exemplos que demonstrei acima poderiam estar num só dashboard. As possibilidades que isso oferece para a gestão são imensas, pois um gerente de um centro de suporte poderia, por exemplo, ter um dashboard em uma televisão que demonstrasse as principais métricas do atendimento via telefone, chat, ferramenta de chamados e ferramenta de monitoramento. Tudo numa só visão!

Como expliquei anteriormente, a intenção era apenas dar uma visão geral, além do que mostrei, o Grafana possui diversas outras funcionalidades, como:

  • Filtros;
  • Alertas automáticos com base em gatilhos;
  • Variáveis;
  • Links entre dashboards ou url externa;
  • Criação de times;
  • Permissionamento;
  • Anotações;
  • Manipulação de eixos e legendas;
  • Playlist;
  • Versionamento de paineis;
  • Autenticação LDAP;
  • Exportação e importação em JSON;
  • e muito mais!

Estou preparando um material detalhado sobre o Grafana voltado para gestão de serviços. 

Fiquem ligados! E até lá, não deixem de conferir esse artigo onde apresento diversas soluções gratuitas para gestão de serviços.

Por hoje é só.
Um abraço e até a próxima!

Kedson Alves

Mais artigos deste autor »

Especialista ITSM e entusiasta de TI | Há anos escutando vários “dá só uma olhadinha no meu computador”.

Outros artigos no meu blog:
https://medium.com/simplificando-ti

linkedin.com/in/kedsonalves


29 Comentários

Ricardo Albuquerque
1

Muito bom! Não acredite em frases do tipo: “Se software livre é tão bom, por que é gratuito?” Quem diz isso parece não entender o movimento.

Kedson Alves
4

@Eric, desculpe a demora.
No CentOS fica em /etc/httpd/conf.
Você também pode pesquisar com o find a partir da raiz:
“find / -iname ‘httpd.conf'”

Jefferson
5

Primeiramente parabéns pelo artigo.
Estamos iniciando o uso do grafana com GLPI, porém estamos tendo alguns problemas com a falta de documentação de como usar e configurar de forma apropriada cada tipo de dashboard.
Outro problema que estamos enfrentando é quando, ao usar o valor de determinado campo, por exemplo, técnico responsável, o grafana exibe o nome do tecnico juntamento com a tag html retornado pela API.
Teve este tipo de problema? Caso sim, como contornar?

Kedson Alves
6

Olá Jefferson.
Realmente há muita carência de documentação referente a indicadores.
Quanto ao dado trazido pela API, já enfrentei esse problema sim, mas devido as diversas limitações da API, resolvi construir tudo através de queries com um datasource mysql.
Tenho bastante consultas que podem te ajudar. Me aciona no e-mail que te envio.

Davi
7

Parabéns pelo artigo.
Já tenho o grafana coletando dados do Zabbix e realmente ele cria diversos dashboard personalizados.
Mas estou num impasse que é sobre criação de relatórios e agendamento de envio automaticamente.
Saberiam me dizer uma opção para isso?
Desde já muito obrigado.

Marcio Fornari
8

Olá, acabei caindo nesse seu artigo. Show de bola!
Eu estou querendo saber se é possível eu monitorar outras métricas com o GRAFANA, como por exemplo uma evolução de vendas por Vendedor. Como no primeiro gráfico os Meses seriam os Vendedores e o valor o quanto eles venderam.
Percebi que o Eixo X do Grafana é sempre em formato de TIME, será que teria a possibilidade de mudar isso? Estava pensando em criar uma copia desse plugin e tentar alterar o código fonte para o que eu preciso, porém to com pressentimento que não vai ser fácil.

Robson Oliveira
9

Kedson, no Grafana é possivel criar algum tipo de mensagem (tipo Running with no issues,etc…) ou imagem que apareceria quando não há alertas vindo do Zabbix?

Kedson Alves
10

@Davi, não existe nada nativo com essa funcionalidade no Grafana, mas algumas pessoas já conseguiram fazer, por exemplo: https://www.bujarra.com/generando-informes-con-grafana-y-programar-su-envio/?lang=en
@Marcio, depende de qual a fonte de dados a ser utilizada. Se for um banco mysql sem problemas, se for outro banco, você vai precisar verificar se existe plugin de conexão com esse banco, ou utilizar uma ferramenta para tratar os dados e entregar ao grafana, como o Elastic Search.
Editar o código realmente é a opçao mais trabalhosa.
@Robson, é possível fazer algo assim no painel Singlestat, na aba Value Mappings, onde você pode colocar uma msg de texto com base no valor retornado.
Exemplo: null -> NO ISSUES

Douglas
11

Artigo Top Kedson! Parabéns!
Amigo, a empresa que trabalho esta querendo utilizar o grafana para desenvolver um projeto gigantesco em BI.
Qual sua opnião? A ferramenta possui ETL? Ambiente DataWarehouse? Faço pós em BI, e estou orientando eles a utilizarem uma ferramenta Self-Service, no caso o Power BI.

Andre
12

Boa tarde,
Encontrei teu tutorial na internet e achei demais, bem o que eu preciso para mostrar estatisticas de atendimento de um sistema de chamado próprio, porém estou com uma grande dúvida que é referente ao “GRAPH”, fiz minha consulta em meu banco e fiz mostrar no “TABLE” tudo que eu preciso, porém quando eu tenho no “GRAPH” nada mostra. Qual é a magica ?

Kedson Alves
13

@Douglas, não recomendo para BI. O Grafana é uma ferramenta de dashboard e relatórios simples. É ótimo para indicadores em tempo real, para paineis a serem expostos na TV, para métricas que precisam ser acompanhadas rotineiramente, etc. Entretanto, para processamentos pesados ou relatórios complexos não indico.
Outro fator é não possuir Self Service, mecanismo indispensável em um bom BI.
@Andre, existem algumas configurações que precisam ser feitas no GRAPH. Na aba AXES, o X-Axis precisa estar como “SERIES”.
Caso queira, posso te mandar um JSON funcional de um GRAPH por e-mail.

Andre
14

Kedson, desculpa a demora em responder mas não será preciso.
O problema do meu “Graph” era devido o tipo de consulta que eu estava fazendo que me retornava 4 colunas devido meus atributos no banco – Ano, Mes, Periodo (Que eu transformava a informação com o resultado de Ano e Mes) e por fim o contador.
Uma alternativa pra quem tem o mesmo problema que eu é usar o panel “Multistat”, segue imagem como ficou o meu:
https://uploaddeimagens.com.br/images/002/391/906/full/grafana.png?1570046038
Abraços!

Pedro
15

Muito bom o artigo! Estou trabalhando com o Grafana, e usando ele pra montar dashboards do Zabbix e do GLPÌ.
No Zabbix funcionou perfeitamente, mas no GLPI estou com alguns problemas, depois de muito tempo consegui fazer o Plugin conectar ao GLPI, mas sempre que coloco uma query e peço pra mostrar o resultado ele retorna 0, ou simplesmente não retorna dado nenhum.
Você sabe qual pode ser o problema?

Rodrigo Santos
17

Kedson, muito show o material.
Estou com o seguinte problema, não consigo conectar o plugin do GLPI com o Grafana nem por reza.
Será que poderia me enviar por favor um print da sua conexão?
ou algum material para fazer a conexão?
Se puder me disponibilizar também seu JSON.

Kedson Alves
18

Bom dia, @Rodrigo.
Certifique-se de que os passos abaixo foram feitos:
– Liberar conectividade entre grafana e GLPI, caso estejam em hosts diferentes
– Criação dos tokens do grafana dentro do GLPI
– Liberação de CORS no seu servidor web (apache, por exemplo)
Quanto ao JSON, posso tirar dúvidas de algum indicador em específico, caso queira me contatar no linkedin.

Lisandro
20

Boa tarde, tentei seguir o grafico de evolução por meses no grafana mas não consegui, você pode me ajudar por favor..
Ele aparece um erro 1054 Unknown Column “Janeiro” in “field list”
O que seria isso, agradeço.
Obrigado

Kedson Alves
21

@Lisandro, tenta trocar aspas simples por duplas.
Você também pode utilizar a query abaixo:
SELECT
UNIX_TIMESTAMP(t.date_creation) as time_sec,
DATE_FORMAT(t.date_creation,’%m/%Y’)as metric,
count(distinct(t.id)) as value
FROM glpi_tickets t
inner join glpi_groups_tickets gt on gt.tickets_id=t.id and gt.type=2
left join glpi_groups g on gt.groups_id=g.id
GROUP BY 2
ORDER BY 1 ASC

Jessica Reis
22

Boa tarde,
Parabéns pelo artigo!
Eu consegui fazer toda a integração do zabbix com o Grafana, mas a apresentação do gráfico de consumo é somente de dados referente a 1 mês, não consegui apresentar mais de 1 ano de consumo de trafico, você sabe me informar se é por não utilizar a versão paga ou se eu errei na configuração?
Realizei a integração nesta sexta (13/03/2020)

Jessica Reis
23

Referente ao meu comentário acima, consegui estender o tempo de dados armazenados alterando na conexão com o zabbix o item Trends para a quantidade de meses desejadas.
Muito obrigada.

Paulo Jr Andrade
24

bom dia, parabéns pelo artigo, não tenho muita pratica e também não sou programador, poderia me informar como converto o informação que o singlestat esta me informando em ingles para portugues, as informações são de uptime, então me informa em formato year-month-day, queria converter para ano-mes-dia.
Muito obrigado.

Kedson Alves
25

Bom dia,, @Paulo.
Caso queira converter um dado retornado, na aba Value Mappings você pode mapear o valor conforme desejado.
Exemplo: down -> indisponível
Caso seja uma consulta SQL, pode usar a função date_format(date,’%d/%m/%Y’)

Diego
26

Boa tarde, Parabéns pelo artigo Kedson, muito bom.
Consegue me passar as query que você mencionou que possui ?
estou avançando em alguns pontos no grafana+glpi e gostaria de mais ajuda em algumas coisas.
Obrigado

Eduardo
29

Boa tarde Kedson, se puder enviar algumas querys para o meu e-mail, estou implementando o Grafana integrado com banco de dados do GLPI para monitorar em tempo real os processos da ITIL implementado no GLPI.
Obrigado!

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!