[Datadog] RUM에서 document 페이지 추적하기

2023. 8. 30. 02:30·Dev/삽질 방지
반응형

Datadog에서는 기본적으로 XHR/Fetch 등의 요청만 distributed tracing(분산 추적)을 지원한다. 즉, 페이지 로드 후에 요청하는 웹 요청만 trace랑 연결해서 볼 수 있다. 페이지가 서버 사이드 렌더링(SSR) 되는 경우에는 RUM replay에서 해당 백엔드 trace를 바로 확인하기가 어렵고 아이피 등으로 하나 하나 찾아가야만 하는 문제점이 있다.

과거에 trace id를 HTML header에 넣어 document를 지원하려는 시도가 2020년도에 있었지만, 어떤 배경인지는 정확히 몰라도 다시 revert 된 상태이다. 다만, browser-sdk 자체에서는 아직 해당 기능이 살아있어서 HTML에 meta tag로 dd-trace-id, dd-trace-time을 추가해 주면 document 자체도 추적이 가능하기는 하다. 이 글에서는 이 남아있는 기능으로 document 요청을 분산 추적하는 방법을 간단하게 공유하고자 한다.

필자가 사용중인 라이브러리인 Ruby 전용 Datadog 라이브러리인 dd-trace-rb 기준이며, 타 라이브러리도 비슷하게 구현할 수 있을 것이다.

Application Helper에 아래 함수를 추가한다.

  def dd_trace_meta_tags
    return '' unless Rails.env.production?

    span = Datadog::Tracing.active_span

    trace_id = span && span.trace_id

    return '' unless trace_id

    unix_time = DateTime.now.strftime('%Q').to_i
    tag_string = %(<meta name="dd-trace-id" content="#{trace_id}" />
    <meta name="dd-trace-time" content="#{unix_time}" />)

    tag_string.respond_to?(:html_safe) ? tag_string.html_safe : tag_string
  end

그리고 layout 파일 내부 header 부분에 dd_trace_meta_tags 코드를 추가해주면 이후로 페이지가 로드될때마다 dd-trace-id가 meta tag로 삽입되면서 document 자체의 분산 추적이 가능해진다.

추후에 라이브러리 기본 기능으로 다시 trace id injection 기능이 추가되었으면 하는 바람이다.

참고 문서

https://github.com/DataDog/browser-sdk/issues/1833#issuecomment-1323695805

https://github.com/DataDog/browser-sdk/pull/492

https://github.com/DataDog/dd-trace-rb/pull/1167

반응형
저작자표시 (새창열림)
'Dev/삽질 방지' 카테고리의 다른 글
  • 날려 먹은 MySQL 데이터를 복구할 수 있을까?
  • [Datadog] HTTP 5XX일때만 Error tracking이 동작하는 문제 고치기
  • GKE에서 autoscaling/v2가 오류나는 경우 해결 방법
  • Visual Studio Code에서 Integrated Terminal 사용 시 .bash_profile을 읽어오지 않을 경우
ryush00
ryush00
IT 관련 글이 올라와요
    반응형
  • ryush00
    말똥이의 블로그
    ryush00
  • 전체
    오늘
    어제
    • 모든 글 (225)
      • 블로그 (13)
        • 공지 사항 (5)
        • 블로그 운영 팁 (6)
        • 기타 (2)
      • IT (69)
        • 정보글 (51)
        • 리뷰 (8)
        • 심층 분석 (5)
        • NAS (5)
      • Game (44)
        • Minecraft (40)
        • 게임 정보글 (4)
      • Dev (53)
        • PHP (1)
        • HTML & CSS (0)
        • Ruby (3)
        • DB (2)
        • 클라우드 (2)
        • 행사 (0)
        • 삽질 방지 (20)
      • 마인리스트 (10)
      • 이모저모 (21)
        • 나의 생각 (7)
        • 나의 일상 (4)
        • 유용한 것들 (3)
        • 노하우 (6)
      • 휴지통 (0)
      • 안전 (0)
        • 베리어프리 (0)
        • 교통 안전 (0)
  • 블로그 메뉴

    • 전체글
    • 공지사항
  • 링크

    • 마인리스트
  • 공지사항

    • 저작권 안내
  • 인기 글

  • 태그

    howto
    php
    spigot
    Ruby on Rails
    java
    개발
    토렌트
    해킹
    문제해결
    블로그
    ruby
    bukkit
    MySQL
    아이폰
    티스토리
    티스토리 초대장
    애플
    안드로이드
    마인크래프트
    마인리스트
    삽질
    NAS
    맥
    CloudFlare
    구글 지도 반출
    클라우드플레어
    구글 지도
    오류
    시놀로지
    apk
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ryush00
[Datadog] RUM에서 document 페이지 추적하기
상단으로

티스토리툴바