일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- resize image with go
- 코틀린
- https go
- 개인블로그 hugo
- cli 만들기
- 코틀린 out
- 돌연변이 테스팅
- output stream
- JPA
- MySQL
- image resizer with go
- https 서버 구현
- Mutation testing
- Convariance
- 자바
- IntelliJ
- kotlin
- 공짜블로그
- ruby
- 코틀린 in
- 객체지향
- standard input
- Test
- https implement
- standard output
- InnoDB
- https 실습
- Pitest
- resizer 구현
- Java
- Today
- Total
Rlog
Express 에 B3-Propagation 전달하기 본문
우리는 MSA 환경의 Spring 에서 주로 Sleuth 라는 Library 를 사용한다. Sleuth 는 B3-Propagation 을 이용하여 서버간의 Request 흐름을 알 수 있게 해준다. Zipkin 등을 이용하면 UI 측면에서 쉽게 추적할 수 있다. 일단 Sleuth 가 어떻게 되어 있는지 간단하게 살펴보자. 기본적으로 Sleuth 는 아래와 같이 trace_id 와 span_id 를 가진다.
Spring Sleuth 를 사용하게 되면 Multi Thread 간의 문제도 최신버전에서는 해결해준다. @Async 를 썼을때 다른 Thread 로 Context 가 넘어가더라도 traceId 를 잘 복사해주는 것을 확인했었다. 하여튼 TraceId 를 통해서 우리는 아래와 같이 하나의 요청이 들어왔을때 로직들의 흐름이 파악이 가능하다.
이렇게 Logging 을 했을때 가장 중요한 점은 하나의 Request 가 Response 가 되기까지 어떤 행동들을 하는지 전부 파악할 수 있다는 것이다. 즉, 어떤 서버를 호출하거나 혹은 DB 에 쓰기 / 읽기 작업을 하는 것 모두 파악이 가능하다. 우리 팀 서버에는 한가지 문제점이 있었는데 Sleuth 를 최근에 도입한 후에 NodeJS 까지 연결성을 가져가는 것이 힘들었다. 그래서 기술 조사를 하던 도중 NodeJS 에도 B3-Propagation 정책을 따르는 라이브러리가 있는 것을 발견했다.
https://github.com/open-telemetry/opentelemetry-js
위 라이브러리 인데 해당 라이브러리를 이용하여 코드를 적용하면 NodeJS 에서도 아래와 같은 로그를 확인할 수 있다.
'Nodejs' 카테고리의 다른 글
Npm VS Yarn (2) | 2022.03.14 |
---|---|
Mac NVM 설치 (0) | 2021.12.08 |