Concrete Logo
Hamburger button

Como visualizar dados do Jenkins em dashboards

  • Blog
  • 8 de Janeiro de 2018
Share

Aqui vai um tutorial rápido para a visualização de dados do Jenkins em forma de dashboards!

Para começar, você precisa de:

  • Docker
  • Docker-compose

Também vamos usar:

  • Jenkins: acho que dispensa apresentações, certo? O orquestrador mais famoso, usado para Continuous Integration e Deployment;
  • Grafana:  plataforma open source para a criação de dashboards e gráficos a partir de vários data sources;
  • InfluxDB:  Timeseries Database é uma database otimizada para eventos com timestamp, ideal para métricas e dados em tempo real.

Beleza, até aqui tá tranquilo. Mas como isso vai funcionar?

Segue uma simples imagem de como vai ficar a nossa infraestrutura e o fluxo:

Tá bonito, né? Então mãos à obra! Vamos usar o Docker para criar a nossa infra via compose. Para facilitar, eu já preparei um docker-compose.yml básico:

Breve explanação:

  • Em “Service: influxdb” estamos criando o influxDB e passando como environment para criar uma database chamada Jenkins;
  • Em “Service: Jenkins” estamos, simplesmente, criando o Jenkins, sem novidades;
  • Em “Service: Grafana” criamos o Grafana e colocamos via environment as configurações do InfluxDB.

Salve esse arquivo como docker-compose.yml e na mesma pasta:

Verifique se todos containers estão de pé:

Beleza? Agora vamos testar os serviços:

Jenkins — http://localhost:8080

Grafana — http://localhost:3000

Se tudo deu certo, você vai ver a tela de ambos os serviços. E aí, começando pelo Jenkins depois de fazer o setup inicial, instale o plugin do InfluxDB e vá para Manage Jenkins -> Manage Plugins -> Available -> InfluxDB Plugin.

Se tudo der certo em “Configure Jenkins” você vai ver a parte de configuração do nosso InfluxDB:

Em URL coloque a do seu serviço; a porta é 8086 por default no nosso compose;

Em User/Pass: admin/admin , também por default no nosso compose;

Criamos a database com o nome de jenkins;

Para retentionPolicy: o default é autogen.

Beleza, pode salvar agora!

Vou supor que você já sabe como criar um job maven no Jenkins, então vou pular esse passo. Mas resumidamente usei uma aplicação da Spring chamada Petclinic como exemplo. Ela possui testes unitários e ainda coloquei o plugin de cobertura.

Ah, quase me esqueci! Você vai precisar também instalar o Cobertura Plugin e o Publish JUnit Plugin.

Se quiser, pode usar o meu repo neste link.

Para execução do job vamos usar os goals do maven:

O job ficaria assim:

Configure o Publish Cobertura e o JUnit test report!

Com isso, vamos publicar tanto o resultado dos testes quando o Cobertura.

Tá beleza, mas como eu envio os dados do Job para o nosso Influx?!

Basta adicionar um Post-Build Action no final do seu job e selecionar a database.

Com o nosso job configurado, vamos testar:

Very nice!

Pronto, gravamos os dados de testes, Cobertura e Build no nosso InfluxDB.

Mas, Rodrigo, não acredito que realmente gravamos, foi muito fácil!

😉

O InfluxDB não possui interface, mas podemos utilizar o CLI dele.

Agora vamos começar a criar nosso dashboard no Grafana. Entre em http://localhost:3000 e logue com admin/admin como user/pass e depois clique em Add Data Source.

Preencha como na imagem abaixo:

E pronto!

Agora volte à tela principal do Grafana, clique em New Dashboard, selecione Graph e depois clique em Panel Title e em edit.

Agora podemos adicionar diversos tipos de query para criarmos os gráficos e dashboards. Como exemplo, vou criar um dashboard com três gráficos:

  • Build Time do job;
  • Quantidade de testes do Job;
  • Quantia percentual de cobertura de código dos Pacotes do projeto.

Começando com o Build Time:

Configurando as métricas, lembre-se de adicionar o math dividido por 60000 para calcular ms em minutos

 

Configure os eixos para suportar minutos

E o resultado é:

Agora vamos adicionar uma nova Row no nosso dashboard e configurar o gráfico de testes unitários:

Simples assim

E nossa última row para cobertura de código:

Lembre-se que em “Axes” você deve colocar a unidade de percentual

Agora salve o seu dashboard e veja como ficou.

Dashboard versão 0.1

Temos a nossa primeira versão do dashboard. Claro que essa é simples, mas são inúmeras possibilidades.

Adicione Build Health como SingleStat

Conseguimos, também via Plugin do InfluxDB, pegar dados do Robot Framework, JMeter, Jacoco etc. Também há possibilidades de criar alertas a partir de thresholds configurados por métrica e notificar por e-mail, slack etc, ou seja, dá para quebrar um galho. Qualquer dúvida, deixa um comentário aí! 🙂

Quer trocar conhecimento o tempo todo e aprender todos os dias? Vem trabalhar com a gente!