Conteúdo do item:
Como instalar o actuator no seu projeto
O que é Actuator?
É um módulo que podemos adicionar no nosso spring-boot para coletar dados, tomar algumas ações, como por exemplo mudar o nível de log do projeto, ou coletar métricas e volumetrias dos nossos serviços.
Link da página do Spring Boot
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html
Instalando o Actuator
No pom.xml do projeto adicionar a seguinte dependência.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Necessário ter o spring-web para que o actutator consiga gerar os seus endpoints de informações.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Testando a instalação
Ao instalar a dependência será criado o endpoint /actuator no seu projeto. Suba seu projeto e acesse essa URL , o endpoint mostrará todos os serviços que estão disponíveis e seus respectivos endpoints para coletar as informações correspondentes.
Vamos rodar o endpoint principal do actuator http://localhost:8080/actuator/.
Temos como resultado :
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"health": {
"href": "http://localhost:8080/actuator/health",
"templated": false
},
"health-path": {
"href": "http://localhost:8080/actuator/health/{*path}",
"templated": true
},
"info": {
"href": "http://localhost:8080/actuator/info",
"templated": false
}
}
}
No meu exemplo o resultado mostra self, health, health-path e info , pegando o link disponível no atributo HREF podemos acessar as informações.
No caso do HEALTH a URL é http://localhost:8080/actuator/health, de acordo com o HREF correspondente, e esse endpoint nos mostra a saúde do seu projeto, se tudo subiu de acordo com o esperado, e como resultado do endpoint temos o seguinte:
{"status":"UP"}
No meu caso o UP indica que está tudo certo e o projeto está online.
Adicionando mais informações
Podemos explorar alguns endpoints que não estão habilitados por padrão, no link abaixo temos uma tabela com os nomes dos endpoints e sua proposta de informação, uma vez identificando o NOME do endpoint desejados podemos habilitá-lo.
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints
Para ativar os endpoints desejados basta colocar seu respectivo nome(s), separados por vírgula, na seguinte propriedade dentro application.properties:
management.endpoints.web.exposure.include=NOME_ENDPOINT,NOME_ENDPOINT,NOME_ENDPOINT ou colocar * para todos
Por exemplo, olhando no link quero habilitar o caches e o env, agora suba seu projeto e veja o resultado.
management.endpoints.web.exposure.include=caches,env
Rodando novamente o endpoint principal http://localhost:8080/actuator/ temos o seguinte resultado.
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"caches-cache": {
"href": "http://localhost:8080/actuator/caches/{cache}",
"templated": true
},
"caches": {
"href": "http://localhost:8080/actuator/caches",
"templated": false
},
"env": {
"href": "http://localhost:8080/actuator/env",
"templated": false
},
"env-toMatch": {
"href": "http://localhost:8080/actuator/env/{toMatch}",
"templated": true
}
}
}
Agora temos os endpoints de cache e env com suas respectivas informações .
Exclusão de informações
Caso voce use * no lugar dos nomes dos endpoint, conforme acima, todos os serviços serão liberados e você pode excluir somente os que não desejar através da propriedade abaixo.
management.endpoints.web.exposure.exclude=NOME_ENDPOINT,NOME_ENDPOINT,NOME_ENDPOINT
Formatação do JSON do actuator
Caso queira formatar o JSON de saída dos endpoints.
spring.jackson.serialization.indent-output=true
actuator; instalando; api