이번 강의에서는 Docker Compose 파일을 업데이트하여 OpenTelemetry, Tempo, Grafana 간의 통합을 설정하는 방법을 설명하겠습니다.
먼저 common-config.yml 파일을 열고 모든 마이크로서비스에 공통으로 사용할 환경 변수를 정의합니다.
microservice-base-config:
environment:
JAVA_TOOL_OPTIONS: "-javaagent:/app/opentelemetry-javaagent.jar"
OTEL_EXPORTER_OTLP_ENDPOINT: "http://tempo:4317"
OTEL_METRICS_EXPORTER: "none"
이제 Docker Compose 파일에서 각 마이크로서비스에 대해 otel_service_name 환경 변수를 추가합니다. 이 변수는 OpenTelemetry가 사용할 서비스 이름을 지정합니다.
예를 들어 config server 서비스의 환경 변수는 다음과 같이 추가합니다:
configserver:
environment:
- otel_service_name=configserver
# 다른 설정들...
accounts:
environment:
- otel_service_name=accounts
loans:
environment:
- otel_service_name=loans
cards:
environment:
- otel_service_name=cards
gatewayserver:
environment:
- otel_service_name=gatewayserver
이제 Tempo와 관련된 구성을 추가합니다.
server:
http_listen_port: 3100
distributor:
receivers:
- otlp
ingester:
trace_idle_period: 10s
max_block_bytes: 5MB
max_block_duration: 1m
compactor:
compact: true
overrides:
max_traces_per_user: 5000
이제 Docker Compose 파일에 Tempo 서비스를 추가합니다.
tempo:
image: grafana/tempo:latest
container_name: tempo
command: ["/tempo", "-config.file=/etc/tempo/tempo-config.yml"]
ports:
- "3110:3100"
- "4317:4317"
volumes:
- ./observability/tempo/tempo.yml:/etc/tempo/tempo-config.yml
networks:
- eazybank
이제 Grafana가 Tempo와 통합되도록 설정합니다.
datasources:
- name: Tempo
type: tempo
uid: tempo
url: http://tempo:3100
access: proxy
isDefault: false
이 설정을 통해 Grafana는 Tempo에서 제공하는 추적 정보를 수집하고 시각화할 수 있습니다.
이번 강의에서는 Docker Compose 파일을 업데이트하여 OpenTelemetry, Tempo, Grafana 간의 통합을 설정했습니다. 이를 통해 마이크로서비스의 분산 추적 데이터를 효과적으로 수집하고 시각화할 수 있게 됩니다. 다음 강의에서는 이 설정을 기반으로 애플리케이션을 실행하고, 분산 추적의 실제 동작을 확인해보겠습니다.
감사합니다. 다음 강의에서 뵙겠습니다.