본문 바로가기

프로그래밍/로깅과 트레이싱6

[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_실제 운영 환경 안녕하세요. 오늘은 Elastic Stack을 이용한 중앙 집중형 로깅_1 포스팅에 이어서 각각의 elastic stack을 한번 이어보도록 하겠습니다. 개론 클라우드 환경에서 중앙 집중형 로깅을 만드는 것은 로컬환경에서 세팅하는 것과 많은 차이를 가지고 있습니다. 우리가 클라우드 상황임에 따라서 고려해야하는 상황이 좀 더 추가되는 것이지요. 고려해야하는 상황과 해결법은 아래와 같습니다. 서비스는 서버에 독립적이어야 한다. docker를 통한 해결 서비스는 상황에 따라 유연하게 Scale-out될 수 있어야한다. 새로운 서버에 새로운 서비스가 인스턴스로 올라왔다면 Log Shipper(로그를 중앙으로 전달하는 프로세스)또한 Scale-out 되어야 한다. Auto-Scaling 등을 이용한 해결 kube.. 2019. 12. 18.
[MSA] Filebeat와 Logstash의 비교 안녕하세요. 원래 오늘은 ElasticSearch를 실제로 적용시켜보는 과정을 포스팅하려고 했습니다. 하지만 아키텍처를 그리기 전에 한번 비교하고 넘어가고 싶어서 이렇게 번외로 비교를 한번 진행하려고 합니다. 원래 ELK Stack에서 L인 Logstash는 ElasticSearch로 data shipper 역할을 하고 있었습니다. 어플리케이션에서 생산되는 log 등에 대해서 분석 및 수집 도구인 ElasticSearch로 전송의 역할도 담당했습니다. 하지만 2015년 더 경량의 data shipper인 filebeat가 나왔습니다. 이 둘의 공통점은 무엇이고 차이점은 무엇인지, 그리고 filebeat는 어디에 쓰면 좋고 logstash는 어디에서 사용하면 좋을지 한번 알아보도록 하겠습니다. 이 글은 l.. 2019. 12. 13.
[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_1 안녕하세요. 저번시간까지는 Tracing에 대해서 알아보았습니다. 그리고 이번시간 부터는 중앙 집중형 로깅에 대해서 알아보도록 하겠습니다. 중앙 집중형 로깅이라는 것은 말 그대로 기존 방식의 로컬의 하드디스크에 로깅을 남기는 것이 아니라 외부에 로깅을 하는 것을 말합니다. 이런 로깅 방법의 지원으로 Elastic Stack을 이용할 수 있습니다. 원래 ELK Stack은 빅데이터 분석용으로 많이 사용되었었지만 클라우드 환경이 보편화 되며 중앙 집중형 로깅에도 많이 사용된다고 합니다. 간단한 설명 후 진행하도록 하겠습니다. Elastic Stack? 사실 Elastic Stack보다는 ELK Stack으로 많이 알려져 있습니다. 그럼 ELK Stack이란 뭘까요? 이에대한 설명은 elastic 회사 홈페이.. 2019. 12. 9.
[MSA] Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing_2 안녕하세요. 오늘은 저번 포스팅에 이어서 Zipkin과 Sleuth를 연동하여 구현해보겠습니다. sleuth로 id를 주입하여 zipkin에서 취합여 보기좋게 트레이싱 하는 것 까지 입니다. 오늘 이 테스트를 진행하기 위해서는 2개의 프로젝트가 필요합니다. 그리고 오늘 프로젝트의 소스는 github에 올려두겠습니다. Zipkin과 Sleuth 연동 zipkin에서 데이터를 모으기 위한 시퀀스 다이어그램은 아래와 같습니다. 보시면 sleuth에서 trace에 대한 ID를 헤더에 기입하며, 타 시스템어 전송 후 돌아온 응답에 대해서 zipkin으로 비동기로 전송합니다. 이렇게 zipkin에 보내진 데이터는 취합되어 유저에게 보여주게 되는것입니다. 그렇다면 이제 본격적으로 구현해보도록 하겠습니다. Zipkin.. 2019. 12. 7.
[MSA] Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing_1 안녕하세요. 오늘은 Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing을 하는 방법에 대해서 실습해보도록 하겠습니다. Zipkin Zipkin은 분산 트레이싱 시스템입니다. Zipkin은 시간 데이터를 모아 시간 지연 문제등을 해결할 수 있습니다. 로그 파일에 Tracing ID가 있다면 해당 ID를 통해 바로 이동할 수 있으며, 그렇지 않다면 서비스, Tag 등의 쿼리 기반으로 처리할 수 있습니다. 아래는 Zipkin의 UI화면입니다. Tracing을 해보기 위해서 Zipkin을 설치해보도록하겠습니다. 혹시 Zipkin에 대해 아키텍처적으로 궁금하신 분들은 https://zipkin.io/ 공식사이트를 방문하셔서 확인하시면 될 것같습니다. 설치 & 실행 https://.. 2019. 12. 5.
[MSA] MSA의 로깅과 트레이싱 안녕하세요. 오늘부터는 새로운 주제로 찾아뵙게 되었습니다. 바로 MSA입니다. 저희 회사에서 저는 요즘 프로젝트를 MSA의 기술들을 적용해가며 진행하고 있습니다. 오늘은 MSA의 기술 중 로그관리와 트레이싱에 대해서 한번 알아보도록 하겠습니다. MSA의 개념에 대한 설명은 추후에 따로 준비하도록 하겠습니다. ^^ 문제 제기 MSA(Micro Service Architecture)는 분산 환경에서 운영된다는 특징 때문에 각각의 서비스에 대한 로깅과 모니터링은 큰 고민거리로 남겨지게 됩니다. 서로 다른 개별 마이크로서비스(서버)에서 발생하는 로그를 연결지어 트랜잭션의 처음부터 끝까지 추적을 해내어야 하는데 이것은 쉽지않은 일입니다. 아래는 스프링 5.0 마이크로서비스 2/e에서 발췌한 내용입니다. 전통적인 .. 2019. 12. 4.