
Python 애플리케이션에서 OpenTelemetry 사용
효율적인 문서 생성과 관찰 가능성은 현대 소프트웨어 개발에서 확장 가능하고 탄력적인 시스템을 구축하는 데 필수적인 기반입니다. 개발자는 오픈 소스 관측 플랫폼인 OpenTelemetry를 사용하여 분산 시스템에서 관측 가능한 데이터를 계측, 수집 및 분석할 수 있습니다.
개발자는 강력한 .NET Framework 인 IronPDF 사용하여 PDF 문서를 쉽게 생성, 수정 및 출력할 수 있습니다. 이 글에서는 OpenTelemetry Python과 IronPDF 의 통합에 대해 논의하고, 이 두 기술이 어떻게 함께 작동하여 관찰 가능성과 문서 생성 잠재력을 향상시키는지 보여줍니다.
개발자는 OpenTelemetry API 및 SDK 패키지(Python으로 구현된 OpenTelemetry 프로젝트)를 통해 분산 시스템에서 공개 원격 측정 데이터 및 기타 데이터를 계측, 수집 및 내보내기 위한 광범위한 기능 세트에 액세스할 수 있습니다.

OpenTelemetry 기능
Python의 주요 기능을 위한 OpenTelemetry 계측 도구를 살펴보겠습니다.
분산 추적
- 분산 추적은 개발자가 분산된 시스템을 통해 요청 경로를 추적할 수 있도록 해주며, 이는 Python용 OpenTelemetry를 통해 가능해집니다.
- 추적 정보는 서비스 접속 날짜 및 시간을 포함하여 요청 순서에 대한 통찰력을 제공합니다.
- 개발자는 Python 프로그램에 계측 기능을 추가하여 분산 추적의 개별 작업 또는 일부를 기록할 수 있습니다.
지표 수집
- OpenTelemetry Python은 시스템의 동작 및 성능에 관한 숫자 데이터를 수집하는
MeterProvider과 같은 메트릭 가져오기를 용이하게 합니다. - 개발자는 지연 시간, 처리량, 오류율 및 리소스 사용량과 같은 측정값을 수집하기 위해 애플리케이션에 계측 도구를 설치할 수 있습니다.
- 이러한 지표는 사용 패턴, 성능 추세 및 시스템 상태에 대한 통찰력을 제공함으로써 시스템 동작을 이해하는 데 도움이 됩니다.
컨텍스트 전파
- OpenTelemetry API 패키지를 사용하면 컨텍스트 전파가 더 쉬워지며, 이를 통해 추적 및 스팬 컨텍스트와 같은 분산 컨텍스트가 서비스 경계를 넘어 전파됩니다.
- 원격 측정 데이터는 컨텍스트 전파 덕분에 시스템을 통과하면서 상호 연관되고 맥락화될 수 있으므로 데이터의 연속성과 일관성이 유지됩니다.
계측 라이브러리
- OpenTelemetry Python은 널리 사용되는 프레임워크, 라이브러리 및 프로토콜용 계측 패키지를 제공하여 기존 Python 애플리케이션을 쉽게 계측할 수 있도록 합니다.
- 웹 프레임워크(Flask 및 Django 등), 데이터베이스 클라이언트(SQLAlchemy 및 Pymongo 등), 메시징 시스템(Kafka 및 RabbitMQ 등) 등과의 통합 기능은 계측 라이브러리에서 찾을 수 있습니다.
수출업체 생태계
- OpenTelemetry Python에서 제공하는 다양한 익스포터를 통해 개발자는 원격 측정 데이터를 다양한 관측 시스템 및 백엔드로 내보낼 수 있습니다.
- Jaeger, Zipkin, Prometheus, AWS X-Ray, Google Cloud Trace 등과 같은 관찰 플랫폼과의 통합은 익스포터에서 지원됩니다.
- 개발자는 익스포터를 설정하여 원격 측정 데이터를 하나 이상의 백엔드로 전송하여 장기 저장, 분석 및 표시할 수 있습니다.
- OpenTelemetry Python은 수집되는 원격 측정 데이터의 양을 조절하기 위해 가변 샘플링 기법을 지원합니다.
- 개발자는 사용자 지정 샘플링 로직을 적용하거나, 특정 비율의 트레이스를 샘플링하도록 설정하거나, 사전 정의된 매개변수(예: 요청 헤더 또는 경로)에 따라 샘플링할 수 있는 옵션을 제공합니다.
맥락적 기록 관리
- 원격 측정 데이터 외에도 상황별 데이터를 기록하는 도구가 OpenTelemetry Python SDK에서 제공됩니다.
- 개발자는 컨텍스트 로깅을 통해 로그 메시지에 추적 및 범위 컨텍스트를 추가할 수 있으며, 이를 통해 문제 해결 및 디버깅에 더 많은 컨텍스트를 제공할 수 있습니다.
OpenTelemetry Python 생성 및 구성
OpenTelemetry 설정 구성
프로젝트에 OpenTelemetry를 설정하려면 pip install opentelemetry-exporter-jaeger를 사용하여 필요한 패키지를 설치하는 것부터 시작할 수 있습니다.
pip install opentelemetry-exporter-jaeger
다음으로 다음 명령어를 사용하여 OpenTelemetry Python SDK를 설치하십시오.
pip install opentelemetry-sdk
opentelemetry-api pip 패키지는 계측을 위한 포괄적인 API를 제공하고 자동 계측을 제공하여 애플리케이션의 계측을 더 쉽게 만듭니다. 이렇게 하는 또 다른 방법은 효율적인 텔레메트리 데이터 내보내기를 보장하기 위해 내보내기-가져오기 BatchSpanProcessor 방법을 사용하는 것입니다.
OpenTelemetry SDK 매개변수를 정의하려면 구성 파일을 작성하세요. 구성 파일 otel_config.py는 예시로 사용됩니다. 모든 가져오기, 예를 들어 resources 가져오기 Resource 및 trace 가져오기 TracerProvider가 코드 예제가 오류 없이 설정되도록 존재하는지 확인하세요.
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
# Configure Jaeger exporter
jaeger_exporter = JaegerExporter(
agent_host_name="localhost",
agent_port=6831,
)
# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({'service.name': 'my-python-service'}))
tracer_provider.add_span_processor(BatchSpanProcessor(jaeger_exporter))
trace.set_tracer_provider(tracer_provider)
이 설정 파일 내에서:
- Jaeger 익스포터는 로컬 호스트 Jaeger 에이전트로 추적 정보를 내보내도록 설정되어 있습니다.
- Jaeger 익스포터를 사용하여
TracerProvider를 구성하고 이를 글로벌 트레이서 공급자로 설정합니다. - 저희는 Python 프로그램의 서비스 이름을 제공합니다.
애플리케이션에서 OpenTelemetry를 초기화하세요
Python 프로그램에 otel_config 모듈을 가져온 다음, 다음 예제 Python 코드를 사용하여 시작 시 OpenTelemetry를 초기화하세요.
from opentelemetry import trace
from otel_config import tracer_provider
# Initialize OpenTelemetry
trace.get_tracer(__name__)
이렇게 하면 otel_config.py에 있는 구성이 OpenTelemetry 계측을 위해 초기화됩니다.
지원서 작성 시 필요한 도구
OpenTelemetry를 사용하여 Python 프로그램에 계측 기능을 추가하면 추적 정보를 기록할 수 있습니다. 코드에 계측 기능을 추가하는 방법에는 수동으로 추가하거나 내장 라이브러리를 사용하는 두 가지 옵션이 있습니다. 다음은 몇 가지 수동 계측 호출 예시입니다.
from opentelemetry import trace
# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
# Your code here
pass
Jaeger UI에서 추적 보기
기록된 추적 정보를 확인하고 분석하려면 Jaeger 사용자 인터페이스로 이동하십시오. OpenTelemetry 수집기가 기록한 추적을 보려면 웹 브라우저에서 Jaeger UI(일반적으로 http://localhost:16686)를 열고 서비스 이름을 선택하세요.
본 지침을 따라 OpenTelemetry Python을 애플리케이션에 성공적으로 설치 및 구성했습니다. 이제 OpenTelemetry를 사용하여 추적 데이터를 기록하고 Jaeger 백엔드로 내보내면 Python 프로그램의 동작 방식과 성능을 확인할 수 있습니다.
IronPDF 시작하기
IronPDF 란 무엇인가요?
Iron Software 의 강력한 .NET 라이브러리인 IronPDF 를 사용하면 개발자는 .NET 애플리케이션 내에서 PDF 문서를 생성, 편집 및 발표할 수 있습니다. 개발자는 IronPDF 사용하여 기존 PDF 파일, HTML 텍스트, URL 및 이미지와 같은 다양한 소스에서 PDF 문서를 프로그래밍 방식으로 생성할 수 있습니다. IronPDF의 기능을 좀 더 자세히 살펴보겠습니다.

HTML을 PDF로 변환
개발자는 IronPDF 사용하여 HTML 콘텐츠를 PDF 파일로 쉽게 변환할 수 있습니다. 개발자는 HTML 텍스트를 입력으로 사용하여 서식, 이미지 및 스타일이 포함된 시각적으로 풍부한 PDF 문서를 생성할 수 있습니다.
URL을 PDF로 변환
개발자는 IronPDF 사용하여 URL에서 직접 PDF 문서를 생성할 수 있습니다. 이 기능을 활용하는 훌륭한 사례 중 하나는 웹 페이지의 콘텐츠나 웹 앱에서 동적으로 생성된 콘텐츠를 캡처하는 것입니다.
이미지를 PDF로 변환
IronPDF 사용하면 PNG, JPEG 및 BMP 형식의 이미지를 PDF 문서로 변환할 수 있습니다. 이 기능은 앱 개발자가 사진을 PDF 문서로 만들 수 있도록 해주며, 사진 앨범 제작이나 사진을 PDF 파일에 삽입하는 등의 앱에 유용합니다.
IronPDF 설치 방법
컴퓨터에 Python이 설치되어 있는지 확인한 후, pip를 사용하여 IronPDF를 설치하세요.
OpenTelemetry를 사용하여 IronPDF 로 PDF 문서 생성하기
IronPDF 사용하여 PDF 문서를 생성 하려면 OpenTelemetry 초기화 코드 아래에 다음 코드를 추가하십시오.
from ironpdf import ChromePdfRenderer
from opentelemetry import trace
# Generate PDF document with IronPDF
with trace.get_tracer(__name__).start_as_current_span("pdf_generation"):
iron_pdf = ChromePdfRenderer()
html_content = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
pdf_content = iron_pdf.render_html_as_pdf(html_content)
# Save or send the PDF content as needed
with open("output.pdf", "wb") as file:
file.write(pdf_content)
이 코드 구절에서:
- OpenTelemetry 추적기를 활용하여
pdf_generation라는 새로운 스팬을 시작합니다. - 이 기간 동안 HTML 자료를 PDF 문서로 변환하기 위해 IronPDF 사용합니다.
output.pdf라는 파일에는 생성된 PDF 자료가 포함되어 있습니다.

결론
마지막으로, OpenTelemetry Python과 IronPDF 의 연동을 통해 Python 애플리케이션에서 관찰 가능성과 문서 생성 기능을 결합할 수 있습니다. 개발자는 분산 추적 및 메트릭 수집을 동적 PDF 생성과 통합함으로써 시스템 성능에 대한 더 나은 통찰력을 얻으면서 전문가 수준의 문서를 손쉽게 즉시 생성할 수 있습니다.
OpenTelemetry Python과 IronPDF 의 협력은 개발자들이 안정적이고 확장 가능하며 성능이 뛰어난 애플리케이션을 구축할 수 있도록 지원하는 강력한 도구로 부상하고 있으며, 이는 기업들이 소프트웨어 솔루션에서 효율성과 우수성을 추구하는 데 도움이 될 것입니다.
IronPDF 에는 평생 라이선스가 포함되어 있으며, 패키지로 구매할 경우 가격이 상당히 합리적입니다. 번들은 $999에 불과하며 여러 시스템에 대해 한 번만 구매하면 됩니다. 라이선스 소지자는 연중무휴 24시간 온라인 엔지니어링 지원을 받을 수 있습니다. 요금에 대한 자세한 내용은 웹사이트를 참조하십시오. Iron Software 에서 판매하는 제품에 대한 자세한 내용을 알아보려면 이 페이지를 방문하세요.

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.
관련 기사


