이번 글에서는 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/
'IT > MSA' 카테고리의 다른 글
아파치 카프카(Apache Kafka) 정의 및 특징 (0) | 2020.10.17 |
---|---|
Jaeger를 활용한 분산 환경 서비스 로그 트레이싱(SpringBoot, Spring Cloud Gateway 활용) (1) | 2020.07.11 |
Zipkin과 Sleuth를 활용한 분산 환경 로그 트레이싱 (1) | 2020.06.23 |
Spring Cloud Gateway(SCG)를 활용한 API Gateway 구축 (6) | 2020.06.22 |
Spring Cloud Gateway(SCG)에서 CORS 적용(allow-Credentials) (0) | 2020.05.27 |
댓글