Skip to content

Commit

Permalink
otel
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Diger committed Sep 24, 2024
1 parent 5ec2fcc commit 6b3fffa
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions _posts/2099-08-29-opentelemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@ NHN은 사내 클라우드와 외부 클라우드(AWS)를 혼용하여 사용하

아래와 같이 Span이라는 작업단위를 표현하는 Tree구조로 이를 확인할 수 있다.

### Global Trace

Trace만으로는 MSA환경에서 제대로된 요청을 추적하기 어렵다.

MSA환경에서는 각 마이크로서비스와 통신하는 고유한 Trace Id를 갖게 되지만 여러 마이크로서비스와 통신하는 것이 결국은 어떤 기능을 위한 것인지 한눈에 알아보기가 힘들기 때문이다.

사용자 인증/인가 -> 사용자 잔액 조회 -> 결제

이 세 마이크로서비에서 수행하는 결제 로직이 있다고 했을 때, Trace Id는 X로 동일하지만, 비즈니스 관점에서 이 Trace Id가 어떤 요청에 대한 것이였는지 알아보려면 저 Trace ID를 가진 마이크로서비스를 모두 조회해야한다.

이를 완화할 수 있는 방법이 Global Trace로 이러한 하나의 유스케이스 과정을 하나의 Trace Id로 관리하는 래핑된 Trace Id인 것이다.

![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/trace.png?raw=true)

Trace는 특히 비동기 처리하는 것에 엄청나게 의미가 있다. 아래처럼 비동기에 대한 흐름을 한눈에 확인할수도 있다.
Expand All @@ -71,3 +83,26 @@ Trace는 특히 비동기 처리하는 것에 엄청나게 의미가 있다. 아
![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/opentelemetry-architecture.png?raw=true)

MicroService는 Otel이 제공하는 SDK, API를 통해 Otel이 정해놓은 형식에 맞춰 각종 지표를 보낸다.

![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/opentelemetry-architecture2.png?raw=true)

Receiver는 각종 데이터를 수신하거나 만들어내는 영역이다.

생성된 데이터는 Processor 영역을 거쳐 Exporters를 통해 원하는 백엔드로 전송한다.

Otel은 어떻게 배치했냐에 따라서 아래와 같이 Agent, Gateway로 나뉜다.

![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/agentvsgateway?raw=true)

게이트웨이 모드의 장점은 만약, 결과를 전송해야하는 대상이 `Backend 1`이 였을 때 `2`로 바꿔야하는 상황인데

에이전트만으로 데이터를 전송한다면 직접 `Backend 2`로 데이터 전송 방향을 바꾸는 설정을 만져야한다.

하지만 게이트웨이 모드를 사용하면 게이트웨이가 바라보는 서버를 `Backend 2`로 바꾸기만 하면 몇 천대의 에이전트가 있던간에 한번에 `2`로 바꿀 수 있게된다.

아래는 Otel Gateway를 도입한 모니터링 구성도이다.

![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/tobe.png?raw=true)

![](https://github.com/K-Diger/K-Diger.github.io/blob/main/images/opentelemetry/tobe2.png?raw=true)

Binary file added images/opentelemetry/agentvsgateway.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/opentelemetry/tobe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/opentelemetry/tobe2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6b3fffa

Please sign in to comment.