Grafana Tempo 퀴즈
Grafana Tempo에 대한 이해도를 테스트하는 퀴즈입니다.
- Grafana Tempo의 가장 큰 특징은 무엇인가요?
- A) 모든 데이터를 인덱싱하여 빠른 검색 제공
- B) TraceID 기반 저장으로 인덱싱 비용 제거
- C) 실시간 스트리밍 처리
- D) 자동 이상 탐지 기능
정답 보기
정답: B) TraceID 기반 저장으로 인덱싱 비용 제거
설명: Tempo는 추적 데이터를 인덱싱하지 않고 TraceID만으로 데이터를 저장하고 검색합니다. 이로 인해 대규모 추적 데이터를 저비용으로 저장할 수 있습니다. 다른 추적 시스템들은 다양한 필드를 인덱싱하여 검색 성능을 높이지만, 이는 스토리지 비용 증가로 이어집니다.
- Tempo 아키텍처에서 추적 데이터를 수신하고 유효성을 검사하는 컴포넌트는?
- A) Ingester
- B) Querier
- C) Distributor
- D) Compactor
정답 보기
정답: C) Distributor
설명: Distributor는 다양한 형식(Jaeger, Zipkin, OTLP 등)의 추적 데이터를 수신하고 유효성을 검사합니다. 검증된 데이터는 해시 기반으로 적절한 Ingester로 분배됩니다. Ingester는 데이터를 버퍼링하고 저장하며, Querier는 검색을 담당합니다.
- TraceQL에서 오류 상태의 스팬만 조회하는 올바른 쿼리는?
- A)
{ error = true } - B)
{ status = error } - C)
{ span.error = 1 } - D)
{ state = "ERROR" }
- A)
정답 보기
정답: B) { status = error }
설명: TraceQL에서 오류 스팬을 필터링할 때는 { status = error } 구문을 사용합니다. status 필드는 ok, error, unset 값을 가질 수 있으며, 이는 OpenTelemetry의 SpanStatus와 매핑됩니다.
- Tempo에서 S3를 백엔드 스토리지로 사용할 때 권장되는 AWS 인증 방식은?
- A) 환경 변수에 Access Key 저장
- B) Secret에 자격 증명 저장
- C) IRSA (IAM Roles for Service Accounts)
- D) EC2 Instance Profile
정답 보기
정답: C) IRSA (IAM Roles for Service Accounts)
설명: EKS 환경에서는 IRSA를 사용하는 것이 권장됩니다. IRSA는 Kubernetes ServiceAccount에 IAM 역할을 연결하여 Pod 수준에서 세분화된 권한 관리가 가능합니다. 정적 자격 증명을 저장하는 것보다 보안적으로 우수하며, 자격 증명 로테이션이 자동으로 처리됩니다.
- Tempo의 Metrics Generator가 생성하는 메트릭 유형이 아닌 것은?
- A) Service Graph 메트릭
- B) Span 메트릭
- C) Log 메트릭
- D) RED 메트릭 (Rate, Error, Duration)
정답 보기
정답: C) Log 메트릭
설명: Tempo의 Metrics Generator는 추적 데이터에서 Service Graph 메트릭과 Span 메트릭(RED 메트릭 포함)을 생성합니다. 이 메트릭들은 Prometheus로 전송되어 서비스 맵 시각화와 성능 모니터링에 사용됩니다. Log 메트릭은 Loki에서 생성되며 Tempo의 범위가 아닙니다.
- Tempo Distributed 모드에서 데이터 내구성을 위해 여러 Ingester에 복제본을 유지하는 기능의 이름은?
- A) Sharding
- B) Replication Factor
- C) Partitioning
- D) Mirroring
정답 보기
정답: B) Replication Factor
설명: Replication Factor는 각 추적 데이터를 몇 개의 Ingester에 복제할지 결정합니다. 예를 들어 replication_factor=3이면 각 추적이 3개의 Ingester에 저장되어 하나의 Ingester가 실패해도 데이터 손실이 없습니다. 이는 Tempo의 고가용성 구성에서 중요한 설정입니다.
- Grafana에서 Tempo와 Loki를 연동하여 Trace-to-Log 상관분석을 구현할 때 필요한 설정은?
- A) 동일한 네임스페이스에 배포
- B) derivedFields 설정으로 TraceID 추출
- C) 동일한 S3 버킷 사용
- D) 동일한 레이블 사용
정답 보기
정답: B) derivedFields 설정으로 TraceID 추출
설명: Loki 데이터 소스 설정에서 derivedFields를 구성하여 로그에서 TraceID를 추출하고 Tempo로 링크를 생성합니다. 정규식 패턴으로 TraceID를 매칭하고, 해당 값을 Tempo 데이터 소스로 연결하면 로그에서 바로 관련 추적을 조회할 수 있습니다.
- Tempo에서 Compactor의 역할로 올바른 것은?
- A) 실시간 쿼리 처리
- B) 추적 데이터 수신 및 분배
- C) 저장된 블록 압축 및 보존 정책 적용
- D) 메모리 버퍼 관리
정답 보기
정답: C) 저장된 블록 압축 및 보존 정책 적용
설명: Compactor는 Object Storage에 저장된 추적 블록들을 압축하고 최적화합니다. 또한 block_retention 설정에 따라 오래된 데이터를 삭제하는 보존 정책을 적용합니다. Compactor는 일반적으로 단일 인스턴스로 실행되며, 클러스터당 하나만 활성화됩니다.
- TraceQL에서 서비스 A에서 서비스 B로의 호출 패턴을 찾는 쿼리는?
- A)
{ resource.service.name = "A" } AND { resource.service.name = "B" } - B)
{ resource.service.name = "A" } >> { resource.service.name = "B" } - C)
{ resource.service.name = "A" } -> { resource.service.name = "B" } - D)
{ resource.service.name = "A" } | { resource.service.name = "B" }
- A)
정답 보기
정답: B) { resource.service.name = "A" } >> { resource.service.name = "B" }
설명: TraceQL에서 >> 연산자는 구조적 매칭을 수행하여 첫 번째 조건의 스팬이 두 번째 조건의 스팬의 조상(ancestor)인 경우를 찾습니다. 이를 통해 서비스 간 호출 패턴을 분석할 수 있습니다. > 연산자는 직접적인 부모-자식 관계만 매칭합니다.
- Tempo 성능 최적화를 위한 권장 설정이 아닌 것은?
- A) max_block_duration을 30분으로 설정
- B) Memcached를 캐시로 사용
- C) 모든 속성을 인덱싱
- D) Query Frontend에서 쿼리 샤딩 활성화
정답 보기
정답: C) 모든 속성을 인덱싱
설명: Tempo의 핵심 설계 원칙은 인덱싱을 최소화하여 비용을 절감하는 것입니다. 모든 속성을 인덱싱하면 Tempo의 장점이 사라지고 스토리지 비용이 크게 증가합니다. 대신 max_block_duration 최적화, 캐시 사용, 쿼리 샤딩 등으로 성능을 향상시킵니다.