본문 바로가기
Observability/Opentelemetry

OpenTelemetry란?

by wlsdn3004 2023. 9. 18.
728x90
반응형

 

OpenTelemetry란?


OpenTelemetry는 traces, metrics 및 logs와 같은 telemetry 데이터를 생성하고 관리하기 위해 설계된 Observability 프레임워크 및 도구로, 애플리케이션의 동작을 추적하고 성능 문제나 에러를 식별하여 이를 신속하게 해결할 수 있게 도와준다.

 

OpenTelemetry는 벤더 및 도구에 종속되지 않고, Jaeger 및 Prometheus와 같은 오픈 소스 도구뿐만 아니라 상용 제품을 포함한 다양한 Observability 백엔드와 함께 사용할 수 있으며, Cloud Native Computing Foundation(CNCF) 프로젝트로 활발한 커뮤니티 활동을 통해 개발 및 유지되고 있다.

 

클라우드 컴퓨팅, 마이크로서비스 아키텍처의 증가, 그리고 점점 복잡해지는 비즈니스 요구 사항과 함께 가시성의 중요성이 증가하고 있다.

 

과거 환경에는 개발자들은 자체적으로 traces, metrics, logs를 위한 코드를 작성해야 했고, 이는 코드 복잡성을 높였다.

또한 각각의 벤더나 도구마다 특정한 데이터 형식과 프로토콜을 사용하여 텔레메트리 데이터를 수집하고 저장했기 때문에 사용하고 있는 Observability 백엔드가 바뀌기라도 한다면 이에 맞게 코드를 전부 수정하거나 사용하고 있는 에이전트를 전부 바꿔야 하는 치명적인 단점이 존재했다. 즉, 호환성 문제와 벤더 종속성 문제가 있었다.

 

코드로 데이터를 생성하고 텔레메트리 데이터를 Observability 백엔드로 전송하는 데 필요한 표준이 없다는 문제를 인지하고 이 문제를 해결하기 위해 OpenTracing과 OpenCensus가 병합하여 만든 것이 Opentelemetry 프로젝트이다.

 

Opentelemetry는 데이터를 저장하거나 이를 시각화하는 역할을 담당하는 부분이 없고, 데이터 수집을 위한 agent와 수집한 데이터를 전송하는 Collector만 존재한다. 그 외 역할은 모니터링 벤더에게 위임하여 연계하여 사용할 수 있게 설계되어 있다.

 

아래는 OpenTelemetry의 Data flow에 대한 그림이다.

Opentelemetry data flow

  • OpenTelemetry에는 원하는 언어로 OpenTelemetry API를 사용하여 텔레메트리 데이터를 생성하고 선호하는 백엔드로 데이터를 내보낼 수 있는 Opentelemetry SDK가 있다. 이를 통해 데이터 계측을 구현할 수 있고, Python, Java 등 일부 언어의 경우 데이터 자동 계측 방식을 제공하여 agent를 구성할 수 있다.
  • OpenTelemetry Collector는 내보내어진 텔레메트리 데이터를 수신하는 Receivers, 가공/변환 및 제한하는 Processors, 백엔드로 내보내는 Exporters 역할을 담당한다.
  • 텔레메트리 데이터를 시각화하고 분석하기 위해서는 데이터를 Collector를 통해 Jaeger, Zipkin, Prometheus 또는 벤더별 백엔드와 같은 도구로 내보내야 한다.

 

마치며


다양한 벤더 모니터링 도구에서 텔레메트리 데이터 수집기로 OpenTelemetry를 채택하여 사용하고 있다.(참고 링크 : https://opentelemetry.io/ecosystem/vendors/)

분산 추적, 지표 및 로그 데이터를 모두 통합할 수 있고, 벤더에 종속되지 않으며, 활발한 커뮤니티를 통해 빠르게 발전하고 있다. 또한, 모니터링 프로세스를 단순화하여 모니터링 환경을 개선하는 데 도움을 줄 수 있기에 위 장점들을 고려한다면 사용해 볼 만한 도구인 것 같다.

 

반응형

댓글