센트리 CH2
하니2026.01.09
loading ...
센트리는 공식 문서에 다양한 경우에 대한 해결책이 나와있지 않다.
센트리에 대한 설명만 있고, 어떤 상황에서 어떤 방법을 사용한다. 라는 내용이 없음
Sentry는 단순히 에러를 보는 것뿐만 아니라, **코드 수준에서 앱의 상태를 관찰(Observability)**하고 진단할 수 있게 돕는 소프트웨어 모니터링 도구입니다. 개발자가 성능 문제와 에러를 식별하고 디버깅할 수 있도록 설계되었습니다.
그래서 많은 질문이 공식 커뮤니티에서 이루어짐
약 2만명이 가입

export function initSentry(config: SentryConfig) {const { dsn, environment, release } = config;if (!dsn) {console.warn('Sentry DSN값을 환경변수에서 찾지 못함.')
1.0.0 => 에러 0개1.1.0 => 에러 1285개 (이 버전에서 대량 발생)1.2.0 => 에러 2개 (문제 해결 확인 가능)
👉 고정 값이 아니거나 외부 노출이 위험한 정보이기 때문
👉 import.meta.env로 환경변수를 가져와 초기화 시 전달하는 구조


🤔 왜 0.1 ~ 0.3?- 너무 많은 데이터 저장 시 Sentry 용량 부담- 트랜잭션 추적은 수 KB 수준으로 가벼움- 100%도 가능하지만 안전하게 0.1~0.3 권장- 모든 사용자의 행동 패턴은 대체로 유사
replaysSessionSampleRate: 0.1→ 전체 사용자 중 10%만 전체 세션 저장replaysOnErrorSampleRate: 1.0→ 에러 발생자는 100% 저장
🔑 핵심: 메모리 버퍼
{ time: 1234, type: 'click', x: 100, y: 200 }{ time: 1235, type: 'input', value: 'cat' }
## 🫅 시나리오 예시### 👮 유저 A (에러 없음, 당첨)1. 접속2. 랜덤 추첨 (10%)3. 당첨 → 실시간 Sentry 전송4. 세션 종료5. 영상 확인 가능---### 🥷 유저 B (에러 없음, 탈락)1. 접속2. 랜덤 추첨 (10%)3. 탈락 → 메모리 버퍼에만 저장4. 세션 종료5. 영상 확인 불가---### 👰 유저 C (에러 발생)1. 접속2. 랜덤 추첨 탈락3. 메모리 버퍼에 60초 저장4. 에러 발생 🚨5. `replaysOnErrorSampleRate: 1.0`6. 이전 60초 세션 전송
❌ 에러를 미리 예측할 수 없음"이 유저 5분 후에 에러 나니까 미리 녹화"→ 불가능
✅ 모든 사용자 최근 60초는 임시 저장✅ 에러 발생 시 버퍼 내용 즉시 전송✅ 이후 세션은 전부 저장
export const captureException = (error: Error,context?: Record<string, unknown>,) => {Sentry.captureException(error, context);};export const captureMessage = (message: string,level: Sentry.SeverityLevel = 'info',) => {Sentry.captureMessage(message, level);};
captureException
captureMessage
export const fetchClient = async <TResponse, TBody = unknown>(endpoint: string,options?: FetchOptions<TBody>,): Promise<TResponse>
기본 그룹핑 방식
⭐Finger Print⭐
captureException(httpError, {tags: {error_type: 'http_error',status_code: String



💡 상황
🤔 이유
🔑 해결

❓ 구독?




🤔 왜?
💡 해결
Sentry.replayIntegration({maskAllText: false,blockAllMedia: false,// 👇 외부 스타일시트 포함recordCanvas: true,inlineStylesheet: true, // 인라인 스타일시트로 변환// 👇 특정 도메인 CSS 가져오기 허용