Opentelemetry를 활용한 분산 추적 기능 구현 3

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

이 강의에서는 OpentelemetryTempo가 적용된 마이크로서비스에서 분산 추적이 실제로 어떻게 작동하는지 확인해보겠습니다. 다음 단계에 따라 진행해 보겠습니다.

1. Docker 컨테이너 시작

먼저, docker-compose 명령어를 사용하여 prod 프로파일의 모든 컨테이너를 시작합니다. 이 전에 Opentelemetry 관련 변경 사항을 반영한 최신 도커 이미지를 생성했는지 확인해야 합니다.

docker-compose up -d
  • 이 명령어는 모든 컨테이너를 시작합니다. 초기화에는 약 1~2분이 소요될 수 있습니다.

2. 컨테이너 상태 확인 및 문제 해결

컨테이너를 시작한 후, 일부 마이크로서비스(예: accounts, loans, cards)가 오류를 발생시킬 수 있습니다. 이 문제는 Opentelemetry Java 에이전트 로딩으로 인해 컨테이너 초기화가 지연되면서 발생할 수 있습니다.

  • 각 마이크로서비스의 로그를 확인하여 Java 에이전트가 로드되는지 확인합니다.
  • docker-compose.yml 파일에서 health check 재시도 간격을 늘려 초기화 지연 문제를 해결할 수 있습니다.
healthcheck:
  test: curl -f http://localhost:8080/actuator/health || exit 1
  interval: 20s
  retries: 20
  • 모든 마이크로서비스에 대해 intervalretries 값을 수정하여 충분한 시간이 주어지도록 합니다.

3. 기존 컨테이너 제거 및 재시작

변경 사항을 적용한 후, 기존의 컨테이너를 삭제하고 다시 시작합니다.

docker-compose down
docker-compose up -d
  • 이 명령어는 기존 컨테이너를 모두 삭제하고, 변경된 설정으로 다시 시작합니다.
  • 컨테이너가 완전히 시작될 때까지 약 4분 정도 기다립니다.

4. 컨테이너 시작 상태 확인

  • Docker Desktop에서 모든 컨테이너가 정상적으로 실행되고 있는지 확인합니다.
docker ps
  • accounts 마이크로서비스의 로그에서 Opentelemetry Java 에이전트가 성공적으로 로드되었는지 확인합니다.

5. API 테스트

Postman을 사용하여 몇 가지 API를 테스트합니다.

  1. accounts 마이크로서비스의 계정 생성 API 호출

    • 요청 후 201 응답과 함께 "Account created successfully" 메시지를 확인합니다.
  2. cards 마이크로서비스의 카드 생성 API 호출

    • 요청 후 성공적인 응답을 확인합니다.
  3. loans 마이크로서비스의 대출 생성 API 호출

    • 요청 후 성공적인 응답을 확인합니다.
  4. fetchCustomerDetails API 호출

    • 이 요청은 계정, 카드, 대출 정보가 모두 포함된 응답을 반환합니다.

6. Grafana에서 분산 추적 정보 확인

이제 Grafana 대시보드에서 분산 추적 정보를 확인할 수 있습니다. Grafana에 접속하여 각 요청에 대한 추적 정보를 시각화된 형태로 볼 수 있습니다.

  • 각 API 호출이 여러 마이크로서비스를 거치는 과정을 Grafana에서 시각적으로 분석할 수 있습니다.

결론

이번 강의에서는 OpentelemetryTempo를 통해 설정된 분산 추적 기능이 실제로 어떻게 작동하는지 확인했습니다. Grafana를 사용하여 추적 정보를 시각화하고 분석할 수 있으며, 이를 통해 복잡한 마이크로서비스 환경에서의 문제를 더욱 쉽게 해결할 수 있습니다.

다음 강의에서는 Grafana에서 분산 추적 데이터를 시각화하는 방법을 더 자세히 살펴보겠습니다.

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

profile
무슨 생각하며 사니

0개의 댓글