Zipkin

Zipkin

프록시가 추적 요청을 Zipkin으로 보내도록 설정하는 방법을 알려드려요.

출처: Istio 문서

본문

이 작업은 프록시가 추적 요청을 Zipkin으로 보내도록 설정하는 방법을 보여줘요.

시작하기 전에

업스트림 설정

  1. 메시 안에 zipkin을 설치해요.
  2. v2 추적을 백엔드로 전송해요. (Istio 1.24 릴리스에서 기본 설정이 Zipkin v1에서 v2로 바뀌었으니, 추적이 기본적으로 v2 형식이라는 점을 참고하세요.)
$ istioctl install --set meshConfig.enableTracing=true --set meshConfig.defaultConfig.tracing.sampling=100 --set meshConfig.extensionProviders.zipkin.address=zipkin.istio-system:9411

$ helm install --namespace istio-system --create-namespace istio-base istio/base --set global.meshID=mesh1
$ helm install --namespace istio-system istiod istio/istiod --set global.meshID=mesh1 --set meshConfig.enableTracing=true --set meshConfig.defaultConfig.tracing.sampling=100 --set meshConfig.extensionProviders.zipkin.address=zipkin.istio-system:9411

추적이 흐르는지 검증

추적 요청이 zipkin 서비스에 도달할 수 있는지 확인해요:

$ kubectl exec -it $(kubectl get pod -l app=istio-ingressgateway -n istio-system -o jsonpath={.items[0].metadata.name}) -c istio-proxy -n istio-system -- curl -s -o /dev/null -w "%{http_code}" http://zipkin.istio-system:9411/api/v2/spans

추적을 테스트할 트래픽 생성

이제 최소한의 추적 테스트 환경을 배포해요:

$ kubectl apply -f @samples/zipkin-simple-tracing.yaml@

이제 zipkin pod에서 로그를 가져와요:

$ kubectl -n istio-system logs deploy/zipkin --tail 20

그리고 스팬이 동기화되도록 몇 초 기다려요. 이제 zipkin에서 추적을 수집하려면 트래픽 생성을 늦춰야 해요. 여기서는 sleep을 사용해서 매 요청마다 0.5초 지연을 추가해요.

$ kubectl apply -f @samples/sleep.yaml@

sleep 서비스가 배포된 뒤에는 트래픽을 생성해서 추적 데이터를 만들어요. sleep pod에 몇 개의 요청을 보내려면 아래 명령을 사용해요:

$ for i in $(seq 1 1000); do kubectl exec -n sample deploy/sleep -- curl -sS -o /dev/null http://tracing.istio-system:9411/zipkin/api/v2/spans; done

Zipkin에서 추적 결과 보기

이제 Zipkin UI를 열어요:

$ kubectl port-forward svc/tracing -n istio-system 9411:9411 & 

브라우저에서 http://localhost:9411/zipkin/ 을 열어요.

아래 스크린샷은 몇 번의 요청 후의 Zipkin UI와 데모 서비스에 대한 추적을 보여줘요.

정리

zipkin을 서빙하는 port-forward를 중지해요:

$ pkill -f "port-forward.*9411"

테스트 서비스를 제거해요:

$ kubectl delete -f @samples/zipkin-simple-tracing.yaml@

sleep 서비스를 제거해요:

$ kubectl delete -f @samples/sleep.yaml@

(추가 정리는 필요 없어요)

함께 보기

추적이 성공적으로 흐르는지 검증

프록시가 Zipkin으로 추적을 보내도록 설정 (선택)

Zipkin/Trace 버전 1.24.0부터... Zipkin lib용 추적 설정을 확인하세요. Zipkin extensions을 설정하세요...

더 알아보기 (Learn more)