イベント設定機能を使用すると、Simple Log Service (SLS) でアプリケーションログをトレース ID に関連付けることができます。エラーが発生した場合、アプリケーションログに記録されたトレース ID を使用して、対応するトレースを迅速に特定し、問題のトラブルシューティングを行うことができます。
前提条件
アプリケーションは Managed Service for OpenTelemetry に接続されています。 詳細については、「サービスまたはコンポーネントを統合する」をご参照ください。
アプリケーションログが SLS にインポートされ、トレース ID またはスパン ID がログに記録されていること。詳細については、「LoongCollector を使用した ECS テキストログの収集と分析」および「Logger MDC 自動インスツルメンテーション」をご参照ください。
trans-idなどのカスタムビジネスフィールドは、アプリケーション層で SDK またはロギングフレームワークを使用してログに書き込む必要があります。Simple Log Service は、このようなフィールドを自動的に生成しません。カスタムフィールドを個別のフィールドとして使用するには、正規表現モードの Logtail プロセッサーを使用してログの内容から抽出します。カスタムフィールドは、messageフィールドにのみ配置できます。システムフィールド (threadなど) は変更できません。
ステップ 1: トレース ID の抽出
トレース ID がログ内の個別のフィールドに保存されている場合は、このステップをスキップします。
トレース ID が
contentフィールドなどのフィールドに含まれている場合は、それを抽出して個別のフィールドに表示します。
Log Serviceコンソールにログインします。
アプリケーションログが保存されているプロジェクトと Logstore を選択します。
Logtail プロセッサを使用し、正規表現モードでログからトレース ID を抽出して、個別のフィールドに表示します。
左側の Logstore パネルで、 を選択します。[Logtail 設定] ページで、管理する Logtail 設定を見つけ、[操作] 列の [Logtail 設定の管理] をクリックします。
[Edit] をクリックします。[Configuration Details] タブの [Processor Configurations] セクションで、[Add Processor] をクリックし、[Processor Type] ドロップダウンリストから [Extract Field (Regex Mode)] を選択します。
この例では、トレース ID またはスパン ID が
contentフィールドに含まれています。以下は、ログエントリのcontentフィールドのサンプルです。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]+)に設定し、[新しいフィールド名] フィールドにトレース ID またはスパン ID を追加します。 詳細については、「データ解析プラグイン」をご参照ください。設定完了後、抽出されたログエントリは以下のようになります。
__tag__:_cluster_id_: xxx __tag__:_node_ip_: xxx.xxx.xxx.7 __tag__:_node_name_: cn-hangzhou.xxx.xxx.7 _container_ip_: xxx.xxx.xxx 40 _container_name_: adservice _image_name_: ghcr.io/open-telemetry/demo:1.4.0-adservice _namespace_: otel-demo _pod_name_: opentelemetry-demo-adservice-xxx _pod_uid_: xxx _source_: stdout _time_: 2024-05-07T10:36:48.078285414+08:00 content: 2024-05-07 02:36:48 - oteldemo.AdService - Targeted ad request received for [accessories] trace_id=xxx span_id=xxx trace_flags=01 span_id: xxx traceId: xxx
ステップ 2: イベントの設定
ログ内のトレース ID またはスパン ID をクリックし、[Go to configuration] をクリックします。
[Advanced Event Settings] ダイアログボックスで、
traceIdまたはspanIdフィールドにイベントを追加し、[OK] をクリックします。次のパラメーターを設定します。設定名:
Start Trace Analysisのような任意の名前を入力します。[Event Action]:[Create Custom HTTP URL] を選択します。
プロトコル: [カスタム] を選択し、入力ボックスに
httpsを入力します。[Enter a URL]:
トレース ID でトレースをフィルターするには、
trace.console.alibabacloud.com/#/${regionId}/tracing-explorer?source=XTRACE&filters=traceId="${traceId}"の形式で URL を指定します。${regionId}を、お使いのアプリケーションが Managed Service for OpenTelemetry に接続されているリージョンの ID で置き換えます。例えば、お使いのアプリケーションが中国 (杭州) リージョンの Managed Service for OpenTelemetry に接続されている場合、
${regionId}をcn-hangzhouに置き換えます。完全な URL はtrace.console.alibabacloud.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=traceId="${traceId}"です。スパン ID でトレースをフィルターするには、スパン ID を別のフィールドに抽出し、URL の
${traceId}を${spanId}に置き換えます。 トレース ID とスパン ID の両方でトレースをフィルターするには、次の URL を使用します:trace.console.alibabacloud.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=traceId="${traceId}" AND spanId="${spanId}"。Attributes や Resources などのカスタム属性でトレースをフィルターするには、次の形式で URL を指定します:
trace.console.alibabacloud.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=${トレース内のカスタム属性の名前}="${ログ内のフィールドの名前}"。たとえば、名前空間でトレースをフィルターする場合、ログに
namespaceフィールドがあり、トレースに k8s.namespace.name 属性が追加されていると、完全な URL はtrace.console.alibabacloud.com/#/cn-hangzhou/tracing-explorer?source=XTRACE&filters=resources.k8s.namespace.name="${namespace}"になります。
ログでトレース ID またはスパン ID を再度クリックし、[トレース分析の開始] をクリックして Managed Service for OpenTelemetry の [トレースエクスプローラー] ページに移動します。
[トレースエクスプローラー] ページで、トレース ID でトレースを照会します。詳細については、「トレースエクスプローラー」をご参照ください。
[トレースエクスプローラー] ページでは、左側のフィルターパネルで、ステータス、レイテンシー、アプリケーション名、API 名、ホストアドレスによってトレースを絞り込めます。右上のエリアには、呼び出し回数、HTTP エラー、レイテンシーパーセンタイルなどの統計グラフが表示されます。下のテーブルには、TraceId、API 名、アプリケーション名、レイテンシー、ステータス、開始時間、ホストアドレスなどの詳細を含む各トレースレコードが一覧表示されます。