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

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

前提条件

背景信息

ARMS在业务日志中关联调用链TraceId的功能是基于对日志框架的埋点,目前支持Python官方日志框架Logging。

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

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

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

    说明

    语言列的图标含义如下:

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

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

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

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

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

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

    image

  5. 配置Python探针。

    1. 设置如下环境变量,在探针中开启关联业务日志与TraceId功能。

      # 默认为false
      OTEL_PYTHON_LOG_CORRELATION=true   
      说明

      环境变量OTEL_PYTHON_LOG_CORRELATION设置为true则开启关联业务日志与TraceId,不设置或设置为false则关闭业务日志与TraceId关联。

    2. 通过以下环境变量设置需要关联TraceId的业务日志级别。

      #  设置需要关联traceId的日志级别,可选值为:debug、info、warning、error
      OTEL_PYTHON_LOG_LEVEL=warning
      说明

      环境变量OTEL_PYTHON_LOG_LEVEL设置为warning则日志级别为warning及以上的日志会关联TraceId。

    3. 通过以下环境变量设置关联TraceId后的日志格式,您可以根据需求自行增减格式内容。

      #   设置日志格式, 以下是默认格式。可以根据需求增减。
      OTEL_PYTHON_LOG_FORMAT="%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s trace_sampled=%(otelTraceSampled)s] - %(message)s"
      • otelTraceID:TraceId

      • otelSpanID:当前日志生成所属的SpanId

      • otelTraceSampled:采样标识

      • otelServiceName:应用名称

    以上环境变量配置完成后,打印的日志格式如下。

    2025-01-03_11-02-42

  6. (可选)配置SLS日志采集接入,将应用日志上传至上述步骤绑定的ProjectLogstore中。

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