首页 > 技术文章 > SpringBoot 整合SpringBoot Admin/Prometheus/Grafana分布预警监控

ruhuanxingyun 2020-09-20 09:37 原文

一、SpringBoot Admin

  Server端:

    1. Maven依赖

<!-- SpringBoot Admin监控 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.3.1</version>
</dependency>
<!-- Spring Security身份验证 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

    2. 注解

      A. @EnableAdminServer:开启Admin监控功能,作用在启动类上;

    3. application.yml配置文件

server:
  port: 8070
spring: application: name: web-admin security: user: name: admin password: admin@
123456 boot: admin: ui: title: web-admin

    4. 登录模块(Spring Security)

package com.ruhuanxingyun.web.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;

/**
 * @description: Admin监控 配置
 * @author: ruphie
 * @date: Create in 2020/12/26 13:22
 * @company: ruhuanxingyun
 */
@Configuration
public class AdminConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public AdminConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
    }

}

  

    5. 邮箱报警

 

  Client端:

    1. Maven依赖

<!-- SpringBoot Admin监控 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.3.1</version>
</dependency>

    2. application.yml配置文件

server:
  port: 8071
spring:
 application:
  name: admin-client  boot: admin: client: enabled:
true url: http://127.0.0.1:8070 instance: metadata: user.name: admin user.password: admin@123456 username: admin password: admin@123456 management: endpoints: web: base-path: /management exposure: include: "*" exclude: shutdown endpoint: health: show-details: ALWAYS logfile: enabled: true logging: file: name: path:

  界面展示:

可参考:分布式 预警监控(SpringBootAdmin/Prometheus/Grafana)

    SpringBoot Admin官网 

 

二、Prometheus

  1. Maven依赖

<!-- micrometer核心包,桥接prometheus -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.2.0</version>
</dependency>

  

可参考:Prometheus容器监控

推荐阅读