Skip to main content

Tempo

마이크로서비스 분산 추적 컴포넌트

Tempo 컴포넌트를 아래와 같이 디자이너 화면에 배치합니다.

Tempo 배치

① 디자이너 화면에서 "수집 및 분석" 섹션에서 Promtail 컴포넌트를 드래그 & 드랍하여 추가합니다.
② 추가한 컴포넌트에 원하는 "컴포넌트 이름"과 "설명"을 입력 후 "확인"을 클릭합니다.
③ 디자이너 화면에서 컴포넌트를 클릭하면 우측에 "프로퍼티" 설정 창이 나타납니다.

프로퍼티 설정창에서 "환경 설정" 버튼을 클릭하여 컴포넌트 배포를 위한 환경을 설정합니다.

info

선택환 환경 설정 내용은 "컴포넌트 수정" 기능을 통해 변경이 가능합니다.

환경 구성

템포가 동작하기 위한 "환경 설정"과 "수집기(Collector)"를 위한 내용으로 구성되어 있습니다.
동작을 위한 환경 설정값은 ConfigMap으로 저장되며 Tempo 실행 시 해당 값을 참조합니다.

환경 설정

Notice

회색으로 표기된 영역은 수정이 불가능하며, "*"로 표기된 항목은 필수 입력 항목입니다.

"환경 설정" 초기값은 기본값으로 설정되어 있으며 필요한 경우 수정할 수 있습니다.

Notice

설정값 중 {{ .Values.tempo.port_number }} 로 표기된 내용은 그대로 유지해야 합니다.

① Tempo 실행을 위한 기본값입니다. ② Tempo 를 위한 수집기 (Collector)를 위한 기본값입니다.

ConfigMap으로 저장되는 환경 설정 기본값은 다음과 같습니다.

1) Compactor

Tempo는 데이터 저장을 위한 백엔드 스토리지를 지정할 수 있습니다.
Compactor는 이러한 스토리지에 데이터를 넣거나 뺄 수 있게 해주는 컴포넌트입니다. 컴포넌트 입니다.

compactor:
compaction:
block_retention: 48h
compacted_block_retention: 1h
compaction_cycle: 30s
compaction_window: 1h
max_block_bytes: 107374182400
max_compaction_objects: 6000000
max_time_per_tenant: 5m
retention_concurrency: 10
v2_in_buffer_bytes: 5242880
v2_out_buffer_bytes: 20971520
v2_prefetch_traces_count: 1000
ring:
kvstore:
store: memberlist

2) Distributor

distributor는 트레이스 데이터를 Tempo 외부에서 수신하는 컴포넌트입니다.

distributor:
receivers:
jaeger:
protocols:
grpc:
endpoint: 0.0.0.0:14250
thrift_binary:
endpoint: 0.0.0.0:6832
thrift_compact:
endpoint: 0.0.0.0:6831
thrift_http:
endpoint: 0.0.0.0:14268
opencensus:
endpoint: 0.0.0.0:55678
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
ring:
kvstore:
store: memberlist

3) Ingester

Ingester는 트레이스 데이터를 저장하는 컴포넌트입니다.

ingester:
lifecycler:
ring:
kvstore:
store: memberlist
replication_factor: 3
tokens_file_path: /var/tempo/tokens.json

4) Memberlist

Memberlist는 모든 Tempo 트레이스 조각들이 서로 조정되는 기본 메카니즘을 설정합니다.
자세한 내용은 여기를 참고하세요.

memberlist:
abort_if_cluster_join_fails: false
join_members:
- {{ .Values.tempo.name }}-gossip-ring

5) multitenancy_enabled (Optional)

Tempo는 다중 테넌트 분산 추적 백엔드입니다. header: X-Scope-OrgID 를 사용하여 다중 테넌시를 지원합니다.
자세한 내용은 여기를 참고하세요.

multitenancy_enabled: false

6) Overrides

Overrides는 사용자가 전역 또는 테넌트별 재정의 설정을 지정할 수 있는 재정의 모듈입니다.
자세한 내용은 여기를 참고하세요.

overrides:
per_tenant_override_config: /conf/overrides.yaml

7) Querier

Querier는 백엔드/캐시에서 traceID를 쿼리하는 일을 담당하는 컴포넌트입니다.
자세한 내용은 여기를 참고하세요.

querier:
frontend_worker:
frontend_address: {{ .Values.tempo.name }}-query-frontend-discovery:9095
max_concurrent_queries: 20
search:
external_endpoints: []
external_hedge_requests_at: 8s
external_hedge_requests_up_to: 2
prefer_self: 10
query_timeout: 30s

8) Query_frontend

Query Frontend는 더 빠른 병렬 처리를 위해 들어오는 요청을 샤딩하는 역할을 담당하는 컴포넌트입니다.
자세한 내용은 여기를 참고하세요.

query_frontend:
search:
concurrent_jobs: 1000
target_bytes_per_job: 104857600

9) Server

Tempo 서버는 Weaveworks/common 서버를 사용하며 서버 역할을 담당하는 컴포넌트입니다.
서버 설정에 대한 자세한 내용은 서버구성을 참고하세요.

server:
grpc_server_max_recv_msg_size: 4194304
grpc_server_max_send_msg_size: 4194304
http_listen_port: 3100
log_format: logfmt
log_level: info

10) Storage

Tempo는 오브젝트 스토리지와 로컬 파일 시스템을 지원합니다. 또한 쿼리 성능 향상을 위해 Memcached 또는 Redis를 사용할 수 있습니다.
각 백엔드 스토리지에 대한 자세한 내용은 여기를 참고하세요.

storage:
trace:
backend: local
blocklist_poll: 5m
cache: memcached
local:
path: /var/tempo/traces
memcached:
consistent_hash: true
host: tempo-memcached
service: memcached-client
timeout: 500ms
wal:
path: /var/tempo/wal