ZIPKIN 시작하기

ZIPKIN 시작하기

Zipkin 설치방법 1(Jar 파일 실행)

curl -sSL https://zipkin.io/quickstart.sh | bash -s

java -jar zipkin.jar

Zipkin Elasitc 저장소로 실행

java -jar zipkin.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=http://127.0.0.1:9200

Zipkin 설치방법 2(도커 이미지 실행)

docker run -d -p 9411:9411 openzipkin/zipkin

docker-compose.yml

version: "3.3" # 파일 규격 버전 services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 zipkin: image: openzipkin/zipkin container_name: zipkin # environment: # - STORAGE_TYPE=elasticsearch # - ES_HOSTS=localhost:9200 ## 도커로 엘라스틱 저장소 연결하는거는 다음처럼 했을때 안됐음. ports: - "9411:9411"

Zipkin 설치방법 3(zipkin-server 용 어플리케이션 생성)

@EnableZipkinServer 추가

위와 같은 준비가 끝났으면 spring 에서는

spring cloud slueth 연동

Zipkin 헤더

Zipkin은 B3-Propagation을 통해서 OpenTracing을 구현하고 있습니다. B3 propagation은 간단히 말해 ‘X-B3-‘으로 시작하는 X-B3-TraceId와 X-B3-ParentSpanId, X-B3-SpanId, X-B3-Sampled, 이 4개 값을 전달하는 것을 통해서 트레이스 정보를 관리합니다. 서버에서는 이 값들을 TraceContext에서 관리하는데요. Spring 프레임워크와 SLF4J(Simple Logging Facade for Java)를 사용하고 있었기에 MDC(Mapped Diagnostic Context)에서 해당 값을 꺼내서 사용할 수 있었습니다. HTTP를 통해 다른 서버로 전달하는 경우에는 HTTP 헤더를 통해서 전달하고, Kafka 메시지를 통해 전달하는 경우에는 Kafka 헤더를 통해서 전달합니다.

Spring cloud sleuth

Zipkin의 Brave는 B3-propagation의 Java 구현체이고, Spring Cloud Sleuth는 BraveTracer를 Spring 프레임워크에서 쉽게 사용하기 위한 라이브러리입니다. TaskExecutor와 RestTemplate, KafkaTemplate, KafkaListener, RedisTemplate을 사용하는 것만으로 새로운 스팬(span)이 생성됩니다. 다만, BeanPostProcessor를 통해서 동작하기 때문에 아래와 같이 메서드 내부에서 생성된 오브젝트를 사용하는 경우에는 동작하지 않는다.

TaskExecutor executor = new TaskExecutor () ; ->

@Bean

public TaskExecutor taskExecutor () { return new TaskExecutor () ; }

728x90

반응형

from http://juntcom.tistory.com/190 by ccl(A) rewrite - 2021-11-25 18:27:48