最近要搭建阿里云的日志服务SLS,收集服务日志,进行统一的搜索查询。但遇到一个问题如何在日志中打印链路的TraceId,本文章记录一下对EDAS免费的解决方法。
先看一下阿里官方文档 业务日志关联调用链的TraceId信息
从文档上看,想要在日志中打印traceId,必须要
1.先开通【专家版】ARMS
2.接入应用,安装agent
3.打开关联业务日志与TraceId
4.日志的Layout的Pattern属性中添加%X{EagleEye-TraceID}配置
步骤进行配置,缺一不可。 这个问题也提了工单确认过了。
但是开通【专家版】ARMS 是需要收费的,并且收费不便宜。要收费 麻烦了 预算不支持,怎么办? 后来领导的一句话「EDAS 本就集成了很多阿里的服务」给了我灵感 。哈哈 有办法了。
通过shell登录服务器,通过查看运行的进程,看到已经有agent「arms-bootstrap-1.7.0-SNAPSHOT.jar」存在。 那么必要条件第二条已经满足了。
然后看如何实现第三条:打开关联业务日志与TraceId。
- 进入EDAS管理平台,应用管理 -> 应用列表 找到对应的服务点进去。
- 进入服务后,点击 应用监控 -> 接口调用 点击接口 -> 调用链查询 -> 查看日志
会新打开一个页面,点击 前往绑定。
会自动定位到应用日志关联配置的锚点。选择 日志服务 勾选【关联业务日志与TraceId】
其他无需修改,滚动到页面的最末端,点击「保存」即可。
OK,这样第二、第三条都满足了,第四条自己在应用的logback.xml日志文件配置就OK了,那就是第四条也能满足了。
然后,重启服务发现traceId已经打印出来了。😀
总结起来,其实主要的第二和第三条,安装agent 和 开启关联业务日志与TraceId。