Springcloud微服务安全实战-7-12整合链路追踪和⽇志监控
调⽤链路的监控和统⼀⽇志的监控结合起来。⽐如说我在调⽤链监控上发现有⼀个调⽤订单的服务慢了。通过pinpoint可以看到。⽤户发出来的请求,经过了⽹关,经过了order,经过了pagement。通过pinpoint可以知道慢,也可以知道哪⼀环慢了。但是我想看⼀个整体的⽇志。这个请求从发出去,到回来,经过这四个应⽤,整个的⼀个完整的⽇志。我要看到在gateway上打印了什么。在Api上打了什么,在order上打了什么。在payment上打印了什么⽇志。我希望⼀个查询能把这四个应⽤跟当前这⼀个请求相关的⽇志都展⽰出来。然后来看⼀下这个请求⾥⾯到底发⽣了什么。
微服务网关对比要实现这个功能关键的点就是这个TransactionID,这是⼀个⽆意义的字符串。这个串就是pinpoint⽤来把各个应⽤间的请求给它关联起来的⼀个串,实际上这个串是在这四个应⽤⾥⾯不断的传递的。
我们现在要做的就是在⽇志⾥⾯把这个Transaction打印出来。我们就可以之前⽤elk的⽅式,把它作为⼀个字段,传到我们的elk⾥⾯,然后⼦啊kibana⾥⾯直接搜这个串,然后这个所有带着这个TransactionId的⽇志都会按照时间顺序展⽰出来。你就能看到这个请求在所有四个应⽤上,打出来的⽇志。
开始撸代码
新建⼀个应⽤
创建⼀个product-api
复制orderAPi⾥⾯的l上⾯的部分,下⾯值引⼊starter-wenb的依赖。
创建SpringBoot的启动类。
⽤restTemplate去发服务。
引⼊lombok
然后加上lombok的⽇志的对象。
return 随便写的⼀个字符串。
UserApi打印⽇志
在获取⽤户信息的这⾥,也打印⼀个⽇志
ProductAPI
给ProductAPI指定运⾏的配置
添加⼀个配置⽂件修改启动服务的端⼝
指定端⼝为8064
启动productAPi
pinpoint的配置⽂件
agent⾥⾯加上productAPI
启动测试
再启动userAPI和ProductAPi
productAPI⾥⾯,这⾥要new ⼀个retTemplate 然后重启productAPi
访问product服务没有问题
pinpoint⾥⾯。看到product⾥⾯调⽤了userAPI。userApi⾥⾯调⽤了数据库。这样⼀个链路已经展⽰出来了。
调整⽇志
调整⽇志⾸先要修改agent
pinpoint⾥⾯要进⾏修改。springboot⾥⾯⽤的是logback。所以搜索logback
下⾯这⾥设置为true。pinpont的agent就会⾃动往logback的mdc⾥⾯去加⼀个参数,
配置控制台上⽇志的格式
复制以前写的格式
放在双引号内
pinPoint加的参数叫做PtxId
把这段配置复制到userAPi⾥⾯
重启服务,productAPI和OrderAPI这两个服务。
启动后⽇志⾥⾯多了个⽅括号。就是我们在配置⽂件内配置的⽅括号。这些⽇志都系统启动的时候内部打印出来的。并不是外部打出来的。调⽤⼀个服务
调⽤服务后,⽅括号后内有值了。通过transactionId可以看出,最后这四⾏数据是同⼀个请求,打印出来的。
userAPi的控制台也有同样的trasacgtionId。这是两个系统⾥⾯打印出来的⽇志。但是⽇志⾥⾯会有相同的编号。
这样就可以接⼊ELK⾥⾯。把这⼀段代码作为⼀个单独的字段。提取出来放到elk⾥⾯。在kibana⾥⾯你只要查这个串,两个API
⾥⾯这四⾏⽇志都查出来。
这样在⼀个请求进来以后,在不同的系统⾥⾯打印出来的⽇志,整个提取出来。这⾥不再演⽰。
pinpoint⾥⾯的transactionId和⽇志系统就接起来了。
结束
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论