Trace Agent

Q1 : Trace Agent로 무엇을 할 수 있나요?


Trace agent는 OpenTelemetry 로부터 추출된 Trace 데이터를 데이터세이커의 서버에 전송하는 에이전트입니다. 이를 통해 사용자는 별도의 APM용 backend 구성 없이 어플리케이션에 대한 성능 지표와 성능 통계 등을 확인할 수 있습니다.

Q2 : OpenTelemetry는 무엇인가요?


OpenTelemetry는 CNCF(Cloud Native Computing Foundation)에서 관리하는 원격 계측 프로젝트입니다. OpenTelemetry는 애플리케이션 및 시스템에서 원격 측정 데이터를 수집, 내보내기 및 분석하기 위한 일련의 API, 라이브러리, 에이전트 및 계측을 제공하는 오픈 소스 관찰 가능성 프레임워크를 제공합니다.

OpenTelemetry는 back-end에 보내는 데이터 형식에 대한 표준을 만드는 것을 목표로 하고 있으며, Java, Go, Python 등 다양한 언어에 대한 API, SDK 등을 지원하고 있습니다.

OpenTelemetry는 벤더 중립적입니다. 그렇기에 많은 모니터링 회사들이 개발에 참여 중에 있으며, 이를 활용하여 서비스를 제공하고 있습니다. 이런 점 덕분에 사용자는 어플리케이션에 OpenTelemetry를 instrument 한 이후에는, 코드의 수정 없이 모니터링 back-end를 교체할 수 있습니다.

데이터세이커는 OpenTelemetry의  Trace data back-end를 지원합니다. 유저는 자신의 어플리케이션에 OpenTelemetry의 API나 SDK를 사용하여 APM용 데이터를 생성한 뒤, 이를 데이터세이커 Trace-Agent에 전송함으로 OpenTelemetry가 제공하는 성능 지표를 확인할 수 있습니다.

현재 데이터세이커는 OpenTelemetry의 Trace 데이터 연동을 지원하고 있습니다.

Q3 : 언어 지원 범위가 어떻게 되나요?


기본적으로 OpenTelemetry는 Java, Python, Go, JavaScript 등 다양한 언어와 라이브러리를 지원합니다. 현재 DataSaker는 Java, Python, Node.js에 대해서 정상적으로 동작하는 것이 확인되었으며 앞으로 지속적으로 늘려나갈 예정입니다.

자세한 정보는 다음 링크에서 확인하실 수 있습니다.

참조사이트 : https://opentelemetry.io/docs/instrumentation/#status-and-releasesCopy

Instrumentation
OpenTelemetry code instrumentation is supported for many popular programming languages

Q4 : 어떤 프로토콜과 포트를 사용하나요?


연동되는 언어에 따라 다를 수 있습니다. 예를 들어, Node.JS의 OpenTelemetry 라이브러리는 http 프로토콜을 지원하며, 따라서 instrument 된 어플리케이션은 Trace-Agent의 4318 포트로 데이터를 전송하여야 합니다.

또 다른 예로, Java의 auto-instrument에 사용되는 opentelemetry-javaagent는 기본값으로 grpc를 지원합니다. 따라서 Trace-Agent의 4317 포트에 데이터를 전송하여야 합니다.

프로토콜
프로토콜 (layer 4)
포트
grpc (opentelemetry)
TCP
4317
http (opentelemetry)
TCP
4318
grpc (jaeger)
TCP
14250
http (jaeger)
TCP
14268
thrift-compact
UDP
6831
thrift-binary
UDP
6832