Habilitando monitoramento no Spring boot

O Spring boot possui uma série de facilitadores para nossos projetos, e parte de monitoramento não é diferente, o sub projeto Actuator provê vários serviços como: o status da aplicação, versões, informações do ambientes, logs, entre outros, que podem ser invocados por endpoints HTTP para monitorar e interagir com a aplicação Spring boot.

Um exemplo é o endpoint “/health”, que retorna o status da aplicação e das ferramentas que estão relacionadas no projeto, como no exemplo abaixo, que é uma aplicação Spring Boot que utiliza o banco de dados relacional PostgreSQL e o MongoDB.

{
  "status": "UP",
  "diskSpace": {
    "status": "UP",
    "total": 249678528512,
    "free": 138347966464,
    "threshold": 10485760
  },
  "mongo": {
    "status": "UP",
    "version": "3.5.6"
  },
  "db": {
    "status": "UP",
    "database": "PostgreSQL",
    "hello": 1
  }
}

Mais informações sobre a estrutura desse projeto, pode ser visto no github.

Para começar a utilizar o Actuator nos nosso projetos Spring Boot é bem simples, apenas adicionar a dependência no projeto e automaticamente os endpoints estarão disponíveis, isso devido o conceito de auto configuração do Spring Boot.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>1.5.3.RELEASE</version>
</dependency>

Os endpoints disponíveis são :

  • /health: Retorna o status da aplicação e das ferramentas relacionadas;
  • /env: Retorna os dados do ambiente, exemplo informações da JVM, sistema operacional, dados de acesso, entre outros;
  • /dump: Gera e retorna o arquivo de dump da aplicação;
  • /metrics: Retorna métricas da aplicação como: quantidade de memória, número de Threads, número de classes, uptime, entre outros;
  • /heapdump: Gera e retorna o arquivo de heapdump da aplicação;
  • /loggers: Retorna os logs da aplicação, de acordo com as configurações;
  • /info: Retorna informações configuradas no application properties, exemplo: info.app.name e info.app.version;
  • /auditevents: Retorna os eventos gerados na aplicação, exemplo acesso negado ou acesso a algum endpoint;
  • /trace: Retorna toda rota dos últimos endpoints;
  • /mappings: Retorna informações dos endpoints disponibilizados na aplicação;
  • /configprops: Retorna informações sobre as configurações da aplicação;
  • /autoconfig: Retorna informações sobre as auto configurações;
  • /beans: Retorna informações sobre os beans da aplicação.

Por padrão, os endpoints são disponibilizados no path raiz da aplicação, com isso, podemos utilizar a propriedade management.context-path do application.properties para alterar o path desses endpoints e não misturar com os endpoints da aplicação.

application.properties

management.context-path=/manage

Após aplicar a propriedade os endpoints vão estar disponíveis no path /manage/health

Outro detalhe, que por segurança esses endpoints necessitam de autenticação, pois eles demonstram informações de toda aplicação e do ambiente que ela está instalada, assim, em ambiente de desenvolvimento podemos desabilitar essa autenticação com a propriedade management.security.enabled=false.

application.properties

management.security.enabled=false

Porém, não podemos desabilitar essa funcionalidade de segurança em ambientes públicos como homologação e produção, assim, podemos adicionar a dependência do spring boot security e habilitar uma autenticação simples via “basic” para autenticarmos via browser.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>1.5.3.RELEASE</version>
</dependency>

application.properties

management.context-path=/manage
management.security.enabled=true
security.user.name=admin
security.user.password=admin
security.basic.enabled=true

Dessa forma, utilizando o projeto Actuator é possível monitorarmos nossas aplicações Spring Boot de forma prática, além disso, o Actuator prove informações da aplicação como: valores de properties, dados de auto configuração, logs e também possibilita ações, como gerar dump e heapdump.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.