Introdução ao Spring Boot Actuator: monitorando e gerenciando seu aplicativo
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
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./actuator/metrics
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
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./actuator/health
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
do Spring Boot Actuator. Em seguida, você pode expor esse endpoint personalizado em um URL específico usando a anotação Endpoint
.@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
em seu aplicativo. A URL completa seria http://localhost:8080/actuator/prometheus./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.