설치
Sophonz Browser SDK를 CDN 또는 NPM으로 웹 프론트엔드 프로젝트에 설치하는 방법을 안내합니다.
Sophonz Browser SDK는 OpenTelemetry Native 기반으로 동작합니다. VanillaJS, React, Vue, Next.js 등 웹 프론트엔드 프레임워크에서 웹 성능 지표를 수집하기 위한 에이전트 설치 및 설정 방법을 설명합니다.
프론트엔드 모니터링
웹 프론트엔드 성능 모니터링은 사용자 경험을 개선하고 웹 애플리케이션의 성능을 최적화하는 데 중요한 역할을 합니다. Sophonz를 사용하면 표준화된 방식으로 성능 데이터를 수집하고 분석할 수 있습니다.
수집된 데이터를 바탕으로 다음과 같은 최적화를 수행할 수 있습니다:
- 느린 API 호출 식별 및 최적화
- 클라이언트 사이드 렌더링 성능 개선
- 자주 발생하는 오류 해결
주요 기능
네트워크 요청 자동 계측
- XMLHttpRequest 및 Fetch API: 네트워크 요청 및 응답의 상세 추적
- WebSocket (beta): 실시간 양방향 통신 계측
- 요청/응답 메타데이터: HTTP 메서드, 상태 코드, 헤더, 타이밍 정보 자동 수집
페이지 로드 성능 추적
- Document Load (
@sophonz/instrumentation-document-load)- Navigation Timing API를 통한 초기 페이지 로드 성능 측정
- Server-Timing 헤더 파싱 및 백엔드 타이밍 정보 수집
- TraceParent 추출을 통한 분산 추적 지원
- 리소스 타이밍 정보 수집 (이미지, 스크립트, 스타일시트 등)
- Post Document Load (
@sophonz/instrumentation-post-doc-load-resource)- Performance Observer를 통한 동적 리소스 추적
- Mutation Observer를 통한
<head>변경 감지 - SPA 라우트 전환 후 로드되는 리소스 자동 계측
- URL-to-Context 매핑을 통한 컨텍스트 보존
사용자 상호작용 및 이벤트
- User Interaction: 클릭, 마우스 이벤트, 드래그, 키보드 입력 등 자동 추적
- User Event (
@sophonz/user-event)- 비즈니스 로직의 시작과 완료 지점을 명시적으로 추적
- OpenTelemetry 컨텍스트 전파를 통한 자동 그룹화
- 이벤트 중 발생하는 모든 계측(fetch, console, exception 등)을 단일 트레이스로 연결
- 저장소를 통한 이벤트 지속성 (페이지 새로고침 지원)
SPA (Single Page Application) 지원
- Route Change (
@sophonz/instrumentation-route)- History API 기반 클라이언트 사이드 라우팅 자동 추적
pushState,replaceState,popstate,hashchange이벤트 감지- React Router, Vue Router, Angular Router, Next.js 등 모든 라우팅 라이브러리 호환
- 라우트 전환 시 발생하는 리소스 로딩 자동 연결
- 사용자 이벤트와의 자동 컨텍스트 연결
에러 및 예외 추적
- Browser Exception (
@sophonz/instrumentation-browser-exception)- Uncaught exceptions 자동 수집
- Unhandled promise rejections 추적
- Document error events (이미지/스크립트 로드 실패 등)
console.error()패칭 및 스택 트레이스 수집- 에러 발생 시 활성 컨텍스트 자동 보존
- Span/Log 상관관계 (
span.id,trace.id)를 통한 추적
성능 모니터링
- Web Vitals: LCP, FID, CLS, FCP, TTFB 자동 수집
- Long Tasks: 자동 컨텍스트 연결을 통한 브라우저 메인 스레드 블로킹 감지
- 세션 분석: 세션 ID를 통한 사용자 행동 패턴 분석
컨텍스트 관리
- 자동 컨텍스트 유지: Timer, Promise, async/await, 이벤트, Observer 등에서 자동 컨텍스트 전파
- SophonzContextManager: OpenTelemetry Context API를 확장한 고급 컨텍스트 관리
- 분산 추적: 프론트엔드와 백엔드 간 TraceParent 전파
페이지 상태 추적
- Visibility: 페이지 가시성 변경 자동 계측
- Connectivity: 네트워크 연결 상태 변경 자동 계측
사용자 정의 및 확장
- 커스텀 속성: 사용자 ID, 지역, 비즈니스 메타데이터 추가
- 수동 계측: 커스텀 로그, 커스텀 에러, 사용자 이벤트 수동 추적
- 세션 리플레이 (beta): DOM 변경, 사용자 입력, 스크린샷 캡처
크로스 플랫폼 지원
- Mobile SDK 연동: Sophonz Android/iOS SDK와 연동하여 네이티브-웹뷰 컨텍스트 자동 연결
- 레거시 브라우저: IE11, Chrome 52, Edge Legacy 79, Safari 11, Firefox 57 이상 지원
빠른 설치
CDN을 통한 설치
웹사이트에서 Sophonz로 계측을 시작하는 가장 쉬운 방법은 아래 코드를 <head></head> 태그 내부에 추가하는 방법입니다.
최신 버전
Sophonz에서 제공하는 최신 기능을 사용하려면 아래 코드를 사용하세요. 이 코드는 항상 최신 버전을 사용합니다.
TIP — 패키지 이름과 서비스 키 발급
Sophonz 콘솔 로그인 후 글로벌 관리 > 서비스 관리에서 새로운 서비스를 등록하고 발급된 서비스 키를 사용하여 설치하세요.
<script src="https://cdn.sophonz.com/release/npm/@browser-sdk/latest/index.js">
</script>
<script>
window.SophonzSDK.init({
collectorUrl: '{{SOPHONZ_TRACES_COLLECTOR_URL}}',
appName: '{{NAME_OF_YOUR_WEB_SERVICE}}',
appVersion: '{{VERSION_OF_YOUR_WEB_SERVICE}}',
appKey: '{{KEY_OF_YOUR_WEB_SERVICE}}'
project: '{{SERVICE_NAMESPACE}}',
deploymentEnvironment: '{{DEPLOYMENT_ENVIRONMENT}}',
});
</script>CAUTION — 패키지 이름 설정
appName은 서비스 등록 시 입력한 패키지명과 동일해야 하며 패키지 이름에는 a-z, A-Z, 0-9, -, _, .만 입력할 수 있습니다.
collectorUrlSophonz Collector 주소 상세 보기appName앱 이름. (서비스 등록할 때의 패키지명) 상세 보기appVersion앱 버전 상세 보기appKey앱 키 상세 보기project프로젝트 상세 보기deploymentEnvironment배포 환경 상세 보기- 위에 언급한 설정값 이외의 추가 설정 옵션은 설정 옵션을 참조해주세요.
특정 버전
특정 버전을 사용하기 위한 설치 코드는 아래와 같습니다. {{VERSION}} 부분을 사용하려는 버전으로 대체하세요.
<script
src="https://cdn.sophonz.com/release/npm/@browser-sdk/{{VERSION}}/index.js"
integrity="{{VERSION_SRI_HASH_INTEGRITY}}"
crossorigin="anonymous">
</script>
<script>
window.SophonzSDK.init({
collectorUrl: '{{SOPHONZ_TRACES_COLLECTOR_URL}}',
appName: '{{NAME_OF_YOUR_WEB_SERVICE}}',
appVersion: '{{VERSION_OF_YOUR_WEB_SERVICE}}',
appKey: '{{KEY_OF_YOUR_WEB_SERVICE}}'
project: '{{SERVICE_NAMESPACE}}',
deploymentEnvironment: '{{DEPLOYMENT_ENVIRONMENT}}',
});
</script>collectorUrl, appName, appKey, appVersion을 올바르게 제공하면 웹사이트가 준비되며 다른 필수 작업은 필요하지 않습니다. 수집된 추적 정보를 지정된 Sophonz 수집기로 전송합니다.
NPM을 통한 설치
https://www.npmjs.com/package/@sophonz/browser-sdk
다른 옵션은 프로젝트 내에서 이 라이브러리를 번들로 묶고 초기화하는 것입니다. 프로젝트 디렉토리 내에서 npm install @sophonz/browser-sdk를 실행하세요.
에이전트는 다른 기능보다 우선적으로 초기화되어야 관련 정보들을 수집할 수 있습니다.
import SophonzSDK from '@sophonz/browser-sdk';
SophonzSDK.init({
collectorUrl: '{{SOPHONZ_TRACES_COLLECTOR_URL}}',
appName: '{{NAME_OF_YOUR_WEB_SERVICE}}',
appVersion: '{{VERSION_OF_YOUR_WEB_SERVICE}}',
appKey: '{{KEY_OF_YOUR_WEB_SERVICE}}',
project: '{{SERVICE_NAMESPACE}}',
deploymentEnvironment: '{{DEPLOYMENT_ENVIRONMENT}}',
});