Uma ferramenta extremamente importante para quem roda aplicações em Spring Boot é o Actuator. Se você não o usa, comece a usa-lo AGORA.
Ele é a maneira mais simples e fácil de saber o estado da sua aplicação e de criar uma forma de monitora-la e integra-la com os vários plugins de métricas.
Aqui você tem a documentação oficial do Actuator:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready
Como habilitar?
Projetos Maven no pom.xml colocar a dependência:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
Projetos Gradle, no build.gradle colocar a dependência:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' }
Pronto, se fizer isso, já tem o Actuator rodando.
Testando o Actuator.
Para saber o resultado do Actuator, basta usar o contexto /actuator/health da sua aplicação
Melhorando as informações do Actuator.
Agora que o Actuator já esta incorporado ao seu projeto, podemos / devemos configurar ele para mostrar mais detalhes sobe seus dados e permitir que o status seja maior que “UP” ou “Down”.
Para isso, precisamos implementar as configurações do YAML a baixo:
# Configuração do Actuator para mostrar detalhes management: endpoint: health: show-details: "always" endpoints: web: exposure: include: "*"
Essa configuração você pode colocar no arquivo:
src/main/resources/application.yml
Ou, o que é ainda melhor, é usar o Spring Cloud Config e cria uma configuração comum para todos os projetos do Spring Boot.
Acessando novamente a url de status com o detalhes ativo:
Actuator junto com Spring Security
Se o seu projeto utiliza Spring Security, ele deve ter um modelo de autenticação, no geral os softwares / mecânicas de monitoração não trabalhão fazendo autenticação e no geral sua aplicação Spring Boot não vai estar publicamente exposta para a internet (Se ela estiver, por favor, preveja migrar para não estar), por isso, não tem problema desligar a segurança em fazer a chamada ao Actuator.
Para isso, você vai precisar criar ou alterar a configuração do seu Spring Security, no meu caso, só criei uma classe de configuração com o conteúdo:
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; import org.springframework.boot.actuate.context.ShutdownEndpoint; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/actuator/**").permitAll() // Permite as URI do Actuator .antMatchers("/**").authenticated() // Permite todas as URI se forem autenticadas .and().httpBasic(); } }
A configuração que fazia o skip management.security.enabled foi removida a partir da versão 2.1. Por isso tem que fazer via classe de configuração.
Humildemente, achei pior, era mais simples antes.
Bom é isso. Até o próximo post.