SpringBoot 單應(yīng)用監(jiān)控方案(SpringBootAdmin)

一. 什么是 SpringBootAdmin?

它是一個(gè)非Spring官方開發(fā)的用于監(jiān)控SpringBoot應(yīng)用的輔助應(yīng)用,
一直在隨著官方版本更新, 可以實(shí)時(shí)查看應(yīng)用的很多信息, 基于SpringBootActuator.

說明: 以下搭建方案基于SpringBoot 2.x版本

二. 搭建 SpringBootAdmin 服務(wù)端.

  1. 創(chuàng)建一個(gè)新的SpringBoot項(xiàng)目, 引入如下依賴:
        <!-- 用于啟動應(yīng)用 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 監(jiān)控服務(wù)端 -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.1.0</version>
        </dependency>

        <!-- 安全控制 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <!-- 郵件告警 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
  1. 配置文件 application.yml
# 端口
server:
  port: 8000

# 安全控制
spring:

  security:
    user:
      name: your_name
      password: your_password
  # 服務(wù)狀態(tài)郵件通知
  mail:
    host: smtp.qq.com
    username: your_username
    password: your_password
    properties:
      mail:
        smtp:
          auth: true
          starttls.enable: true
          starttls.required: true

  boot.admin.notify.mail.from: your_from_email_address
  boot.admin.notify.mail.to: your_to_email_address
  1. SpringSecurity配置
package com.example.monitor.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: Spring Security配置
 * @Author: ZhangLuo
 */
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

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

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

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login", adminContextPath + "/instances").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/**"
                );
    }
}
  1. 應(yīng)用啟動類配置:
package com.example.monitor;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Description: Spring Boot 啟動類
 * @Author: ZhangLuo
 */
@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {

    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }

}

至此, 一個(gè)簡單的搭建完成, 啟動打開 http://127.0.0.1:8000 即可查看, 輸入在配置文件配置的賬號密碼即可.

三. 搭建 SpringBootAdmin 客戶端.

  1. 創(chuàng)建或者使用現(xiàn)有的SpringBoot應(yīng)用 引入依賴
        <!-- 應(yīng)用監(jiān)控客戶端 -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.1.0</version>
        </dependency>
  1. 配件文件 application.yml
  # 應(yīng)用監(jiān)控
spring:
  boot.admin.client.url: http://127.0.0.1:8000 #服務(wù)端的地址
  boot:
    admin:
      client:
        instance:
          service-url: http://127.0.0.1:8080 #客戶端告訴服務(wù)端自己的地址

說明: 如果客戶端有鑒權(quán),請把 contextPath/actuator/** 設(shè)置為不需要鑒權(quán), 這是服務(wù)端獲取客戶端信息的地址

啟動后, 查看http://127.0.0.1:8000 即可看到應(yīng)用上線, 查看客戶端應(yīng)用狀態(tài)了。

應(yīng)用上線查看:


image.png

應(yīng)用信息查看:


image.png

完結(jié)!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容