본문 바로가기
IT/MSA

Zipkin과 ElasticSearch, Kibana 연동하기

by twofootdog 2020. 7. 5.

이번 글에서는 Zipkin에서 수집한 트레이싱 정보를 In-Memory에 저장하지 않고, ElasticSearch에 저장한 후 Kibana를 통해서 확인하는 방법에 대해서 실습해 볼 것이다.

이 글의 순서는 다음과 같다.

1. 사전준비

2. Zipkin과 ElasticSearch, Kibana 연동하기

3. 테스트

 

1. 사전준비

이번 실습은 AWS 환경에 Zipkin 및 ElasticSearch & Kibana 설치 후 진행할 것이다.

따라서 사전에 다음과 같이 준비가 되어 있어야 한다.

 - ElasticSearch 및 Kibana 설치 후 실행(https://twofootdog.tistory.com/50?category=868323 참고. 참고하는 블로그에 있는 fluentd 설치는 이번 글 주제가 아니므로 제외)

 - Zipkin 설치 및 게이트웨이&마이크로서비스 설치(https://twofootdog.tistory.com/65?category=903234 참고)

 


2. Zipkin과 ElasticSearch, Kibana 연동하기

사전준비가 완료되었으면(ElasticSearch & Kibana 실행 및 Zipkin 설치) Zipkin이 설치된 서버에서 Zipkin을 실행시켜보자. 

Zipkin 실행 시에는 ElasticSearch 관련 옵션을 넣고 실행시켜야 한다.

# java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://[elasticsearch ip]:[elasticsearch port] -jar zipkin.jar

예) java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://13.124.142.195:9200 -jar zipkin.jar

 


3. 테스트

Zipkin과 ElasticSearch & Kibana가 모두 실행되었으면 이제 테스트를 진행해보자. 

게이트웨이와 마이크로서비스 2개를 모두 실행시킨 후 포스트맨으로 서비스를 호출해보자.

서비스를 호출할 때는 게이트웨이를 통해서 서비스를 호출하면 된다(로컬에서 서비스를 실행시켰다면 GET localhost:8080/cafe/info, GET localhost:8080/user/info 으로 호출 가능하다).

 

3-1. 서비스 및 Zipkin 로그 확인

서비스가 정상적으로 호출되었다면 Zipkin 로그의 exportable에는 "true" 라고 찍힐 것이고, http://[zipkin 호스트 ip]:9411 에서 트레이싱 정보 확인이 가능하다.

서비스 내 Zipkin 로그 : 

 

http://[zipkin 호스트 ip]:9411

 

 

3-2. Kibana 로그 확인

Zipkin으로 로그 트레이싱이 정상적으로 이루어졌는지 확인이 되었으면, 이제 ElasticSearch에 적재된 트레이싱 정보를 Kibana를 통해서 확인해보자.

http://[Kibana 호스트 ip]:5601 로 접속한 후 Management > Index Patterns > Create Index Pattern 로 들어가자.

 

[Create Index Pattern]에서 zipkin* 으로 검색한 후 [Next step]을 누른다.

 

[Time Filter field name]에서 timestamp_millis를 선택하고 [Create index pattern]을 클릭한다.

 

그리고 다시 Kibana > Discover로 가서 Filter를 조금 전 추가한 Index Pattern인 zipkin으로 변경한 후 [Refresh]를 클릭하면, 방금 전 실행시킨 마이크로서비스의 트레이싱 정보를 확인할 수 있다.

또한 Zipkin과 ElasticSearch를 연동시켰기 때문에, Zipkin을 종료시켰다가 재 실행시켜도 이전에 적재되었던 트레이싱 정보들이 사라지지 않고 계속해서 확인 가능하다(In-Memory 스토리지를 사용하게 되면 zipkin 종료 시 적재되었던 트레이싱 정보가 모두 사라지게 된다)

 

 


참고

https://logz.io/blog/zipkin-elk/

 

Distributed Tracing with Zipkin and ELK | Logz.io

Distributed tracing is a tracing methodology that seeks to overcome challenges tracing microservices. Learn how to integrate Zipkin with the ELK Stack to analyze trace requests and attain deep insights from distributed tracing.

logz.io

 

 

댓글