OpenTelemetry 활용 분산 추척 기능 구현 2

날아올라돼지야·2024년 8월 30일
0

이번 강의에서는 Docker Compose 파일을 업데이트하여 OpenTelemetry, Tempo, Grafana 간의 통합을 설정하는 방법을 설명하겠습니다.

1. 공통 환경 변수 설정

먼저 common-config.yml 파일을 열고 모든 마이크로서비스에 공통으로 사용할 환경 변수를 정의합니다.

  • microservice-base-config 아래에 환경 변수를 정의합니다. 이렇게 하면, 이 환경 변수들이 모든 마이크로서비스에 적용됩니다.
microservice-base-config:
  environment:
    JAVA_TOOL_OPTIONS: "-javaagent:/app/opentelemetry-javaagent.jar"
    OTEL_EXPORTER_OTLP_ENDPOINT: "http://tempo:4317"
    OTEL_METRICS_EXPORTER: "none"
  • JAVA_TOOL_OPTIONS: OpenTelemetry Java 에이전트를 로드하기 위해 사용됩니다.
  • OTEL_EXPORTER_OTLP_ENDPOINT: OpenTelemetry가 추적 정보를 전송할 Tempo 서비스의 엔드포인트를 지정합니다.
  • OTEL_METRICS_EXPORTER: Prometheus를 이미 사용 중이므로 메트릭 수집을 비활성화합니다.

2. 각 마이크로서비스에 환경 변수 추가

이제 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

3. Tempo 구성 파일 추가

이제 Tempo와 관련된 구성을 추가합니다.

  • observability 디렉토리 아래에 tempo라는 새 디렉토리를 생성하고, 그 안에 tempo.yml 파일을 생성합니다:
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
  • 이 구성 파일은 Tempo가 포트 3100에서 요청을 수신하도록 설정하며, 기타 내부 설정도 포함하고 있습니다.

4. Docker Compose 파일에 Tempo 서비스 추가

이제 Docker Compose 파일에 Tempo 서비스를 추가합니다.

  • Grafana 서비스 위에 다음과 같이 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
  • Tempo는 기본적으로 포트 3100을 사용하지만, 이 포트가 이미 Gateway 서비스에 의해 사용되고 있으므로 3110 포트로 매핑합니다.

5. Grafana와 Tempo 통합

이제 GrafanaTempo와 통합되도록 설정합니다.

  • Grafanadatasource.yml 파일에 Tempo 데이터 소스를 추가합니다:
datasources:
  - name: Tempo
    type: tempo
    uid: tempo
    url: http://tempo:3100
    access: proxy
    isDefault: false

이 설정을 통해 GrafanaTempo에서 제공하는 추적 정보를 수집하고 시각화할 수 있습니다.

결론

이번 강의에서는 Docker Compose 파일을 업데이트하여 OpenTelemetry, Tempo, Grafana 간의 통합을 설정했습니다. 이를 통해 마이크로서비스의 분산 추적 데이터를 효과적으로 수집하고 시각화할 수 있게 됩니다. 다음 강의에서는 이 설정을 기반으로 애플리케이션을 실행하고, 분산 추적의 실제 동작을 확인해보겠습니다.

감사합니다. 다음 강의에서 뵙겠습니다.

profile
무슨 생각하며 사니

0개의 댓글

Powered by GraphCDN, the GraphQL CDN