日志服务SLS关联调用链

日志服务SLS的事件配置功能可以关联日志与调用链的TraceID,在应用出现问题时,即可通过业务日志中写入的traceId快速关联到调用链,及时定位分析、解决问题。本文介绍如何在日志服务SLS中关联调用链的TraceID。

前提条件

步骤一:提取traceId字段

  • 如果您上报的日志中的traceId已经是单独的字段,请跳过当前步骤。

  • 如果采集的日志中,traceId是某个字段(例如content字段)的一部分,则需要从该字段(content字段)中提取出traceId作为单独的字段。

  1. 登录日志服务控制台

  2. 选择应用日志所在的Project和Logstore。

  3. 使用Logtail正则解析插件,提取日志中的traceId作为单独的字段。

    1. 选择数据接入 > Logtail配置,然后单击管理Logtail配置

      image

    2. 单击编辑进入编辑模式,在数据处理设置项中新增类型为提取字段(正则模式)的处理插件。

      假设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)。更多信息请参见正则解析

      image.png配置完成后,成功提取traceId的日志内容如下。

      image

步骤二:配置跳转事件

  1. 单击某条日志中traceId(或spanId)的值,然后在弹出的窗口中单击前往配置

    image

  2. 在弹出的高级事件配置窗口中,为traceId(或spanId)字段添加事件,然后单击确认

    image

    • 配置名称:自定义名称,例如打开调用链分析

    • 事件行为:选择自定义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}"

  3. 跳转事件配置完成后,再次单击traceId(或spanId)字段值,在弹出的窗口单击打开调用链分析,跳转至可观测链路 OpenTelemetry 版调用链分析页面。

    image

    调用链分析页面,您可以查询traceId对应的调用链。更多信息,请参见调用链分析

    image