Skip to main content

관찰 가능성 엔지니어링

OpenTelemetry의 개념 - 파이프라인, 리소스

OpenTelemetry의 개념

  • 파이프라인

    • 각 시그널이 획득한 원격 측정 데이터가 유용하게 쓰이려면 저장/분석을 수행할 수 있도록 데이터 저장소에 저장이 필요하다.
    • 시그널 구현체는 원격 측정 데이터를 생성/처리/전송할 수 있는 매커니즘을 제공한다.
      • Provider -> 생성기 -> 처리기 -> Exporter 순으로 처리 구조를 가진다.
        • Provider
          • 설정 가능한 팩토리
          • 원격 측정 데이터를 생성할 때 사용하는 엔티티에 애플리케이션이 접근할 수 있도록 한다.
          • SDK가 제공하는 기본 전역 프로바이더를 사용하거나, 애플리케이션에서 여러 개의 프로바이더를 설정할 수도 있다.
          • 원격 측정 데이터가 생성되기 이전에 init 되어야한다.
        • 생성기
          • 애플리케이션을 계측하고, API를 사용하는 동안 상호 작용하는 대상
          • 계측하는 시그널에 따라 다른 이름을 가지게 된다.
            • 이름은 서로 다르지만, 원격 측정 데이터를 생성하기 위해 존재한다는 목적을 동일하다.
            • 추적시그널 = 추적기
            • 메트릭 시그널 = 미터
        • 처리기
          • 데이터의 내용를 추가로 수정할 수 있다.
          • 데이터가 어떤 빈도로 처리되야 하는지, 어떻게 추출되어야 하는지를 결정한다.
        • Exporter
          • 원격 측정 데이터가 애플리케이션 컨텍스트를 빠져나가기 전에 거치는 마지막 단계
          • OpenTelemetry의 내부 데이터 모델을 Exporter가 이해한 형식으로 변환하는 역할
          • 다양한 export 방식 및 프로토콜 지원
            • OpenTelemetry 프로토콜
            • 콘솔
            • 예거
            • 집킨(Zipkin)
            • 프로메테우스
            • OpenCensus
      • 원격 측정 파이프라인의 각 컴포넌트는 중요한 원격 측정 데이터가 누락되지 않도록 애플리케이션 코드 초반부에 init하는 것이 일반적이다.
  • 리소스

    • 애플리케이션 전반에 걸쳐서 원격 측정 데이터를 의미있고, 일관성있게 만드는 핵심 컴포넌트
    • 서로 다른 시그널에 적용된 일련의 속성
    • 원격 측정 데이터의 출처를 식별할 때 사용
      • 출처가 서버인지, 컨테이너인지, 함수인지
      • 데이터 분석 시 동일 리소스 내에서 발생한 서로 다른 이벤트를 연결하는데 사용할 수 있다.
    • 리소스 속성은 데이터를 백엔드 시스템으로 보내기 전 시그널로 부터 전달받은 원격 측정 데이터를 추출할 때 추가된다. 보통 애플리케이션 시작 시 설정되고, Provider와 연결된다.
    • 애플리케이션 수명 주기 동안 변하지 않는 것이 일반적이다.
    • 리소스 속성
      • service.name : 서비스명
      • service.version : 서비스의 버전 식별자
      • host.name : 서비스가 작동하고 있는 호스트명
    • 리소스와 리소스 감지기는 시맨틱 표기법을 따름