Nesse artigo vamos abordar como efetuar o monitoramento dos seus deploys do Jenkins com o prometheus + Grafana. Assim garantindo um monitoramento unificado de seus projetos, além de um maior controle de deploy e, também, entender se sua ferramenta de CI/CD possui algum gargalo.

Mãos na massa!

Primeiro iremos instalar o plugin do prometheus no Jenkins.

  • No seu jenkins clique em “Gerenciar Jenkins” -> “Gerenciar Plugins”
Configuração Jenkins
  • Vá até a aba “Disponíveis” e busque por “Prometheus”, após isso irá aparecer o seguinte plugin “Prometheus metrics plugin” e clique em instalar plugin.
  • Após instalado, vamos até “Gerenciar Jenkins” -> “Configurar Sistema” e busque por “Prometheus”
  • Irá aparecer a imagem abaixo.
  • As configurações deverão ficar da mesma forma como consta na imagem.
  • Após a configuração no Jenkins, vamos fazer a integração do Jenkins com o Prometheus para que possamos extrair esses dados e trabalhar no Grafana.
  • Acessar o servidor do jenkins por ssh.
  • Ir até o diretório “/etc/prometheus” e alterar o arquivo “prometheus.yml” e adicione as configurações abaixo.
global:
  scrape_interval: 10s
  evaluation_interval: 30s
scrape_configs:
  - job_name: 'jenkins'
    basic_auth:
      username: "<USUARIO>"
      password: "<SENHA>"
    metrics_path: '/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['<URL_JENKINS>:<PORTA_JENKINS>']
    metric_relabel_configs:
    - action: replace
      source_labels: [exported_job]
      target_label: jenkins_job
    - action: labeldrop
      regex: exported_job

Lembrando que as informações abaixo devem ser suas configurações.

  • <USUARIO> – Seu usuário configurado no Jenkins
  • <SENHA> – Sua senha configurada no Jenkins
  • <URL_JENKINS> – Sua url usada no Jenkins
  • <PORTA_JENKINS> – Sua porta usada no Jenkins caso possua.

Feito isso, nossos dados já estão sendo coletados pelo Prometheus, para confirmarmos vamos acessar o prometheus e validar o status:

Acesse a URL de onde está instalado o prometheus com a seguinte url “<URL>:9090” e vá até o label ao lado direito do botão executar.

Clicando nele aparecerá as seguintes informações “jenkins_* e vm_*” ambos são as informações do Jenkins e as informações da máquina onde o Jenkins está instalado.

Para validar se o prometheus está conseguindo se conectar no jenkins, vamos até o menu “Status” -> “Targets”.

Agora está tudo pronto com o Jenkins e Prometheus, vamos transformar isso em um Dashboard visual no Grafana para conseguirmos monitorar todos os nossos Deploys.

Vá até o Grafana e adicione um novo “Data Sources”

  • Na configuração iremos apenas definir a URL, após isso iremos salvar e testar.

Pronto, nosso Grafana já está conseguindo buscar as informações do prometheus, bastando apenas criar um Dashboard.

Vou criar um exemplo de métrica para visualizar como é fácil realizar esse monitoramento.

Vamos então criar nosso Dashboard, clique em Create -> Dashboard

  • Vamos escolher a opção “Choose Visualization” e escolher “Singlestat”.
  • Nele iremos escolher a opção do Data Source, ele fica no canto esquerdo.

Selecionando a primeira opção dessa imagem, vamos definir a métrica e qual Data Source iremos utilizar.

  • Em “Queries to” iremos escolher o “Prometheus”
  • No campo para fazermos a query, vamos buscar o total de jobs com sucesso feito no Jenkins.
  • Para isso vamos utilizar a query abaixo:
jenkins_runs_success_total

Agora faremos os parâmetros da visualização:

  • Stat = Current
  • Fron Size = 150%
  • Value = Ativo
  • Tresholds = 0,0
  • Colors = Clicar no botão “invert”

Vamos mudar o título do nosso gráfico, colocando ele como “Jobs finalizados com Sucesso”, para isso clicaremos no terceiro item do seu lado esquerdo.

  • Title = Jobs finalizados com Sucesso

Basta clicar no botão voltar no seu canto superior esquerdo para vermos o gráfico como ficou.

Veja como ficou seu monitoramento.

É isso pessoal, agora mãos na massa e muita criatividade. Abaixo veja um exemplo de como ficou meu monitoramento inicial.

Leave a Reply

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