Spring Boot Actuator – O que é, como melhorar

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.

http://3.139.95.241/2021/05/03/spring-cloud-config-server-o-que-e-e-como-criar-o-seu/

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.