springboot-admin對(duì)springboot項(xiàng)目監(jiān)控

簡(jiǎn)介

springboot-admin實(shí)在Spring Boot Actuator的基礎(chǔ)上提供簡(jiǎn)潔的可視化WEB UI,是用來(lái)管理SpringBoot應(yīng)用程序的一個(gè)簡(jiǎn)單的界面,功能如下:

  1. 顯示 name/id 和版本號(hào)
  2. 顯示在線(xiàn)狀態(tài)
  3. Logging日志級(jí)別管理
  4. JMX beans管理
  5. Threads會(huì)話(huà)和線(xiàn)程管理
  6. Trace應(yīng)用請(qǐng)求跟蹤
  7. 應(yīng)用運(yùn)行參數(shù)信息,如:
    • Java 系統(tǒng)屬性
    • Java 環(huán)境變量屬性
    • 內(nèi)存信息
    • Spring 環(huán)境屬性

應(yīng)用

1.新建springboot-admin服務(wù)端

引入服務(wù)端pom依賴(lài):

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
            <version>2.0.1</version>
        </dependency>

        <!-- spring-security安全認(rèn)證 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>

application.yml配置

server:
  port: 8080

#admin登錄的用戶(hù)名和密碼
spring:
  application:
    name: admin-server

  #security用戶(hù)配置
  security:
    user:
      name: admin
      password: admin

  boot:
    admin:
      context-path: /admin  
      discovery: true

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

新建SecuritySecureConfig配置:

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;

/**
 * @Description: TODO(Springboot-Admin登錄配置)
 * @Author: 愛(ài)飄de小子
 */
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter{

    /**
     * -private
     * 定義Admin上下文路徑
     */
    private final String adminContextPath;

    /**
     * 由于解決分布式Web應(yīng)用程序中的身份驗(yàn)證和授權(quán)有多種方法,因此Spring Boot Admin不提供默認(rèn)方法。默認(rèn)情況下,spring-boot-admin-server-ui提供登錄頁(yè)面和注銷(xiāo)按鈕。
     * Spring Security配置
     * @param adminServerProperties
     */
    public SecuritySecureConfig(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().disable();
    }
}

啟動(dòng)類(lèi)添加@EnableAdminServer注解:

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

/**
 * @author 愛(ài)飄de小子
 */
@EnableAutoConfiguration
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

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

}

啟動(dòng)springboot項(xiàng)目即可訪(fǎng)問(wèn): ip:port/admin

2.配置客戶(hù)端(被監(jiān)控的springboot項(xiàng)目)

pom文件添加依賴(lài):

        <!-- springboot admin 客戶(hù)端 -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>
        <!-- web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

application.yml配置:

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080/
        username: admin
        password: admin
        instance:
          prefer-ip: true  #使用IP注冊(cè)
          
#項(xiàng)目健康監(jiān)控
management:
  endpoints:
    web:
      exposure:
        include: "*"
      base-path: /admin  #服務(wù)端配置的context-path
  endpoint:
    health:
      show-details: always

#項(xiàng)目信息 
info:
  app:
    #自定義顯示信息
    name: "xxx"
    description: "xxx"
    version: "xx"
    environment: "xx"
    spring-boot-version: "2.0.1.RELEASE"
    spring-admin-version: "2.0.1"
  version: "1.0"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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