Java

opentelemetry.io에서 제공하는 Instrumentation Custom Resource를 생성하여 OpenTelemetry 자동 계측 라이브러리를 구성하고 워크로드에 주입 할 수 있습니다.

본 문서는 2가지 설정에 대해 가이드 합니다.

  1. Log 설정 가이드

  2. APM 설정 가이드

(공통) Instrumentation CR 생성


인프라 - 커스텀 리소스 메뉴에서 작업할 클러스터를 선택하고 instrumentations CRD를 선택합니다. 생성 버튼을 이용하여 네임스페이스 별로 자동 계측할 내용을 등록 할 수 있습니다.

Instrumentation 커스텀 리소스는 네임스페이스 기준으로 적용되고, 다른 언어에 대해서도 선언 가능합니다. 본 가이드는 Java 에 대해 설명합니다.

Spec (생성 YAML)

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: {Instrumentation name}
spec:
  exporter:
    endpoint: http://cocktail-telemetry-collector.cocktail-addon:4318
  java:
    env:
      - name: OTEL_LOGS_EXPORTER
        value: otlp
      - name: OTEL_METRICS_EXPORTER
        value: otlp
      - name: OTEL_TRACES_EXPORTER
        value: otlp              
      - name: OTEL_EXPORTER_OTLP_PROTOCOL
        value: http/protobuf

        # 해당 네임스페이스의 anotation 값이 'true'인 모든 자바 어플리케이션을 수집하고싶을때 사용.
        # 아래 설정은 네임스페이스내 모든 Java 애플리케이션을 같은 이름으로 선언하는 경우 사용함.
        # 워크로드별 애플리케이션 이름을 다르게 사용하고자 하는 경우 각 애플리케이션 환경 변수에 설정.
      - name: OTEL_SERVICE_NAME
        value: {애플리케이션 이름}
      - name: OTEL_EXPORTER_OTLP_LOGS_HEADERS
        value: app_token={애플리케이션 토큰},app_name={애플리케이션 이름}
  • spce.exporter.endpoint : Collector 접속 주소를 입력 합니다. 칵테일에서는 고정값입니다.

  • OTEL_LOGS_EXPORTER : 로그를 수집하는 collector에 전달하는 프로토콜을 정의합니다.

    • otlp : OpenTelemetry Protocol을 사용하여 Collector에 정보를 전달합니다.

    • none: 사용하지 않습니다.

  • OTEL_METRICS_EXPORTER : 메트릭을 수집하는 collector에 전달하는 프로토콜을 정의합니다.

    • otlp : OpenTelemetry Protocol을 사용하여 Collector에 정보를 전달합니다.

    • none: 사용하지 않습니다.

  • OTEL_TRACES_EXPORTER : 트레이스(추적)를 수집하는 collector에 전달하는 프로토콜을 정의합니다.

    • otlp : OpenTelemetry Protocol을 사용하여 Collector에 정보를 전달합니다.

    • none: 사용하지 않습니다.

  • OTEL_EXPORTER_OTLP_PROTOCOL : OpenTelemetry Collector에서 전달 받을 프토토콜 종류 선택

    • http/protobuf : 기본값으로 칵테일에서는 이 값을 사용합니다.

커스텀 리소스를 통한 설정은 해당 네임스페이스에 있는 모든 애플리케이션이 대상입니다. 개별 어플리케이션 마다 환경변수를 추가하면 각기 다른 애플리케이션의 메트릭을 수집합니다.

워크로드 수정


Instrumentation 설정

에이전트를 주입 할 워크로드에 어노테이션을 추가합니다.

애플리케이션 - 서비스맵 - 워크로드 - 애플리케이션 선택 - "설정" 버튼을 클릭합니다.

Yaml 보기를 변경하여 template - metadata - annotaions 부분에 다음과 같은 어노테이션을 추가합니다.

instrumentation.opentelemetry.io/inject-java: 'true'

Log 설정

개별 환경 변수 설정

워크로드 별 애플리케이션 이름을 별도로 가져가는 경우에 사용합니다.

  template:
    spec:
      containers:
      - env:
        # Application 이름
        - name: OTEL_SERVICE_NAME
          value: {애플리케이션 이름}
        # 인증을 위한 설정
        - name: OTEL_EXPORTER_OTLP_LOGS_HEADERS
          value: app_token={애플리케이션 토큰},app_name={애플리케이션 이름}        

APM 설정 (Metrics, Traces)

개별 환경 변수 설정

  template:
    spec:
      containers:
      - env:
        # Application 이름
        - name: OTEL_SERVICE_NAME
          value: {애플리케이션 이름}
        # 추가 수집하는 Attribute 정보 (토큰값을 포함합니다.)
        - name: OTEL_RESOURCE_ATTRIBUTES
          value: token={애플리케이션 토큰}

Last updated