Spring Boot Admin (SBA) é uma solução de código aberto mantida pela comunidade, projetada para gerenciar e monitorar aplicações construídas com Spring Boot. As aplicações podem se registrar no painel SBA via HTTP ou utilizando mecanismos de descoberta de serviços do Spring Cloud, habilitando uma interface gráfica completa para administração.
Esta ferramenta suporta o monitoramento de instâncias isoladas ou clusters, fornecendo telemetria detalhada sobre saúde da aplicação, consumo de memória, propriedades do ambiente JVM, estatísticas de garbage collection, níveis de log, tarefas agendadas e gerenciamento de caches.
- Provisionamento do Servidor SBA
O primeiro passo consiste em criar a aplicação que atuará como o servidor de monitoramento. Utilize o Spring Initializr ou sua IDE para gerar um projeto Spring Boot padrão, adicionando as dependências do servidor SBA e do módulo Web.
1.1 Dependências do Servidor
Adicione os seguintes artefatos ao seu arquivo de configuração do Maven:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
</dependencies>
1.2 Habilitando o Servidor
Anote a classe principal com @EnableAdminServer para inicializar os endpoints e a interface do SBA:
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer
public class MonitoringServerApp {
public static void main(String[] args) {
SpringApplication.run(MonitoringServerApp.class, args);
}
}
1.3 Configuração de Porta
Defina uma porta distinta no arquivo application.yml para evitar conflitos com as aplicações que serão monitoradas:
server:
port: 8888
Ao iniciar esta aplicação, o painel web do Spring Boot Admin estará acessível, aguardando o registro dos clientes.
- Registro da Aplicação Cliente
Para que uma aplicação Spring Boot seja monitorada, ela deve ser configurada como um cliente SBA. No projeto que deseja monitorar, inclua a dependência do cliente:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Em seguida, configure a URL do servidor SBA no arquivo de propriedades da aplicação cliante:
server:
port: 8080
spring:
boot:
admin:
client:
url: "http://localhost:8888"
- Painel de Controle e Eventos
Após a inicialização do cliente, o painel do SBA listará a aplicação registrada. A interface oferece uma visão geral através do "Application Wall" e permite a inspeção detalhada de cada instância. A aba de eventos registra o histórico de estados, marcando transições como UP (online) ou OFFLINE (quando a aplicação é encerrada ou sofre uma falha), incluindo os carimbos de tempo exatos de cada ocorrência.
- Exposição Completa de Métricas via Actutaor
Por padrão, o SBA exibe apenas um subconjunto básico de informações. Para desbloquear o potencial completo de monitoramento, é necessário integrar o Spring Boot Actuator na aplicação cliente e expor seus endpoints.
4.1 Adicionando o Actuator
Insira a dependência do Actuator no POM do cliente:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
4.2 Liberando Endpoints
Configure a exposição dos endpoints web no arquivo de propriedades do cliente. Para fins de desenvolvimento e monitoramento interno, você pode expor todos os endpoints:
management:
endpoints:
web:
exposure:
include: "*"
Após reiniciar a aplicação cliente, o painel SBA passará a renderizar métricas avançadas, incluindo tempo de atividade, alocação de CPU por thread, detalhes de garbage collection, dumps de memória, variáveis de ambiente, beans do Spring, tarefas agendadas e caches.
4.3 Recursos Avançados Disponíveis
- Ambiente: Inspecione variáveis de ambiente e propriedades do sistema.
- Tarefas Agendadas: Visualize a execução e configuração de jobs cron.
- Loggers: Altere dinamicamente os níveis de log (DEBUG, INFO, ERROR) em tempo de execução sem reiniciar a aplicação.
- JVM: Analise threads ativas e realize o dowlnoad de heap dumps para análise de memory leaks.
- Caches: Inspecione e invalide caches gerenciados pelo Spring.
- Visualização de Logs em Tempo Real
Para utilizar o recurso de visualização de logs diretamente na interface do SBA, a aplicação cliente precisa persistir a saída de log em um arquivo físico. Configure o caminho do arquivo de log nas propriedades da aplicação cliente:
logging:
file:
path: /var/log/spring-apps/
Com esta configuração ativa, o SBA conseguirá ler o arquivo de log gerado, permitindo o acompanhamento em tempo real e o download do histórico de logs diretamente pelo navegador.