Application Real-Time Monitoring Service (ARMS) を使用すると、Python アプリケーションのログにトレース ID を関連付けることができます。これにより、アプリケーションでエラーが発生した場合、トレース ID に関連付けられたログにアクセスして、エラーの特定とトラブルシューティングを行うことができます。
前提条件
Python アプリケーションが ARMS と統合されていること。 詳細については、「Python アプリケーションの監視」をご参照ください。
Simple Log Service を使用してログが収集されていること。 詳細については、「データ収集の概要」をご参照ください。
背景情報
ARMS でトレース ID を Python ログに関連付ける機能は、ログフレームワークのイベントトラッキングに依存しています。 現在、サポートされているのは公式の Python フレームワークである Logging のみです。
手順
ARMS コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択し、アプリケーションをクリックします。
説明[言語] カラムのアイコンは、アプリケーションのプログラミング言語を示します。
: Java
: Go
: Python[-] (ハイフン): Managed Service for OpenTelemetry で監視されるアプリケーション
上部のナビゲーションバーで、 を選択します。
[カスタム設定] タブの [アプリケーションログの関連付け設定] セクションで、[ログソース] を [Log Service SLS] に設定します。 Simple Log Service がデプロイされているリージョンを選択し、プロジェクトと Logstore をバインドします。

Python 用の ARMS エージェントを構成します。
環境変数
OTEL_PYTHON_LOG_CORRELATIONをtrueに設定して、エージェントでビジネスログとトレース ID を関連付ける機能を有効にします。OTEL_PYTHON_LOG_CORRELATIONのデフォルト値はfalseです。OTEL_PYTHON_LOG_CORRELATIONをfalseに設定するか、この変数を空のままにすると、この機能は無効になります。
ビジネス要件に基づいて、環境変数
OTEL_PYTHON_LOG_LEVELをwarning、debug、info、またはerrorに設定します。 この変数は、トレース ID に関連付けるビジネスログのレベルを指定します。環境変数
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: トレース ID。otelSpanID: 現在のログによって生成されたスパンの ID。otelTraceSampled: サンプリング識別子。otelServiceName: アプリケーション名。
ログは、ルートロガーに対してのみトレース ID に自動的に関連付けられます。 カスタムハンドラでこれを有効にするには、フォーマッタを手動で構成します。
formatter = logging.Formatter(os.getenv('OTEL_PYTHON_LOG_FORMAT')) my_handler.setFormatter(formatter)
上記環境変数を設定すると、以下のログが返されます。

(オプション) ログ収集を構成し、アプリケーションログをプロジェクトと Logstore にアップロードします。
デフォルトでは、Python 用の ARMS エージェントはアプリケーションログを収集しません。