背景描述
系统采用了前后端分离的架构搭建:
- 前端是采用Vue 2.X+elementUI开发,构建的安装包部署到Nginx服务上。
- 后端业务采用Java+spring cloud微服务架构,前置spring cloud gateway网关接入,后置各种业务微服务应用构成,通过alibaba Nacos做服务发现和应用配置。
问题描述
需求是想把系统从Vue前端到Java后端的每一次访问日志通过唯一ID全链路跟踪起来。在Java后端微服务的全链路跟踪直接引入Spring Cloud Sleuth方案解决,但如何把Vue前端的Nginx访问日志与Java后端日志里由Sleuth生成的traceid关联起来呢?
解决思路
思路一
在前端Nginx生成访问唯一ID,覆盖后端Sleuth方案产生的TraceID。
【nginx的request_id就是一个随机唯一ID,通过nginx配置可传递到upstream网关层,但是没有找到好办法去覆盖Sleuth方案产生TraceID,最终放弃此思路 】
思路二
利用后端Sleuth方案产生的TraceID,并在响应的时候把它返回Nginx层,并记录于nginx日志中。【最终选择方案】