Primero, Spring Boot Admin
Servidor:
- Dependencias Maven
<!-- Dependencia para monitoreo con Spring Boot Admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.1</version>
</dependency>
<!-- Dependencia para autenticación con Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- Anotaciones
A. @EnableAdminServer: Activa la funcionalidad de monitoreo del servidor, se usa en la clase principal de la aplicación.
- Archivo de configuración application.yml
server:
port: 8070
spring:
application:
name: admin-web
security:
user:
name: admin
password: securePass123!
boot:
admin:
ui:
title: admin-web
- Módulo de Login (Spring Sceurity)
package com.example.admin.config;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
@Configuration
public class AdminSecurityConfig extends WebSecurityConfigurerAdapter {
private final String adminPath;
public AdminSecurityConfig(AdminServerProperties properties) {
this.adminPath = properties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler();
handler.setTargetUrlParameter("redirectTo");
handler.setDefaultTargetUrl(adminPath + "/");
http.authorizeRequests()
.antMatchers(adminPath + "/assets/**").permitAll()
.antMatchers(adminPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminPath + "/login").successHandler(handler).and()
.logout().logoutUrl(adminPath + "/logout").and()
.httpBasic().and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
adminPath + "/instances",
adminPath + "/actuator/**"
);
}
}
- Alertas por correo electrónico
Cliente:
- Dependencias Maven
<!-- Dependencia para cliente de Spring Boot Admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.1</version>
</dependency>
- Archivo de configuración application.yml
server:
port: 8071
spring:
application:
name: client-admin
boot:
admin:
client:
enabled: true
url: http://localhost:8070
instance:
metadata:
user.name: admin
user.password: securePass123!
username: admin
password: securePass123!
management:
endpoints:
web:
base-path: /management
exposure:
include: "*"
exclude: shutdown
endpoint:
health:
show-details: ALWAYS
logfile:
enabled: true
logging:
file:
name:
path:
Interfaz de usuario:
Consulte: Monitoreo distribuido con Spring Boot Admin/Prometheus/Grafana
Sitio oficial de Spring Boot Admin
Segundo, Prometheus
- Depenedncias Maven
<!-- Paquete central de micrometer para conectar con Prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.2.0</version>
</dependency>
Consulte: Monitoreo de contenedores con Prometheus