您可以在Python應用的業務日誌中關聯調用鏈的TraceId資訊,從而在應用出現問題時,能夠通過調用鏈的TraceId快速關聯到業務日誌,及時定位、分析並解決問題。
前提條件
已通過Log ServiceSLS完成日誌採集,具體操作,請參見資料擷取概述。
背景資訊
ARMS在業務日誌中關聯調用鏈TraceId的功能是基於對日誌架構的埋點,目前支援Python官方日誌架構Logging。
開啟關聯業務日誌與TraceId開關
登入ARMS控制台,在左側導覽列選擇。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。-:接入Managed Service for OpenTelemetry的應用。
在上方導覽列選擇。
在自訂配置頁簽的應用日誌關聯配置地區,選擇日誌源為Log ServiceSLS,選擇Log Service所在地區,然後綁定Project和Logstore。

配置Python探針。
設定如下環境變數,在探針中開啟關聯業務日誌與TraceId功能。
# 預設為false OTEL_PYTHON_LOG_CORRELATION=true說明環境變數OTEL_PYTHON_LOG_CORRELATION設定為true則開啟關聯業務日誌與TraceId,不設定或設定為false則關閉業務日誌與TraceId關聯。
通過以下環境變數設定需要關聯TraceId的業務記錄層級。
# 設定需要關聯traceId的記錄層級,可選值為:debug、info、warning、error OTEL_PYTHON_LOG_LEVEL=warning說明環境變數OTEL_PYTHON_LOG_LEVEL設定為warning則記錄層級為warning及以上的日誌會關聯TraceId。
通過以下環境變數設定關聯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:應用程式名稱
日誌關聯TraceId只支援自動關聯root logger,如需自動關聯自訂handler中日誌,請手動設定formatter格式。
formatter = logging.Formatter(os.getenv('OTEL_PYTHON_LOG_FORMAT')) my_handler.setFormatter(formatter)
以上環境變數配置完成後,列印的日誌格式如下。

(可選)配置SLS日誌採集接入,將應用日誌上傳至上述步驟綁定的Project和Logstore中。
ARMS Python探針預設不會採集應用日誌。