Gerenciando ambiente de produção com Spring Boot Actuator

Filipe Munhoz
4 min readMay 30, 2020

--

O Spring Boot Actuator é utilizado para monitorar e gerenciar aplicações em ambiente de produção de maneira dinâmica e simples. É possível fazer a monitoração e gerenciamento a partir de endpoints disponibilizados de forma automatizada.

Muitas funcionalidades já estão prontas para serem utilizadas em produção, sem a necessidade de desenvolvimento de código e podem ser encontradas na documentação oficial do Spring Actuator.

Instalação

Para utilizar o Spring Boot Actuator, basta importar as dependências através do Maven, Gradle ou pelo próprio Spring Initializer.

Maven

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

Spring Initializer
Buscar por Spring Boot Actuator

Demo

O código fonte para demonstração, pode ser baixado no repositório a seguir e ser importado na IDE de preferência.

Git

Importar

No Eclipse ou Sprint Tools Suite:
File -> Import -> Existing Maven Projects -> select the pom.xml

Endpoints

Os endpoints já prontos e mais utilizados são:

  • Health Endpoint
  • Metrics Endpoint
  • Logger Endpoint

Para habilitar a utilização dos endpoints de forma automática, basta incluir a linha abaixo no seu arquivo /src/main/resources/application.properties

management.endpoints.web.exposure.include=*

Executar
Vamos rodar a aplicação.

Essa é uma simples aplicação, que retorna uma lista com as distribuições mais utilizadas do linux, de acordo com o distro watch, na data em que estava sendo escrito este material.

Abrir o arquivo principal ActuatorDemoApplication.java, com o botão direto, selecionar a opção run as…, Spring Boot App.

Browser

No navegador abriremos a URL abaixo:
http://localhost:8080/distro/list

JSONView

Para melhor visualização, utilizar o plugin JSONView ou similar para o Chrome.

Endpoint Health
http://localhost:8080/actuator/health

Este endpoint mostra o estado de "saúde" de sua aplicação.

Endpoint Metrics
Informações de métricas da aplicação.
http://localhost:8080/actuator/metrics

Consumo de memória

Dentro de métricas, uma das opções é a visualização da memória que está sendo utilizada na aplicação.
http://localhost:8080/actuator/metrics/jvm.memory.used

Endpoint Loggers
Exibe informações sobre configuração das logs.
http://localhost:8080/actuator/loggers

Endpoint Configprops
Exibe informações sobre as configurações da aplicação. http://localhost:8080/actuator/configprops

Alterar configuração

Alteracao offline
Uma possibilidade de alterar a configuração da log, por exemplo, é através do arquivo: /src/main/resources/application.properties

Vamos alterar para modo de debug todos os SQLs que a aplicação gerar.

Adicionamos a linha abaixo:

logging.level.org.hibernate.SQL=DEBUG

Alteração online
Outra possibilidade, é alterar a configuração em uma aplicação que esteja sendo executada em produção.

Na linha de comando executaremos a sintaxe abaixo:

curl -X “POST” “http://localhost:8080/actuator/loggers/org.hibernate.SQL" -H “Content-Type: application/json; charset=utf-8” -d $’{ “configuredLevel”: “DEBUG” }’
  • curl: Utilizado para realizar interações http.
  • -X: qual o modo a ser utilizado, neste caso é POST.
  • -H: inclusão de um header, JSON.
  • -d: dado da solicitação.

Monitoração

O Spring Boot Actuator suporta um grande número de sistemas de monitoracao, entre eles estão: New Relic, DataDog, Prometheus, Grafana.

Seguranca

Todos os endpoint disponibilizados, entram como ativos assim que a aplicação sobe, exceto o de shutdown por motivos óbvios.

É possível especificar quais os endpoints fazem sentido e ativá-los individualmente com a linha a seguir no application.properties:

Comandos include/exclude

Ativar

management.endpoints.web.exposure.include=beans,metrics,info,health,loggers

Desativar

management.endpoints.jmx.exposure.exclude=beans

Conclusão

Este é um exemplo prático, sendo possível baixar o fonte no git, aplicar as configurações demonstradas e ver como é feito a monitoração e gerenciamento de sua aplicação através do Spring Boot Actuator.

Referências

Fonte Aplicação GIT
Spring Boot Features

Distro Watch
Spring Initializer

--

--

Filipe Munhoz
Filipe Munhoz

Written by Filipe Munhoz

Software Engineer at Itaú Unibanco

No responses yet