Live:CloudOps Webinars & Hands-on Workshops ·Register ↗
본문으로 건너뛰기

모범 사례

계측 모범 사례

효과적인 계측은 Observability 데이터에서 가치 있는 인사이트를 얻는 핵심입니다. 다음 모범 사례를 따라 오버헤드를 최소화하면서 최대 가치를 제공하는 계측을 구현하세요.

무엇을 계측해야 하는가

애플리케이션에서 가장 중요한 부분을 계측하는 데 집중하세요:

높은 우선순위:

  • 공개 API 엔드포인트 및 사용자 대면 오퍼레이션
  • 데이터베이스 쿼리 및 외부 서비스 호출
  • 비즈니스 크리티컬 워크플로우 및 트랜잭션
  • 오류 경로 및 예외 처리

중간 우선순위:

  • 내부 서비스 간 통신
  • 백그라운드 작업 및 예약된 태스크
  • 캐시 작업

낮은 우선순위:

  • 단순 유틸리티 함수
  • 정적 콘텐츠 서빙
  • 헬스 체크 엔드포인트

네이밍 규칙

일관된 네이밍은 trace를 검색하고 필터링하기 쉽게 만들어줍니다:

Span 이름:

  • 소문자와 하이픈 사용: http-get-user-profile
  • 오퍼레이션 유형 포함: db-query-users, redis-get-session
  • 간결하되 설명적으로: "process"나 "handle"과 같은 범용적인 이름은 피하세요

서비스 이름:

  • 환경 전반에 일관된 서비스 네이밍 사용
  • 다중 환경 설정에서는 서비스 이름에 환경 포함
  • 조직의 네이밍 규칙 준수

Attribute 및 태그

Attribute를 사용하여 span과 trace에 컨텍스트를 추가하세요:

표준 Attribute:

  • http.method - HTTP 메서드 (GET, POST 등)
  • http.url - 요청 URL (PII 주의)
  • http.status_code - HTTP 응답 상태
  • db.system - 데이터베이스 유형 (mysql, postgres 등)
  • db.name - 데이터베이스 이름
  • db.operation - 데이터베이스 오퍼레이션 (SELECT, INSERT 등)

커스텀 Attribute:

  • user.id - 사용자 식별자 (PII인 경우 해시)
  • business.operation - 비즈니스 오퍼레이션 유형
  • version - 애플리케이션 버전
  • environment - 배포 환경

PII 및 보안 고려사항

텔레메트리에서 민감한 데이터를 보호하세요:

절대 포함하지 말 것:

  • 비밀번호, API 키 또는 인증 토큰
  • 이메일, 전화번호와 같은 개인 식별 정보(PII)
  • 민감한 데이터가 포함된 쿼리 파라미터가 있는 전체 URL
  • 신용카드 번호 또는 금융 정보

안전한 대안:

  • 해시된 또는 토큰화된 식별자 사용
  • URL의 경로 부분만 포함
  • 특정 값 대신 일반적인 상태 표시자 사용
  • 계측 수준에서 데이터 마스킹 구현

샘플링 전략

샘플링은 Observability 커버리지를 유지하면서 비용을 제어하는 데 도움을 줍니다.

샘플링 전략 선택

비율 기반 샘플링:

  • 요청의 고정 비율 샘플링 (예: 10%)
  • 구현 및 이해가 간단
  • 중요하지만 드문 이벤트를 놓칠 수 있음

Tail 샘플링:

  • Trace 데이터를 수집한 후 샘플링 결정
  • 오류나 높은 지연 시간이 있는 trace를 우선 처리 가능
  • 더 복잡하지만 더 지능적

규칙 기반 샘플링:

  • 특정 조건(사용자, 엔드포인트 등)에 따라 샘플링
  • 중요한 경로가 항상 추적되도록 보장
  • 신중한 규칙 정의 필요

권장 샘플링 비율

  • 개발 환경: 완전한 가시성을 위해 100% 샘플링
  • 스테이징: 테스트를 위해 50~100% 샘플링
  • 프로덕션: 비용 효율적인 커버리지를 위해 10~20%
  • 고트래픽 서비스: 볼륨 제어를 위해 1~5%
  • 크리티컬 경로: 다른 규칙에 관계없이 100% 샘플링

성능 최적화

계측의 성능 영향을 최소화합니다.

오버헤드 감소

  • 가능하면 비동기 span 처리 사용
  • 네트워크 호출을 줄이기 위해 span 내보내기를 일괄 처리
  • 적절한 버퍼 크기 구성
  • 계측 성능 메트릭 모니터링

리소스 관리

  • span 내보내기에 적절한 타임아웃 설정
  • 백엔드 장애에 대한 서킷 브레이커 구현
  • Collector에 대한 커넥션 풀링 사용
  • 적절한 재시도 정책 구성

알림 및 모니터링

효과적인 알림을 설정하여 애플리케이션 상태를 파악합니다.

모니터링할 핵심 메트릭

  • 지연 시간: P95/P99 응답 시간
  • 오류율: 실패한 요청의 비율
  • 처리량: 초당 요청 수
  • 포화도: 리소스 사용률
  • Trace 볼륨: 수집된 trace 수

SLO 기반 알림

Service Level Objectives를 정의하고 위험 시 알림을 설정합니다:

  • 지연 시간 SLO: 요청의 95%가 500ms 미만
  • 오류 SLO: 99.9% 성공률
  • 가용성 SLO: 99.95% 가동 시간

비용 관리

가치를 유지하면서 Observability 비용을 제어합니다.

비용 최적화 전략

  • 적절한 샘플링 비율 구현
  • 데이터 보존 정책 사용
  • 불필요한 span 및 attribute 필터링
  • 오래된 데이터를 저렴한 스토리지로 아카이브
  • 데이터 볼륨 모니터링 및 최적화

데이터 보존 정책

  • Hot 스토리지: 최근 데이터 (7~30일) — 활성 트러블슈팅용
  • Warm 스토리지: 히스토리컬 데이터 (30~90일) — 트렌드 분석용
  • Cold 스토리지: 아카이브 데이터 (90일 이상) — 규정 준수 및 간헐적 쿼리용