콘텐츠로 이동

웹 애플리케이션 액세스 연동


APM은 DDTrace, Zipkin, Skywalking, Jaeger, Opentelemetry 수집기를 통해 웹 애플리케이션의 프런트엔드에서 백엔드까지의 전체 요청 데이터를 추적할 수 있습니다.

프런트엔드의 RUM 데이터와 백엔드에 주입된 trace_id를 사용하여 호출 스택을 빠르게 찾을 수 있습니다.

전제 조건

  • 해당 웹 애플리케이션 대상 서버에 DDTrace, Skywalking, Opentelemetry, Jaeger, Zipkin를 구성합니다.
  • 프런트엔드와 백엔드가 분리된 프런트엔드 애플리케이션(크로스 오리진 조건이 있는 경우)의 경우 대상 서버에서 추적을 허용할 프런트엔드 요청의 응답 헤더에 대해 Header 화이트리스트를 설정해야 합니다.

각 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 세 가지 유형의 구성 방식을 지원하며, 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 설정 단계

  1. 프런트엔드 애플리케이션에 RUM SDK를 도입합니다.
  2. 초기화 구성에 allowedTracingOrigins 매개변수를 추가하여 추적이 허용되는 프런트엔드 요청 origin의 화이트리스트를 구성합니다. 문자열 배열 또는 정규식일 수 있습니다. (origin의 정의: <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/]
})

문서 평가

이 페이지가 도움이 되었나요?