准备工作:
参看本系列之前篇:服务器安装elastic search + 本机docker启动的kibana-tencent + 使用本机安装的logstash。。。
本微服务实现的logstash配置如下:
-
使用腾讯云redis
-
启动本机mysql
-
启动本机docker
启动nacos,微服务依赖它作为服务注册发现和配置中心
启动kibana-tencent准备查看业务日志数据 -
启动本机zipkin server
链路追踪,可参看 试验zipkin初步 篇
不启动zipkin server也不影响功能 -
启动gateway+auth
auth的日志配置如下:其中一部分,整合logstash的,gateway微服务类似。
调用接口测试:
控制台和日志文件都在logback-spring.xml中有相应配置,所以日志也输出到console+日志文件中了
查看kibana: 可以看到traceId,业务message内容,模块等等信息。。。
最后一步:把traceId 输出到接口请求响应头中,这样就可依据traceId去kibana中查找链路日志,排查问题
问题来了:代码中如何获取traceid值呢?
在IgnoreUrlsRemoveJwtFilter类中:流量拦截的入口,直接流入Tracer实例:
FYI: 在sleuth官方reference.pdf给出的示例中,是通过单独写一个filter,给请求链中加一道traceId请求头。
测试:
对应在kibana中也可以搜索到: