Merge remote-tracking branch 'origin/master'
commit
44616d8e62
25
README.md
25
README.md
|
@ -62,6 +62,12 @@
|
||||||
* 地址:http://skywalking-ui.shop.iocoder.cn:18099
|
* 地址:http://skywalking-ui.shop.iocoder.cn:18099
|
||||||
* 管理员账号:admin / admin
|
* 管理员账号:admin / admin
|
||||||
|
|
||||||
|
**Grafana UI**
|
||||||
|
|
||||||
|
* 地址:http://grafana.shop.iocoder.cn:18099
|
||||||
|
* 演示账号:yudaoyuanma / yudaoyuanma
|
||||||
|
* 用于展示 Prometheus 收集的 Metrics 指标数据。
|
||||||
|
|
||||||
**Dubbo Admin**
|
**Dubbo Admin**
|
||||||
|
|
||||||
* 地址:http://dubbo-admin.shop.iocoder.cn:18099
|
* 地址:http://dubbo-admin.shop.iocoder.cn:18099
|
||||||
|
@ -74,7 +80,8 @@
|
||||||
|
|
||||||
**Sentinel Console**
|
**Sentinel Console**
|
||||||
|
|
||||||
TODO
|
* 地址:http://sentinel.shop.iocoder.cn:18099
|
||||||
|
* 账号:sentinel / sentinel
|
||||||
|
|
||||||
**XXL-Job Console**
|
**XXL-Job Console**
|
||||||
|
|
||||||
|
@ -139,7 +146,6 @@ TODO 此处应有一个架构图的装逼 JPG 图。
|
||||||
| [Elasticsearch](https://www.elastic.co/cn/) | 分布式搜索引擎 | 6.7.1 |
|
| [Elasticsearch](https://www.elastic.co/cn/) | 分布式搜索引擎 | 6.7.1 |
|
||||||
| [Dubbo](http://dubbo.apache.org/) | 分布式 RPC 服务框架 | 2.7.1 |
|
| [Dubbo](http://dubbo.apache.org/) | 分布式 RPC 服务框架 | 2.7.1 |
|
||||||
| [RocketMQ](http://dubbo.apache.org/) | 消息中间件 | 4.3.2 |
|
| [RocketMQ](http://dubbo.apache.org/) | 消息中间件 | 4.3.2 |
|
||||||
| [SkyWalking](http://skywalking.apache.org/) | 分布式应用追踪系统 | 6.0.0 |
|
|
||||||
| [Seata](https://github.com/seata/seata) | 分布式事务中间件 | 0.5.1 |
|
| [Seata](https://github.com/seata/seata) | 分布式事务中间件 | 0.5.1 |
|
||||||
| [Zookeeper](http://zookeeper.apache.org/) | 分布式系统协调 | 3.4.9 作为注册中心 |
|
| [Zookeeper](http://zookeeper.apache.org/) | 分布式系统协调 | 3.4.9 作为注册中心 |
|
||||||
| [XXL-Job](http://www.xuxueli.com/xxl-job/) | 分布式任务调度平台 | 2.0.1 |
|
| [XXL-Job](http://www.xuxueli.com/xxl-job/) | 分布式任务调度平台 | 2.0.1 |
|
||||||
|
@ -170,6 +176,21 @@ TODO 此处应有一个架构图的装逼 JPG 图。
|
||||||
| [React](https://reactjs.org/) | JavaScript 框架 | 16.7.0 |
|
| [React](https://reactjs.org/) | JavaScript 框架 | 16.7.0 |
|
||||||
| [Ant Design](https://ant.design/docs/react/introduce-cn) | React UI 组件库 | 3.13.0 |
|
| [Ant Design](https://ant.design/docs/react/introduce-cn) | React UI 组件库 | 3.13.0 |
|
||||||
|
|
||||||
|
### 监控
|
||||||
|
|
||||||
|
一般来说,监控会有三种方式:
|
||||||
|
|
||||||
|
* 1、Tracing ,我们采用 Apache SkyWalking
|
||||||
|
* 2、Logging ,我们采用 ELK
|
||||||
|
* 3、Metrics ,我们采用 Prometheus
|
||||||
|
|
||||||
|
| 框架 | 说明 | 版本 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| [SkyWalking](http://skywalking.apache.org/) | 分布式应用追踪系统 | 6.0.0 |
|
||||||
|
| [Prometheus](https://prometheus.io/) | 服务监控体系 | 2.9.2 |
|
||||||
|
| [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) | 告警管理器 | 0.17.0 |
|
||||||
|
| [Grafana](https://grafana.com/) | 仪表盘和图形编辑器 | 0.17.0 |
|
||||||
|
|
||||||
### 其它
|
### 其它
|
||||||
|
|
||||||
* Jenkins 持续集成
|
* Jenkins 持续集成
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
package cn.iocoder.common.framework.exception;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.constant.SysErrorCodeEnum;
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.web.bind.MissingServletRequestParameterException;
|
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.validation.ConstraintViolationException;
|
|
||||||
|
|
||||||
@ControllerAdvice
|
|
||||||
public class GlobalExceptionHandler {
|
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
// 逻辑异常
|
|
||||||
@ResponseBody
|
|
||||||
@ExceptionHandler(value = ServiceException.class)
|
|
||||||
public CommonResult serviceExceptionHandler(HttpServletRequest req, ServiceException ex) {
|
|
||||||
logger.debug("[serviceExceptionHandler]", ex);
|
|
||||||
return CommonResult.error(ex.getCode(), ex.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spring MVC 参数不正确
|
|
||||||
@ResponseBody
|
|
||||||
@ExceptionHandler(value = MissingServletRequestParameterException.class)
|
|
||||||
public CommonResult missingServletRequestParameterExceptionHandler(HttpServletRequest req, MissingServletRequestParameterException ex) {
|
|
||||||
logger.warn("[missingServletRequestParameterExceptionHandler]", ex);
|
|
||||||
return CommonResult.error(SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getCode(), SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getMessage() + ":" + ex.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
@ResponseBody
|
|
||||||
@ExceptionHandler(value = ConstraintViolationException.class)
|
|
||||||
public CommonResult constraintViolationExceptionHandler(HttpServletRequest req, ConstraintViolationException ex) {
|
|
||||||
logger.info("[constraintViolationExceptionHandler]", ex);
|
|
||||||
// TODO 芋艿,后续要想一个更好的方式。
|
|
||||||
// 拼接详细报错
|
|
||||||
StringBuilder detailMessage = new StringBuilder("\n\n详细错误如下:");
|
|
||||||
ex.getConstraintViolations().forEach(constraintViolation -> detailMessage.append("\n").append(constraintViolation.getMessage()));
|
|
||||||
return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getMessage()
|
|
||||||
+ detailMessage.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@ResponseBody
|
|
||||||
@ExceptionHandler(value = Exception.class)
|
|
||||||
public CommonResult resultExceptionHandler(HttpServletRequest req, Exception e) {
|
|
||||||
logger.error("[resultExceptionHandler]", e);
|
|
||||||
// 返回
|
|
||||||
return CommonResult.error(SysErrorCodeEnum.SYS_ERROR.getCode(), SysErrorCodeEnum.SYS_ERROR.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO 芋艿,应该还有其它的异常,需要进行翻译
|
|
||||||
|
|
||||||
}
|
|
|
@ -60,6 +60,19 @@
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 监控相关 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-actuator-autoconfigure</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.micrometer</groupId>
|
||||||
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package cn.iocoder.mall.spring.boot.metrics;
|
||||||
|
|
||||||
|
import io.micrometer.core.instrument.MeterRegistry;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass({MeterRegistryCustomizer.class})
|
||||||
|
@ConditionalOnProperty(prefix = "management.metrics", value = "enable", matchIfMissing = true) // 允许使用 management.metrics.enable=false 禁用 Metrics
|
||||||
|
public class MetricsAutoConfiguration {
|
||||||
|
|
||||||
|
@Value("${spring.application.name}")
|
||||||
|
private String applicationName;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
|
||||||
|
return registry -> registry.config().commonTags("application", applicationName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -10,6 +10,8 @@ import cn.iocoder.mall.admin.api.SystemLogService;
|
||||||
import cn.iocoder.mall.admin.api.dto.systemlog.AccessLogAddDTO;
|
import cn.iocoder.mall.admin.api.dto.systemlog.AccessLogAddDTO;
|
||||||
import cn.iocoder.mall.admin.api.dto.systemlog.ExceptionLogAddDTO;
|
import cn.iocoder.mall.admin.api.dto.systemlog.ExceptionLogAddDTO;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import io.micrometer.core.instrument.Counter;
|
||||||
|
import io.micrometer.core.instrument.Metrics;
|
||||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
import org.apache.dubbo.config.annotation.Reference;
|
import org.apache.dubbo.config.annotation.Reference;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -29,6 +31,11 @@ import java.util.Date;
|
||||||
@ControllerAdvice
|
@ControllerAdvice
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常总数 Metrics
|
||||||
|
*/
|
||||||
|
private static final Counter EXCEPTION_COUNTER = Metrics.counter("mall.exception.total");
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Value("${spring.application.name}")
|
@Value("${spring.application.name}")
|
||||||
|
@ -73,6 +80,8 @@ public class GlobalExceptionHandler {
|
||||||
// 插入异常日志
|
// 插入异常日志
|
||||||
ExceptionLogAddDTO exceptionLog = new ExceptionLogAddDTO();
|
ExceptionLogAddDTO exceptionLog = new ExceptionLogAddDTO();
|
||||||
try {
|
try {
|
||||||
|
// 增加异常计数 metrics
|
||||||
|
EXCEPTION_COUNTER.increment();
|
||||||
// 初始化 exceptionLog
|
// 初始化 exceptionLog
|
||||||
initExceptionLog(exceptionLog, req, e);
|
initExceptionLog(exceptionLog, req, e);
|
||||||
// 执行插入 exceptionLog
|
// 执行插入 exceptionLog
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
cn.iocoder.mall.spring.boot.web.AdminMVCAutoConfiguration, \
|
cn.iocoder.mall.spring.boot.web.AdminMVCAutoConfiguration, \
|
||||||
cn.iocoder.mall.spring.boot.web.UserMVCAutoConfiguration, \
|
cn.iocoder.mall.spring.boot.web.UserMVCAutoConfiguration, \
|
||||||
cn.iocoder.mall.spring.boot.swagger.SwaggerAutoConfiguration
|
cn.iocoder.mall.spring.boot.swagger.SwaggerAutoConfiguration, \
|
||||||
|
cn.iocoder.mall.spring.boot.metrics.MetricsAutoConfiguration
|
||||||
|
|
|
@ -59,13 +59,20 @@
|
||||||
<groupId>de.codecentric</groupId>
|
<groupId>de.codecentric</groupId>
|
||||||
<artifactId>spring-boot-admin-starter-client</artifactId>
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>io.micrometer</groupId>
|
||||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
|
|
|
@ -18,3 +18,11 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -66,13 +66,20 @@
|
||||||
<groupId>de.codecentric</groupId>
|
<groupId>de.codecentric</groupId>
|
||||||
<artifactId>spring-boot-admin-starter-client</artifactId>
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>io.micrometer</groupId>
|
||||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -18,3 +18,11 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -65,6 +65,16 @@
|
||||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.micrometer</groupId>
|
||||||
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
|
@ -18,3 +18,12 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -76,6 +76,16 @@
|
||||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.micrometer</groupId>
|
||||||
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
|
@ -18,3 +18,12 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -65,6 +65,16 @@
|
||||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.micrometer</groupId>
|
||||||
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
|
@ -18,3 +18,12 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -75,11 +75,6 @@
|
||||||
<artifactId>micrometer-registry-prometheus</artifactId>
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>io.prometheus</groupId>-->
|
|
||||||
<!-- <artifactId>simpleclient_spring_boot</artifactId>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package cn.iocoder.mall.admin.application.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
//@EnablePrometheusEndpoint
|
|
||||||
//@EnableSpringBootMetricsCollector
|
|
||||||
public class MonitorConfiguration {
|
|
||||||
}
|
|
|
@ -5,6 +5,8 @@ import cn.iocoder.mall.admin.api.AdminService;
|
||||||
import cn.iocoder.mall.admin.api.OAuth2Service;
|
import cn.iocoder.mall.admin.api.OAuth2Service;
|
||||||
import cn.iocoder.mall.admin.api.bo.admin.AdminAuthenticationBO;
|
import cn.iocoder.mall.admin.api.bo.admin.AdminAuthenticationBO;
|
||||||
import cn.iocoder.mall.admin.api.dto.admin.AdminAuthenticationDTO;
|
import cn.iocoder.mall.admin.api.dto.admin.AdminAuthenticationDTO;
|
||||||
|
import io.micrometer.core.instrument.Counter;
|
||||||
|
import io.micrometer.core.instrument.Metrics;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.apache.dubbo.config.annotation.Reference;
|
import org.apache.dubbo.config.annotation.Reference;
|
||||||
|
@ -19,6 +21,11 @@ import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||||
@Api("Admin Passport 模块")
|
@Api("Admin Passport 模块")
|
||||||
public class PassportController {
|
public class PassportController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登陆总数 Metrics
|
||||||
|
*/
|
||||||
|
private static final Counter METRICS_LOGIN_TOTAL = Metrics.counter("mall.admin.passport.login.total");
|
||||||
|
|
||||||
@Reference(validation = "true", version = "${dubbo.provider.OAuth2Service.version}")
|
@Reference(validation = "true", version = "${dubbo.provider.OAuth2Service.version}")
|
||||||
private OAuth2Service oauth2Service;
|
private OAuth2Service oauth2Service;
|
||||||
|
|
||||||
|
@ -28,6 +35,9 @@ public class PassportController {
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@ApiOperation(value = "手机号 + 密码登陆")
|
@ApiOperation(value = "手机号 + 密码登陆")
|
||||||
public CommonResult<AdminAuthenticationBO> login(AdminAuthenticationDTO adminAuthenticationDTO) {
|
public CommonResult<AdminAuthenticationBO> login(AdminAuthenticationDTO adminAuthenticationDTO) {
|
||||||
|
// 增加计数
|
||||||
|
METRICS_LOGIN_TOTAL.increment();
|
||||||
|
// 执行登陆
|
||||||
return success(adminService.authentication(adminAuthenticationDTO));
|
return success(adminService.authentication(adminAuthenticationDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,13 @@ spring:
|
||||||
url: http://127.0.0.1:18097
|
url: http://127.0.0.1:18097
|
||||||
|
|
||||||
|
|
||||||
management:
|
#management:
|
||||||
endpoints:
|
# endpoints:
|
||||||
web:
|
# web:
|
||||||
exposure:
|
# exposure:
|
||||||
include: "*"
|
# include: "*"
|
||||||
server:
|
# server:
|
||||||
port: 19083 # 配置独立端口。而该端口,不使用 nginx 对外暴露,从而不配置安全认证。也就是说,内网环境可访问,外网环境不可访问。当然,这么做的前提是,认为内网安全。
|
# port: 19083 # 配置独立端口。而该端口,不使用 nginx 对外暴露,从而不配置安全认证。也就是说,内网环境可访问,外网环境不可访问。当然,这么做的前提是,认为内网安全。
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: true # 暂时不去掉
|
enable: true # 暂时不去掉
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package cn.iocoder.mall.admin.api.bo.sms;
|
package cn.iocoder.mall.admin.api.bo.sms;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@ -28,7 +27,7 @@ public class PageSmsSignBO {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class Sign {
|
public static class Sign {
|
||||||
/**
|
/**
|
||||||
* 编号
|
* 编号
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class PageSmsTemplateBO {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class Template {
|
public static class Template {
|
||||||
/**
|
/**
|
||||||
* 编号
|
* 编号
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -62,6 +62,18 @@
|
||||||
<artifactId>swagger-bootstrap-ui</artifactId>
|
<artifactId>swagger-bootstrap-ui</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 监控相关 -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.micrometer</groupId>
|
||||||
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 测试相关 -->
|
<!-- 测试相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
|
@ -18,3 +18,11 @@ server:
|
||||||
|
|
||||||
swagger:
|
swagger:
|
||||||
enable: false
|
enable: false
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,env,metrics,prometheus
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
|
Loading…
Reference in New Issue