日志服务SLS的事件配置功能可以关联日志与调用链的TraceID,在应用出现问题时,即可通过业务日志中写入的traceId快速关联到调用链,及时定位分析、解决问题。本文介绍如何在日志服务SLS中关联调用链的TraceID。
前提条件
应用已接入可观测链路 OpenTelemetry 版。具体操作,请参见接入指南。
应用日志已接入日志服务SLS,并且日志中已写入traceId(或spanId)。具体操作,请参见快速入门和如何将traceId自动写入日志。
步骤一:提取traceId字段
如果您上报的日志中的traceId已经是单独的字段,请跳过当前步骤。
如果采集的日志中,traceId是某个字段(例如content字段)的一部分,则需要从该字段(content字段)中提取出traceId作为单独的字段。
登录日志服务控制台。
选择应用日志所在的Project和Logstore。
使用Logtail正则解析插件,提取日志中的traceId作为单独的字段。
选择
,然后单击管理Logtail配置。单击编辑进入编辑模式,在数据处理设置项中新增类型为提取字段(正则模式)的处理插件。
假设Logstore中某个日志的content字段内容如下,要从content字段中提取traceId(或spanId)。
2024-05-06 12:12:49.685 [http-nio-9190-exec-3] DEBUG io.lettuce.core.protocol.DefaultEndpoint - traceId:ea1a00002d17150191696858089d0007 - [channel=0x5d069239, /10.0.0.45:49614 -> redis/192.168.216.80:6379, epid=0x1] write() done
将基础配置中的原始字段设置为content,正则表达式可以设置为
traceId:([a-zA-Z0-9]+)
,在结果字段名中添加traceId(或spanId)。更多信息请参见正则解析。配置完成后,成功提取traceId的日志内容如下。
步骤二:配置跳转事件
单击某条日志中traceId(或spanId)的值,然后在弹出的窗口中单击前往配置。
在弹出的高级事件配置窗口中,为traceId(或spanId)字段添加事件,然后单击确认。
配置名称:自定义名称,例如
打开调用链分析
。事件行为:选择自定义HTTP链接。
协议:选择自定义,并设置为
https
。链接地址:
如果要用traceId过滤调用链,链接地址格式为
trace.console.aliyun.com/#/${regionId}/tracing-explorer?source=XTRACE&filters=traceId="${traceId}"
,需要将${regionId}
修改为您的应用接入可观测链路 OpenTelemetry 版的地域。例如应用接入到杭州区域,需要将
${regionId}
替换为cn-hangzhou
。完整链接地址为trace.console.aliyun.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=traceId="${traceId}"
。如果要用spanId过滤调用链,需要将spanId提取为单独的字段,并将链接中的
${traceId}
替换为${spanId}
。如果您希望同时对traceId和spanId进行过滤,完整链接地址为trace.console.aliyun.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=traceId="${traceId}" AND spanId="${spanId}"
。如果您希望使用自定义的属性(Attributes和Resources)过滤调用链,链接地址格式为
trace.console.aliyun.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=${调用链中自定义属性的名称}="${SLS日志中的字段名}"
。例如当您希望过滤某个命名空间的调用链时,SLS日志中有一个表示命名空间的
namespace
字段,并且调用链的Resources中包含k8s.namespace.name属性,那么完整链接地址为trace.console.aliyun.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=resources.k8s.namespace.name="${namespace}"
。
跳转事件配置完成后,再次单击traceId(或spanId)字段值,在弹出的窗口单击打开调用链分析,跳转至可观测链路 OpenTelemetry 版的调用链分析页面。
在调用链分析页面,您可以查询traceId对应的调用链。更多信息,请参见调用链分析。