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.
Bom dia
O link do projeto do github esta retornando 404
CurtirCurtir
Bom dia Elvio, ajustado o link, obrigado por avisar.
CurtirCurtir