Introdução ao Spring Boot Actuator: monitorando e gerenciando seu aplicativo

Por Gaspar Barancelli Junior em 14 de março de 2023

Spring Boot Actuator é uma biblioteca do Spring Boot que fornece recursos avançados de monitoramento e gerenciamento de aplicativos. É um conjunto de ferramentas que permitem que os desenvolvedores monitorem e gerenciem aplicativos em tempo real, desde métricas até informações de saúde, além de endpoints personalizados para personalizar a aplicação. Neste post, vamos explorar os principais recursos do Spring Boot Actuator.

Métricas

Com o Spring Boot Actuator, é possível coletar e exibir métricas do sistema em tempo real. O Actuator fornece um endpoint /actuator/metrics que lista todas as métricas disponíveis. Alguns exemplos de métricas incluem o uso da CPU, o uso de memória, o número de solicitações HTTP, entre outros. Essas métricas são expostas em um formato JSON que pode ser facilmente consumido por ferramentas de monitoramento.

Informações de saúde

O Spring Boot Actuator também fornece informações sobre o estado de saúde do aplicativo. Esse recurso é especialmente útil para aplicativos em produção, onde é importante monitorar a disponibilidade do aplicativo. O Actuator fornece um endpoint /actuator/health que exibe informações sobre a saúde do aplicativo. O endpoint retorna um JSON com informações sobre o status do aplicativo, como as conexões com banco de dados e a conexão com outros sistemas.

Endpoints personalizados

O Spring Boot Actuator permite que os desenvolvedores adicionem seus próprios endpoints personalizados. Isso é útil para adicionar funcionalidades específicas do aplicativo que não são fornecidas pelo Actuator. Para adicionar um endpoint personalizado, basta criar uma classe que implemente a interface Endpoint do Spring Boot Actuator. Em seguida, você pode expor esse endpoint personalizado em um URL específico usando a anotação @Endpoint.

Segurança

Por padrão, todos os endpoints do Spring Boot Actuator são públicos e não possuem autenticação ou autorização. No entanto, é possível configurar a segurança nos endpoints usando a biblioteca Spring Security. Você pode definir permissões para acessar determinados endpoints ou exigir autenticação para acessar os endpoints do Actuator.

Como configurar

Para configurar o Spring Boot Actuator em seu projeto, siga as seguintes etapas:

1. Adicione a dependência do Spring Boot Actuator no arquivo pom.xml do seu projeto. Por exemplo:

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

2. Configure as propriedades do Actuator em application.properties ou application.yml. Por exemplo:

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

Nesse exemplo, definimos que todos os endpoints do Actuator devem ser expostos e que as informações de saúde devem sempre ser exibidas.

3. Inicie a aplicação e acesse os endpoints do Actuator. Por padrão, os endpoints do Actuator estarão disponíveis em http://localhost:8080/actuator. Você pode acessar o endpoint de métricas, por exemplo, em http://localhost:8080/actuator/metrics.

4. Opcionalmente, você pode configurar a segurança nos endpoints do Actuator usando a biblioteca Spring Security. Por exemplo:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/actuator/**").hasRole("ACTUATOR")
            .anyRequest().permitAll()
            .and()
            .httpBasic();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("admin")
            .password("{noop}password")
            .roles("ACTUATOR");
    }

}

Nesse exemplo, estamos configurando a segurança para permitir o acesso aos endpoints do Actuator somente para usuários com a função "ACTUATOR". O usuário "admin" com a senha "password" tem essa função atribuída.

5. Exportar métricas no formato do Prometheus:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Agora, para acessar as métricas exportadas no formato do Prometheus, você pode acessar o endpoint /actuator/prometheus em seu aplicativo. A URL completa seria http://localhost:8080/actuator/prometheus.

Esta URL irá retornar todas as métricas exportadas no formato do Prometheus. As métricas serão retornadas como texto simples, em um formato que pode ser facilmente lido pelo Prometheus. Você pode usar essa URL como alvo de scraping do Prometheus para coletar as métricas do seu aplicativo.

Conclusão

O Spring Boot Actuator é uma ferramenta poderosa que permite que os desenvolvedores monitorem e gerenciem aplicativos em tempo real. Com seus recursos de métricas, informações de saúde, endpoints personalizados e segurança, o Spring Boot Actuator é uma ferramenta essencial para aplicativos em produção. Além disso, o Actuator é fácil de usar e requer apenas algumas configurações simples para começar a coletar métricas e informações de saúde. Se você ainda não está usando o Spring Boot Actuator em seus projetos, é hora de começar a explorar seus recursos.

// Livros recomendados relacionados ao assunto do post

// Compartilhe esse Post