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
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.
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
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:
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
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.
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.
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.
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!
29 Comentários
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.
É isso aí, Ricardo!
Um abraço
Bom dia!
Kedson, qual o camnho do arquivo para a configuração do CORS no apache do glpi?
@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'”
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?
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.
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.
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.
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?
@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
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.
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 ?
@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.
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!
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?
@Pedro, o plugin do GLPI funciona melhor com os gráficos do tipo Singlestat.
Caso queira, posso te mandar um JSON funcional de um Singlestat por e-mail.
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.
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.
Maravilhoso seu conteudo
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
@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
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)
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.
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.
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’)
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
@Diego, posso te ajudar com algum indicador que esteja tendo dificuldade. Manda um e-mail para [email protected]
Seu artigo é genial parabéns. Consegui colocar para funcionar as opções que você apresentou e já tenho um dashboard funcionando bem no qual uso tanto a API qto o MySQL, bem legal.
Você chegou a publicar esse dashboard https://snapshot.raintank.io/dashboard/snapshot/SNs0Z0eEV6qpIfvEODmw1a8m2lrQrqJX?panelId=16&orgId=2
Se não pode compartilhar as consultas, gostei demais da forma que você montou e quero fazer bem parecido.
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!