分布式、零侵入式的链路日志分析框架
MinBox Logging是一款分布式、零侵入式的链路日志分析框架,支持SpringCloud微服务架构下配置使用,内部封装了RestTemplate、OpenFeign两种方式透传链路信息。
零侵入式
MinBox Logging无需使用注解配置采集链路日志,只需要添加依赖后简单配置Minbox Loggin Admin的相关地址或服务名称即可,每次在收到请求时就会把请求对应的链路日志详细信息自动上报到MinBox Logging Admin进行后续分析、告警通知等。
链路日志分析图
日志客户端
链路日志的采集端,也就是具体的业务服务,只需要添加minbox-logging-client客户端进行简单的配置就可以实现日志的采集以及日志的异步上报。
日志管理端
对外提供安全的日志上报功能,通过整合Spring Security来完成Basic Auth基础认证,管理端接收到采集端上报的日志后会自动将日志存储到数据库,考虑到扩展方便,同样也提供监听日志上报事件(ReportLogEvent)的方式来自定义存储日志到消息队列、logstash、文件等存储介质。
日志管理界面
MinBox Logging Admin提供了界面管理应用程序,通过VUE前端框架进行编写界面与管理端的接口通讯,实时展示链路日志、日志采集服务列表等信息,可查看每条链路日志的详细信息(包含:请求头、请求参数、响应内容、响应头、状态码、异常堆栈信息等)。
整合Spring Security后的登录界面
可以直接整合Spring Security来完成Basic安全认证。
上报日志的服务列表
请求日志的采集服务在第一次上报时,会自动创建一条服务记录,服务的唯一性是根据:服务ID + 服务IP + 服务端Port 来进行定义。
在每次上报日志成功后会修改服务的最后一次上报时间。
链路日志列表
链路日志是我们访问的入口服务生成,比如:bff-user -> user-service,链路日志产生的位置则是bff-user服务,链路日志是接口请求的入口也是做出响应的结束位置,因此我们可以在页面上查看接口的请求参数详情、头信息以及响应的内容,至于链路日志内的日志单元目前界面还未做展示,可以根据traceId链路日志编号自行去数据库查询。
链路日志详情
每一个请求的链路日志都会包含上图中的全部字段,从请求开始 -> 响应结束一条链路闭合记录。
安全性
MinBox Logging Admin UI内部提供了login.html登录页面,可以整合Spring Security通过配置loginPageUrl登录跳转地址来使用内置的登录页面,当然也可以自定义登录页面。
可与MinBox Logging Admin共同使用Spring Security的相同配置提升安全性。
项目地址:https://gitee.com/minbox-projects/minbox-logging