2
respostas

Como o Actuator funciona?

Achei muito interessante esse Actuator, mas como ele funciona? Como ele sabe que tem um banco que a aplicação conecta e qual é este banco? Ele faz tudo isso sem você especificar nada? Pluga e já era?

Você desenvolve qualquer coisa mesmo, pluga ele e ele consegue monitorar? Se tiver documentação que a gente possa entender, eu agradeço.

2 respostas

Olá, Rudson.

Tudo bem?

Entendo que o Actuator possa parecer um pouco mágico à primeira vista. Vamos ver um pouco disso juntos!

O Actuator é um subprojeto do Spring Boot que permite monitorar e gerenciar sua aplicação em tempo real. Ele fornece vários endpoints prontos para uso que fornecem informações sobre o estado da aplicação, como saúde, métricas, info, dump, env, etc.

Quanto à sua pergunta sobre como o Actuator sabe que tem um banco que a aplicação conecta e qual é este banco, ele não sabe disso por si só. O Actuator apenas expõe os detalhes que a aplicação já conhece. Por exemplo, no caso do endpoint '/health', ele exibe o status de todos os componentes autoconfigurados do Spring Boot, como um DataSource ou um Mongo. Se o Spring Boot puder se conectar a esses componentes, o status será 'UP'; caso contrário, será 'DOWN'.

No caso do banco de dados, o Actuator usa o HealthIndicator do Spring Boot para verificar a saúde do banco de dados. Se a aplicação estiver conectada a um banco de dados MySQL, por exemplo, o Spring Boot autoconfigura um DataSourceHealthIndicator para verificar a saúde do banco de dados. O Actuator apenas expõe essas informações.

Sobre sua dúvida se o Actuator faz tudo isso sem especificar nada, a resposta é sim e não. Sim, porque o Actuator vem com muitos recursos prontos para uso. Não, porque você ainda precisa adicionar a dependência do Actuator ao seu projeto e configurar quais endpoints deseja expor.

Aqui está um exemplo de como adicionar o Actuator ao projeto Maven:

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

E aqui está um exemplo de como configurar quais endpoints expor em seu arquivo application.properties:

# actuator
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=health,info,metrics

Neste exemplo, os endpoints de health, info e metrics estão sendo expostos.

Para mais detalhes, recomendo que você leia a documentação oficial do Actuator.

Espero ter ajudado e bons estudos!

Olá Renan,

Falando de configuração que é realizada para habilitar o uso do Actuator, ok! Realmente algo tem que ser realizado para habilitá-lo ou a aplicação tinha que trazer habilitado por padrão.

Meu ponto é realmente como ele consegue, depois de ativado, monitorar a aplicação sem que o desenvolvedor especifique nada para ele. De qualquer forma acho que entendi, como ele é um subprojeto do Spring Boot ele é bem integrado e consegue obter as informações para expor nos endpoints.

Obrigado