개발과 잡지식

OpenTelemetry 02 - Components 본문

micro service/opentelemetry

OpenTelemetry 02 - Components

잘하고싶은잉여 2021. 1. 20. 11:00

Data Sources

출처 : https://opentelemetry.io/docs/

아래 정의된 데이터 소스들을 제공합니다.

Traces

단일 request에 대한 진행을 추적하는 것을 trace라고 합니다. trace는 또한 애플라이케이션을 구성하는 서비스에서 다루어집니다.

Distributed tracing : 분산 추적 :은 네트워크 또는 보안 경계를 순회하는 것에 대한 추적입니다.

추적하는 각각의 단위를 span이라고 하며 trace는 span으로 이루어진 tree입니다.

Spans는 request의 flow가 시스템을 통과할 때 요청과 관련된 개별 서비스 또는 구성요소가 수행하는 일을 대표하는 개체입니다.

span은 context를 가지고 있으며 context는 전역적으로 고유한 식별자를 가지고 있습니다. 그리고 가용성 및 성능 문제를 디버그 하는 데 사용할 수 있는 요청, 오류 및 기간 (RED) 메트릭을 제공합니다. 이러한 메트릭은 가용성 및 퍼포머스 이슈 등에 있어서 사용됩니다.

trace는 single root path를 가지고 있으며 이는 전체 request에 대해서 엔드 투 엔드 latency를 인 캡슐화 합니다. 예를 들 자만 사용자가 장바구니 버튼을 누른다면 장바구니 버튼이 누린 이후 작업이 완료되기까지 모든 걸린 시간을 측정합니다.

trace는 단일 root span과 많은 child span을 가지고 있습니다. child span이란 요청의 일부로 발생하는 작업들을 뜻합니다. ( child span : 장바구니 버튼을 눌렀을 경우 => 현재 장바구니에 있는 목록을 가지고 옴, 현재 눌린 아이템을 추가함 등등 기타 요청들)

각각의 span들은 이름, 시작 및 종료 타임스탬프, 속성, 이벤트 및 상태와 같은 metadata를 가지고 있습니다.

OpenTelemetry의 span을 만들거나 관리하는, openTelemetry API는 tracer interface를 제공합니다. tracer 객체는 process에서 작동하는 span을 추적하며 책 입지며 현재 있는 span에 대해서 접근해서 attribute와 event 및 finishing를 추가할 수 있습니다.

하나 이상의 추적 프로그램 개체는 여러 추적 프로그램이 다른 옵션을 사용하여 단일 프로세스에서 인스턴스화 될 수 있도록 하는 팩토리 인터페이스 인 추적 프로그램 공급자를 통해 프로세스에서 만들 수 있습니다.

lifecycle of a span

  1. request를 수신, header정보에서 span의 context를 추출합니다.
  2. 새로운 child span이 생성합니다. (root span이 없다면 root span 생성)
  3. 서비스가 요청을 처리하고 span은 특성과 이벤트가 span에 추가됩니다. (request의 context를 이해를 도와주는 특징들 : hostname, customer identifier)
  4. 서비스의 하위 구성요소가 수행하는 작업으로 인해서 새로운 span이 생성될 수도 있습니다.
  5. 서비스에서 다른 remote 서비스를 호출한다면, 현재 span의 context를 serialized화 하고 header 또는 message에 주입해서 전달합니다.
  6. 서비스에서 수행 중인 작업이 성공적이든 아니든 완료됩니다. 스팬 상태가 적절하게 설정되고 스팬이 완료된 것으로 표시됩니다.

Metrics

https://opentelemetry.io/docs/concepts/data-sources/#metrics

Metrics는 차후에 적용하면서 추가 예정!

Logs

로그는 메타 데이터가 있는 구조화 (권장) 또는 구조화되지 않은 타임스탬프 텍스트 레코드입니다. 로그는 독립적인 데이터 소스이지만 스팬에 연결될 수도 있습니다. OpenTelemetry에서 분산 추적 또는 메트릭의 일부가 아닌 모든 데이터는 로그입니다. 예를 들어 이벤트는 특정 유형의 로그입니다.
이벤트는 특정 유형의 로그입니다. 로그는 종종 문제의 근본 원인을 확인하는 데 사용되며 일반적으로 누가 무엇을 변경했는지 및 변경 결과를 변경했는지에 대한 정보를 포함합니다

'micro service > opentelemetry' 카테고리의 다른 글

OpenTelemetry 01 - Components  (0) 2021.01.19
OpenTelemetry 00 - OpenTelemetry 란?  (0) 2021.01.18