기존에 Opentracing에서 Jaeger로 보내던 작업을 Opentelemetry로 변경하는 과정이에요.
이유는 Opentracing이 OpenCensus와 병합되면서 최신업데이트는 Opentelemetry에서 이루어지고 있어요.
운영중인 Jaeger서버에 Opentelemetry를 이용해서 스프링부트 서비스의 API를 추적하도록 설정하는 방법이에요.
SpringBoot 2.7.12
Jaegertracing/all-in-one 1.54
Opentelemetry javaagent 1.33
Opentelemetry 공식 깃허브에서 jar파일을 프로젝트에 다운받아요.
그리고 환경변수에 다운받은 jar경로를 등록 해요.
운용중인 jaeger서버가 localhost에 공개되어 있으면
Opentelemetry가 자동으로 grpc를 이용해서 jaeger에게 데이터를 보내요.
만약 도커를 사용해서 expose하고 있거나 localhost가 아닌 엔드포인트에서
jaeger가 운용중이라면 환경변수를 등록해서 명시적으로 연결할 수 있어요.
프로토콜은 지정하지 않으면 grpc가 기본이에요 grpc가 불가능하면 http/protobuf로 변경해서 통신할 수도 있어요.
엔드포인트 지정하는 방식은 grpc기준으로 다음과 같이 설정 해요.
이 때 value를 쌍따옴표("")로 감싸지 않도록 주의 해요.
O
...ENPOINT=http://example.com:4317
X
...ENPOINT="http://example.com:4317"
이제 서비스 API를 호출하면 Jaeger에서 모니터링할 수 있어요.
만약 연결이 안된다면 lsof로 포트를 확인해야 해요.
lsof -i -P
https://opentelemetry.io/docs/languages/java/automatic/
https://github.com/open-telemetry/opentelemetry-java-instrumentation