Web アプリケーションアクセスの関連付け¶
APM は DDTrace、Zipkin、Skywalking、Jaeger、OpenTelemetry コレクターを使用して、Web アプリケーションの完全なフロントエンドからバックエンドまでのリクエストデータを追跡できます。
フロントエンドの RUM データとバックエンドに注入された trace_id を使用して、呼び出しスタックを迅速に特定できます。
前提条件¶
- 対応する Web アプリケーションのターゲットサーバーに DDTrace、Skywalking、OpenTelemetry、Jaeger、Zipkin を設定します。
- 前後分離されたフロントエンドアプリケーション(クロスオリジンの条件がある場合)では、ターゲットサーバーが追跡を許可するフロントエンドリクエストの応答ヘッダーにヘッダーホワイトリストを設定する必要があります。
対応する APM ツールに応じて、Access-Control-Allow-Headers のリクエストヘッダーに対応する Key は次のとおりです。
- ddtrace:
x-datadog-parent-id、x-datadog-origin、x-datadog-sampling-priority、x-datadog-trace-id; - skywalking:
sw8; - jaeger:
uber-trace-id; - zipkin:
X-B3-TraceId、X-B3-SpanId、X-B3-ParentSpanId、X-B3-Sampled、X-B3-Flags; - zipkin_single_header:
b3; - w3c_traceparent:
traceparent; - opentelemetry:このタイプは
zipkin_single_header、w3c_traceparent、zipkin、jaegerの 3 種類の設定方法をサポートします。RUM SDK で設定した traceType の種類に応じて、対応するヘッダーを追加します。
Python の例:
app = Flask(__name__)
api = Api(app)
@app.after_request
def after_request(response):
...
response.headers.add('Access-Control-Allow-Headers', 'x-datadog-parent-id,x-datadog-sampled,x-datadog-sampling-priority,x-datadog-trace-id')
....
return response
....
注意
ターゲットサーバーは HTTP サービスを使用している必要があります。
フロントエンド RUM 設定手順¶
- フロントエンドアプリケーションに RUM SDK を導入します。
- 初期化設定に
allowedTracingOriginsパラメータを追加し、追跡を許可するフロントエンドリクエストのオリジンホワイトリストを設定します。文字列配列または正規表現を指定できます。(オリジンの定義:<scheme> "://" <hostname> [ ":" <port> ])
例:
import { datafluxRum } from '@cloudcare/browser-rum'
datafluxRum.init({
applicationId: '<DATAFLUX_APPLICATION_ID>',
datakitOrigin: '<DATAKIT ORIGIN>',
traceType: 'ddtrace', // ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent
... // その他の設定
allowedTracingOrigins: ["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]
})