Zipkin
Zipkin
프록시가 추적 요청을 Zipkin으로 보내도록 설정하는 방법을 알려드려요.
출처: Istio 문서
본문
이 작업은 프록시가 추적 요청을 Zipkin으로 보내도록 설정하는 방법을 보여줘요.
시작하기 전에
업스트림 설정
- 메시 안에
zipkin을 설치해요. - 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 lib용 추적 설정을 확인해 보세요
추적이 성공적으로 흐르는지 검증
프록시가 Zipkin으로 추적을 보내도록 설정 (선택)
Zipkin/Trace 버전 1.24.0부터... Zipkin lib용 추적 설정을 확인하세요. Zipkin extensions을 설정하세요...