Python

Opentelemetry에서 제공하는 sdk를 사용하여 기존 애플리케이션에 설치하는 방식입니다. 파이썬의 로깅은 현재 opentelemetry에서 개발중인 단계입니다.

또한 본 가이드의 파이썬 애플리케이션은 'Flask'를 기반으로 생성하였습니다.

1. SDK를 통한 이미지 생성

1) 빌드/파이프라인 - 빌드에서 로그를 수집할 파이썬 애플리케이션의 빌드 상세

2) 이미지 빌드작업을 클릭하여 수정

3) 환경변수 설정과 Opentelemetry-python-instrumentation의 sdk를 다운로드

...

# flask 애플리케이션용 opentelemetry Sdk 다운로드
RUN pip install --upgrade pip && pip install opentelemetry-distro && opentelemetry-bootstrap -a install && pip install flask

# Log를 Export할 필수설정
ENV OTEL_EXPORTER_OTLP_ENDPOINT=$OTEL_EXPORTER_OTLP_ENDPOINT
ENV OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=$OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
ENV OTEL_EXPORTER_OTLP_LOGS_HEADERS=$OTEL_EXPORTER_OTLP_LOGS_HEADERS
ENV OTEL_SERVICE_NAME=$OTEL_SERVICE_NAME
ENV OTEL_LOGS_EXPORTER=$OTEL_LOGS_EXPORTER

# Python 애플리케이션 로깅을 위한 필수 설정
ENV OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true

# metric과 trace를 수집하지 않기 위한 none 처리
ENV OTEL_METRICS_EXPORTER=none
ENV OTEL_TRACES_EXPORTER=none

...

3. 컨테이너 설정

1) 로깅 - 애플리케이션 관리 에서 생성한 애플리케이션의 토큰 복사

2) 컨테이너 상세 - 설정 - 환경변수 탭에서 다음과 같이 환경변수를 설정

apiVersion: apps/v1
kind: Deployment
...
spec:
...
  template:
    spec:
      containers:
      - env:
	- name: OTEL_EXPORTER_OTLP_ENDPOINT
          value: http://cocktail-telemetry-collector.cocktail-addon:4318
        - name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
          value: http://cocktail-telemetry-collector.cocktail-addon:4318/v1/logs

	# opelemetry protocal을 사용하는 설정
	# otlp가 아닌 otlp_proto_http 확인
        - name: OTEL_LOGS_EXPORTER
          value: otlp_proto_http
        
	# Application 이름
	- name: OTEL_SERVICE_NAME
          value: {애플리케이션 이름}
        
        # 인증을 위한 설정
        - name: OTEL_EXPORTER_OTLP_LOGS_HEADERS
          value: app_token={애플리케이션 토큰},app_name={애플리케이션 이름}        
        
        image: {python-application image}
        imagePullPolicy: Always
        ...

log-agent 서비스 주소 : 인프라 - 클러스터 - 애드온 - 'log-agent' 클릭 후 서비스 이름 확인

( http 포트 = 4318 , grpc 포트 = 4317)

4. 애플리케이션 로그 확인

1) 로깅 - 애플리케이션 로그 - 애플리케이션 목록에서 설정한 애플리케이션 검색

Last updated