Spring Cloud Sleuth + Zipkin 사용 시 postman 등의 확장 프로그램 에서는 로그 기록이 Zipkin 으로 보내지지만, Axios 사용 시 로그 기록이 Zipkin 으로 보내지지 않는 점에 대한 해결을 기술
Axios 를 하나의 서비스로 Wrapping 시키는 방법을 제공하는데, 이 의존이 zipkin-axios 이다.
더이상 관리되지 않아 github.com/uschmann/zipkin-instrumentation-axios 에 zipkin-instrumentation-axios 로 버전 업이 됬다는데, 사용법은 동일해서 다행이다.
zipkin-instrumentation-axios 를 사용해본 결과 zipkin 이랑 충돌이 나서, 이 부분은 공부를 해봐야겠다.
일단 과정으로 넘어간다.
Axios 를 랩핑하기위한 wrapAxios 생성에 필요한 의존들 이다.
npm i --save zipkin
npm i --save zipkin-axios
npm i --save zipkin-transport-http
zipkin-axios.js
import Axios from "axios";
import wrapAxios from 'zipkin-axios'
import {HttpLogger} from 'zipkin-transport-http'
import {Tracer,ExplicitContext,BatchRecorder} from "zipkin";
const ctxImpl = new ExplicitContext();
const recorder = new BatchRecorder({
logger: new HttpLogger({
// 서비스를 등록할 Zipkin 서버의 엔드포인트를 정하는 듯
endpoint: `http://localhost:9411/api/v1/spans`
})
});
const tracer = new Tracer({ctxImpl,recorder});
// axios 에 tracer , 등록할 서비스 이름을 가지고 wrapAxios 를 만든다.
export const zipkinAxios = wrapAxios(Axios,{tracer,serviceName:'my-zipkin-axios'});
이후에는 Axios 호출 하듯 사용하면 된다.
여러 wrapAxios 를 만들 수 있는 듯 하며. 만든 서비스는 Zipkin에 등록된다.
Zipkin 에 뜨지않던 Axios 호출이 export 되어 찍히기 시작한다.
서버 단의 Sleuth 도 exportable 속성을 true 로 잡고 있다.
'작업하면서 배우는 것들' 카테고리의 다른 글
JPA Projection FindAll (0) | 2020.12.24 |
---|---|
Vue Router 와 Href 속성 (0) | 2020.12.24 |
Uncaught ReferenceError: regeneratorRuntime is not defined (0) | 2020.12.23 |
Intelli J 에서 .http 파일 사용 (0) | 2020.12.23 |
Missing URI template variable for method parameter of type (0) | 2020.12.23 |