Back-end/Spring Cloud (MSA)
Spring Cloud (MSA) 분산추적 , Zipkin
javapp 자바앱
2022. 12. 30. 00:00
728x90
분산 추적 Distributed Tracing
- 각각의 요청에 Unique Id 할당
- 시간 데이터를 모아 시간 지연 문제 해결
집킨 사용
Open Zipkin 은 MSA 에서 성능 문제를 확인할 수 있는 매우 편리한 도구
- 트랜잭션의 소요 시간을 그래픽으로 확인 가능
- 호출에 관련된 각 마이크로서비스별로 소요된 시간 분석 가능
이미지 생성, 컨테이너 생성
openzipkin/zipkin Tags | Docker Hub
docker run -p 9411:9411 openzipkin/zipkin:2.23
의존성 추가
currency-conversion-service, currency-exchange-service, api-gateway 서버
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-sleuth-zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
application.properties
currency-conversion-service, currency-exchange-service, api-gateway
#zipkin
# 0.1 : (10%) 1초에 1000건이 들어왔다고하면 여기에서 100건을 zipkin에게 전달
spring.sleuth.sampler.probability=1.0
zipkin을 통해 요청에 대한 지연시간등의 정보를 볼 수 있음.
CurrencyExchangeController
private Logger logger = LoggerFactory.getLogger(CurrencyExchangeController.class);
@GetMapping("/currency-exchange/from/{from}/to/{to}")
public CurrencyExchange retrieveExchangeValue(
@PathVariable String from,
@PathVariable String to
)
{
logger.info("retrieveExchangeValue called with {} to {}", from , to);
로거를 통해 Trace ID 확인 가능
2022-12-11 22:51:35.935 INFO [currency-exchange,efa2a030a5d3cc0b,efa2a030a5d3cc0b] 6876 --- [nio-8000-exec-2] c.j.m.c.c.CurrencyExchangeController : retrieveExchangeValue called with USD to INR
참고:
Distributed tracing (microservices.io)