diff --git a/README.md b/README.md
index 3bc77e02b..6654b0d6c 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/ruoyi-ui/src/views/monitor/admin/index.vue b/ruoyi-ui/src/views/monitor/admin/index.vue
new file mode 100644
index 000000000..f1d48b0ac
--- /dev/null
+++ b/ruoyi-ui/src/views/monitor/admin/index.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/ruoyi/pom.xml b/ruoyi/pom.xml
index c3fb2c68a..1122185d5 100644
--- a/ruoyi/pom.xml
+++ b/ruoyi/pom.xml
@@ -31,6 +31,7 @@
5.5.8
2.2.6.RELEASE
11.0
+ 2.3.1
@@ -270,6 +271,23 @@
${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
+
+
diff --git a/ruoyi/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java b/ruoyi/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java
new file mode 100644
index 000000000..49b541104
--- /dev/null
+++ b/ruoyi/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/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 385439e21..4822c9127 100644
--- a/ruoyi/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi/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/src/main/resources/application-dev.yml b/ruoyi/src/main/resources/application-dev.yml
index 1fd664db5..65f88053e 100644
--- a/ruoyi/src/main/resources/application-dev.yml
+++ b/ruoyi/src/main/resources/application-dev.yml
@@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
- url: jdbc:mysql://192.168.31.222:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+ url: jdbc:mysql://192.168.0.222:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
username: root
- password: c6142b27f1385bc163ffe7f4ebfc52ac
+ password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
@@ -43,8 +43,8 @@ spring:
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
- login-username:
- login-password:
+ login-username: ruoyi
+ login-password: 123456
filter:
stat:
enabled: true
@@ -58,7 +58,7 @@ spring:
# redis 配置
redis:
# 地址
- host: 192.168.31.222
+ host: 192.168.0.222
# 端口,默认为6379
port: 6379
# 数据库索引
diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml
index fe95c6fd4..4a80c434e 100644
--- a/ruoyi/src/main/resources/application.yml
+++ b/ruoyi/src/main/resources/application.yml
@@ -26,7 +26,7 @@ captcha:
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
- port: 8081
+ port: 8080
servlet:
# 应用的访问路径
context-path: /
@@ -57,6 +57,7 @@ logging:
level:
com.ruoyi: @logging.level@
org.springframework: warn
+ config: classpath:logback.xml
# Spring配置
spring:
@@ -64,30 +65,57 @@ spring:
messages:
# 国际化资源文件路径
basename: i18n/messages
- profiles:
+ profiles:
active: @profiles.active@
# 文件上传
servlet:
- multipart:
- # 单个文件大小
- max-file-size: 10MB
- # 设置总上传的文件大小
- max-request-size: 20MB
+ multipart:
+ # 单个文件大小
+ max-file-size: 10MB
+ # 设置总上传的文件大小
+ max-request-size: 20MB
# 服务模块
devtools:
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:
- # 令牌自定义标识
- header: Authorization
- # 令牌密钥
- secret: abcdefghijklmnopqrstuvwxyz
- # 令牌有效期(默认30分钟)
- expireTime: 30
-
+ # 令牌自定义标识
+ header: Authorization
+ # 令牌密钥
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 令牌有效期(默认30分钟)
+ expireTime: 30
+
# MyBatis配置
# https://baomidou.com/config/
mybatis-plus:
@@ -177,11 +205,11 @@ mybatis-plus:
selectStrategy: NOT_NULL
# PageHelper分页插件
-pagehelper:
+pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
- params: count=countSql
+ params: count=countSql
# Swagger配置
swagger:
@@ -191,7 +219,7 @@ swagger:
pathMapping: /dev-api
# 防止XSS攻击
-xss:
+xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
diff --git a/ruoyi/src/main/resources/logback.xml b/ruoyi/src/main/resources/logback.xml
index f27bff9af..a759788c4 100644
--- a/ruoyi/src/main/resources/logback.xml
+++ b/ruoyi/src/main/resources/logback.xml
@@ -5,28 +5,41 @@
value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
-
-
-
- ${console.log.pattern}
+
+
+
+ ${console.log.pattern}
utf-8
-
-
-
-
-
- ${log.path}/sys-info.log
+
+
+
+
+
+ ${log.path}/sys-console.log
+
+ ${log.pattern}
+ utf-8
+
+
+
+ INFO
+
+
+
+
+
+ ${log.path}/sys-info.log
-
+
- ${log.path}/sys-info.%d{yyyy-MM-dd}.log
-
- 60
-
-
- ${log.pattern}
-
-
+ ${log.path}/sys-info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
INFO
@@ -34,16 +47,16 @@
DENY
-
-
-
- ${log.path}/sys-error.log
+
+
+
+ ${log.path}/sys-error.log
${log.path}/sys-error.%d{yyyy-MM-dd}.log
-
- 60
+
+ 60
${log.pattern}
@@ -51,16 +64,16 @@
ERROR
-
+
ACCEPT
-
+
DENY
-
-
+
+
- ${log.path}/sys-user.log
+ ${log.path}/sys-user.log
${log.path}/sys-user.%d{yyyy-MM-dd}.log
@@ -71,23 +84,24 @@
${log.pattern}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/sql/ry_20210210.sql b/sql/ry_20210210.sql
index a6b882d4f..8b721ab22 100644
--- a/sql/ry_20210210.sql
+++ b/sql/ry_20210210.sql
@@ -178,6 +178,9 @@ insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'm
insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', sysdate(), '', null, '表单构建菜单');
insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单');
insert into sys_menu values('116', '系统接口', '3', '3', 'swagger', 'tool/swagger/index', 1, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单');
+-- springboot-admin监控
+insert into sys_menu values('117', 'Admin监控', '2', '5', 'Admin', 'monitor/admin/index', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 'admin', sysdate(), '', null, 'Admin监控菜单');
+
-- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 'admin', sysdate(), '', null, '操作日志菜单');
insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', sysdate(), '', null, '登录日志菜单');