Integración de Spring Boot con Spring Boot Admin/Prometheus/Grafana para Monitoreo Distribuido

Primero, Spring Boot Admin

Servidor:

  1. 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>

  1. Anotaciones

A. @EnableAdminServer: Activa la funcionalidad de monitoreo del servidor, se usa en la clase principal de la aplicación.

  1. 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

  1. 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/**"
            );
    }
}

  1. Alertas por correo electrónico

Cliente:

  1. 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>

  1. 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

  1. 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

Etiquetas: SpringBoot SpringBootAdmin prometheus Grafana java

Publicado el 8-15 01:20