IT/MSA

Zipkin과 ElasticSearch, Kibana 연동하기

twofootdog 2020. 7. 5. 19:15

이번 글에서는 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