diff --git a/README.md b/README.md index 5610cddb..0624abe7 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ * swagger 修改为 knife4j * 集成 Hutool 5.X 并重写RuoYi部分功能 * 集成 Feign 接口化管理 Http 请求(如三方请求 支付,短信,推送等) +* 集成 spring-boot-admin 全方位监控 * 升级MybatisPlus 3.4.2 * 增加demo模块示例(给不会增加模块的小伙伴做参考) * 同步升级 3.4.0 diff --git a/pom.xml b/pom.xml index ef756abb..c7096511 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,7 @@ 5.5.8 2.2.6.RELEASE 11.0 + 2.3.1 @@ -147,6 +148,22 @@ ${feign-okhttp.version} + + de.codecentric + spring-boot-admin-starter-server + ${spring-boot-admin.version} + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin.version} + + + + org.springframework.boot + spring-boot-starter-actuator + + com.ruoyi diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 6d476c9c..65f88053 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -43,8 +43,8 @@ spring: allow: url-pattern: /druid/* # 控制台管理用户名和密码 - login-username: - login-password: + login-username: ruoyi + login-password: 123456 filter: stat: enabled: true diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 3bc738df..4ed20c85 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -57,6 +57,7 @@ logging: level: com.ruoyi: @logging.level@ org.springframework: warn + config: classpath:logback.xml # Spring配置 spring: @@ -78,6 +79,33 @@ spring: restart: # 热部署开关 enabled: true + application: + name: ruoyi-vue-plus + boot: + admin: + # Spring Boot Admin Client 客户端的相关配置 + client: + # 设置 Spring Boot Admin Server 地址 + url: http://localhost:${server.port}${spring.boot.admin.context-path} + instance: + prefer-ip: true # 注册实例时,优先使用 IP +# username: ruoyi +# password: 123456 + # Spring Boot Admin Server 服务端的相关配置 + context-path: /admin # 配置 Spring + +# Actuator 监控端点的配置项 +management: + endpoints: + web: + # Actuator 提供的 API 接口的根目录。默认为 /actuator + base-path: /actuator + exposure: + # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 + include: '*' + endpoint: + logfile: + external-file: ./logs/sys-console.log # token配置 token: diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml index f27bff9a..d407df43 100644 --- a/ruoyi-admin/src/main/resources/logback.xml +++ b/ruoyi-admin/src/main/resources/logback.xml @@ -12,6 +12,19 @@ utf-8 + + + + ${log.path}/sys-console.log + + ${log.pattern} + utf-8 + + + + INFO + + @@ -85,6 +98,7 @@ + diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 2b04147e..62de11a1 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -128,6 +128,15 @@ feign-okhttp + + de.codecentric + spring-boot-admin-starter-server + + + de.codecentric + spring-boot-admin-starter-client + + \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java new file mode 100644 index 00000000..49b54110 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java @@ -0,0 +1,24 @@ +package com.ruoyi.framework.config; + +import de.codecentric.boot.admin.server.config.EnableAdminServer; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration; +import org.springframework.boot.task.TaskExecutorBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; + +@Configuration +@EnableAdminServer +public class AdminServerConfig { + + @Lazy + @Bean(name = TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME) + @ConditionalOnMissingBean(Executor.class) + public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) { + return builder.build(); + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 385439e2..4822c912 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -1,5 +1,9 @@ package com.ruoyi.framework.config; +import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; +import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; +import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; +import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpMethod; @@ -14,9 +18,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.logout.LogoutFilter; import org.springframework.web.filter.CorsFilter; -import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; -import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; -import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; /** * spring security配置 @@ -55,6 +56,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter */ @Autowired private CorsFilter corsFilter; + + @Autowired + private AdminServerProperties adminServerProperties; /** * 解决 无法直接注入 AuthenticationManager @@ -113,6 +117,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .antMatchers("/webjars/**").anonymous() .antMatchers("/*/api-docs").anonymous() .antMatchers("/druid/**").anonymous() + // Spring Boot Admin Server 的安全配置 + .antMatchers(adminServerProperties.getContextPath()).anonymous() + .antMatchers(adminServerProperties.getContextPath() + "/**").anonymous() + // Spring Boot Actuator 的安全配置 + .antMatchers("/actuator").anonymous() + .antMatchers("/actuator/**").anonymous() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and() diff --git a/ruoyi-ui/src/views/monitor/admin/index.vue b/ruoyi-ui/src/views/monitor/admin/index.vue new file mode 100644 index 00000000..f1d48b0a --- /dev/null +++ b/ruoyi-ui/src/views/monitor/admin/index.vue @@ -0,0 +1,26 @@ +