前几篇笔记学习了soul网关的一些插件,今天来学习一下soul网关的monitor插件,它可以监控自身运行状态(JVM相关),请求的响应迟延,QPS、TPS等相关metrics。
首先看一下关于monitor插件的架构图
在架构图中出现了一些不太熟悉的东西,比如Prometheus
、Metrics
。先来学习一下这两个概念。
使用Aspect记录日志
在日常的项目中,如果想在日志里面记录一下请求的具体参数、请求的耗时等,一般使用的方式是Aspect。
我们就以soul-example-http为例,看下怎么使用Aspect来记录/order/**
接口的耗时
- 1.确保pom.xml里面有以下两个依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
</dependency>
- 2.创建一个
CostTimeAspect
,记录日志获取OrderController里面每个接口的耗时,具体代码如下:
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@Aspect
public class CostTimeAspect {
@Around("execution(* org.dromara.soul.examples.http.controller.OrderController.*(..))")
public Object handleOrderMethod(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
Object res = proceedingJoinPoint.proceed();
long timeCost = System.currentTimeMillis() - startTime;
log.info("method: {}, cost: {}ms",
proceedingJoinPoint.getSignature(), timeCost);
return res;
}
}
- 3.启动
soul-example-http
服务,在浏览器里面调用http://127.0.0.1:8188/order/findById?id=5
,可以得到正常返回