Golang应用业务日志关联调用链TraceId

更新时间:
复制为 MD 格式

您可以在Golang应用的业务日志中关联调用链的TraceId信息,从而在应用出现问题时,能够通过调用链的TraceId快速关联到业务日志,及时定位、分析并解决问题。

前提条件

  • 您已将应用通过Golang探针编译并部署上线。

  • 已通过日志服务SLS完成日志采集,具体操作,请参见数据采集概述

背景信息

ARMSGolang微服务的业务日志中关联调用链TraceId的功能基于对日志框架的埋点,目前支持的日志框架如下:

组件

仓库地址

低版本

高版本

Zerolog

https://github.com/rs/zerolog

v1.10.0

v1.33.0

Zap

https://github.com/uber-go/zap

v1.20.0

v1.27.0

Logrus

https://github.com/sirupsen/logrus

v1.5.0

v1.9.3

Log

https://pkg.go.dev/log

v1.21

无限制

Slog

https://pkg.go.dev/log/slog

v1.21

无限制

开启关联业务日志与TraceId开关

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表

  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。

    说明

    语言列的图标含义如下:

    Java图标:接入应用监控的Java应用。

    image:接入应用监控的Golang应用。

    image:接入应用监控的Python应用。

    -:接入可观测链路 OpenTelemetry 版的应用。

  3. 在上方导航栏选择应用配置 > 自定义配置

  4. 自定义配置页签的应用日志关联配置区域,选择日志源为日志服务SLS,打开关联业务日志与TraceId开关,选择日志服务所在地域,然后绑定ProjectLogstore。

    选择关联类型日志库(Logstore)数据集(StoreView),设置关联索引全文索引或指定字段索引,然后单击保存

  5. 如果应用的业务日志中成功打印出TraceId信息,则说明业务日志关联调用链的TraceId关联成功,如下所示。

    2024/12/09 11:14:39  trace_id=0c74ce6d96528xxx2 span_id=ae73xxx cedbrequest to mongon server
    $$$$$$$$$$$$$$
    map[Content-Length:[20] Content-Type:[text/plain; charset=utf-8] Date:[Mon, 09 Dec 2024 03:14:39 GMT] Eagleeye-Traceid:[0c74ce6d96528cxxx2]]
    $$$$$$$$$$$$$$
  6. (可选)配置SLS日志采集接入,将应用日志上传至上述步骤绑定的ProjectLogstore中。

    ARMS默认不会采集应用日志。

    1  12-09 10:43:38  @ 10.36.45.83  cn-hangzhou.xxx.83  1733712219  k8s-group-c7ab2784bd...d17fa  c7ab2784bd8a84020b05...d17fa  xxx.101  ad-recommend-server
       registry.cn-hangzhou...erver  insights  xxx.83  cn-hangzhou.xxx.83  ad-recommend-server-...bc6xn  65c79c55-9e04-469f-9...9d636
       _source_: stderr
       _time_: 2024-12-09T10:43:38.366744191+08:00
       content: 2024/12/09 10:43:38  trace_id=cf6281bdde61f7xxx7dd span_id=7fc65xxx72e [grpc] SayHello message:"Hello Hello"