跳至頁尾內容
PYTHON 幫助

在 Python 應用中使用 OpenTelemetry

有效的文件生成和可觀測性是現代軟體開發中開發可擴展和強韌系統的必要基礎。 開發者可以使用OpenTelemetry,一個開源的可觀測性平台,對分散系統進行儀器化、收集和分析可觀測資料。

開發者可以使用由Iron Software提供的健壯的.NET框架IronPDF來輕鬆建立、修改和輸出PDF文件。 本文將討論OpenTelemetry Python與IronPDF的整合,展示這兩種技術如何一起提升可觀測性和文件生成潛力。

開發者可以使用OpenTelemetry API和SDK套件,一個在Python中的OpenTelemetry項目實現,來存取一個用於儀器化、收集和導出分散系統的開放性遙測和資料的廣泛功能集。

OpenTelemetry Python(如何為開發者工作):圖1 - OpenTelemetry首頁

OpenTelemetry 功能

讓我們來看看OpenTelemetry在Python中的顯著特徵的儀器化:

分散式追蹤

  • OpenTelemetry for Python使得開發者可以跟蹤請求在分散系統中的路徑,實現分散式追蹤。
  • 跟蹤提供請求順序的洞察,包括服務接觸的日期和時間。
  • 開發者可以儀器化Python程式以記錄跨度,跨度是分佈式追蹤中的離散操作或部分。

指標收集

  • OpenTelemetry Python支持指標輸入MeterProvider,這會收集有關系統行為和性能的資料。
  • 開發者可以對其應用進行儀器化,來收集如延遲、吞吐量、錯誤率和資源使用等測量值。
  • 這些指標通過提供使用模式、性能趨勢和系統健康狀況的洞察,有助於理解系統行為。

上下文傳播

  • 不同上下文如跟蹤和跨度上下文的傳播變得更加容易,這是由OpenTelemetry API包確保的,它在服務邊界間傳播分散上下文。
  • 過去的上下文傳播保持資料的連續性和一致性,因為它在系統中移動並使得遙測資料可以協同和語境化。

儀器化的資料庫

  • OpenTelemetry Python簡化了現有Python應用的儀器化,通過為廣泛使用的框架、庫和協議提供儀器化套件。
  • 儀器化庫中可以找到對於Web框架(如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
pip install opentelemetry-exporter-jaeger
SHELL

接下來,使用以下命令安裝OpenTelemetry Python SDK:

pip install opentelemetry-sdk
pip install opentelemetry-sdk
SHELL

opentelemetry-api pip包提供了一個綜合的API來進行儀器化並提供自動化的儀器化,這使得儀器化應用變得更加簡單。 一種替代方案是使用匯入-匯出BatchSpanProcessor方法來確保遙測資料的高效匯出。

為了定義OpenTelemetry SDK參數,建立一個配置檔。配置檔otel_config.py作為一個範例。 確保所有的匯入如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)
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)
PYTHON

在這個配置檔中:

  • Jaeger匯出器設置為將追蹤匯出到本地主機Jaeger代理。
  • 使用Jaeger匯出器,我們構建了一個TracerProvider並將其配置為全域追蹤提供者。
  • 我們為我們的Python程式提供了服務名稱。

初始化應用中的OpenTelemetry

otel_config模塊輸入到您的Python程式中,然後在一開始用以下範例Python程式碼初始化OpenTelemetry:

from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
from opentelemetry import trace
from otel_config import tracer_provider

# Initialize OpenTelemetry
trace.get_tracer(__name__)
PYTHON

通過這樣做,可以初始化於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
from opentelemetry import trace

# Start a span
with trace.get_tracer(__name__).start_as_current_span("example_span"):
    # Your code here
    pass
PYTHON

在Jaeger UI中查看追蹤

要查看和分析記錄的追蹤,請存取Jaeger使用者介面。 要查看OpenTelemetry收集器記錄的追蹤,請在網路瀏覽器中打開Jaeger UI(通常在http://localhost:16686)並選擇您的服務名稱。

通過按照這些指示,您已經成功地在應用中建立和配置了OpenTelemetry Python。 現在,您可以使用OpenTelemetry記錄追蹤並將其匯出到Jaeger後端,從而查看Python程式的行為和性能。

開始使用IronPDF

什麼是IronPDF?

通過Iron Software的強大.NET程式庫IronPDF,開發者可以在.NET應用內建立、編輯和呈現PDF文件。 開發者可以使用IronPDF從多種來源中程式化地建立PDF文件,比如現有的PDF文件、HTML文字、URL和圖像。 讓我們仔細看看IronPDF的特點:

OpenTelemetry Python(如何為開發者工作):圖2 - IronPDF首頁

將HTML轉換為PDF

開發者可以輕鬆地將HTML內容轉換為PDF文件使用IronPDF。 通過使用HTML文字作為輸入,開發者可以生成格式豐富、圖像和樣式齊備的PDF文件。

將URL轉換為PDF

開發者可以通過使用IronPDF直接從URL生成PDF文件。 這個功能的一個出色應用是從網頁捕獲內容或從Web應用動態生成內容。

將圖片轉換為PDF

通過IronPDF,可以將PNG、JPEG和BMP格式的圖片轉換成PDF文件。 這個功能允許應用開發人員從照片中建立PDF文件,有助於進行如製作相冊或將照片嵌入PDF文件的應用。

如何安裝IronPDF

確保在您的計算機上安裝了Python後,使用pip安裝IronPDF。

pip install ironpdf

使用OpenTelemetry生成IronPDF的PDF文件

在OpenTelemetry初始化之下新增以下程式碼以使用IronPDF建立一個PDF文件:

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)
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)
PYTHON

在這段程式碼中:

  • 我們利用OpenTelemetry追蹤器開始一個新的跨度,名為pdf_generation
  • 我們在此期間使用IronPDF將HTML材料轉換為PDF文件。
  • 一個叫做output.pdf的文件中包含了生成的PDF材料。

OpenTelemetry Python(如何為開發者工作):圖3 - 由上述程式碼生成的範例輸出

結論

最後,通過OpenTelemetry Python和IronPDF的連接,在Python應用中提供了可觀測性和文件生成能力的結合。 開發者可以在更好瞭解系統性能的同時,通過整合分佈式追蹤和指標收集與動態PDF生成,快速建立專業外觀的文件。

OpenTelemetry Python和IronPDF之間的合作成為強有力的促成者,使開發者能夠建立可靠、可擴展和性能卓越的應用,因為企業在其軟體解決方案中追求效率和卓越。

IronPDF附帶一個永久授權,包購買時價格合理。 該包只需購買一次就可以在多個系統上使用,價格僅為$999,是一筆很好交易。 授權持有人可以享受24/7的線上工程幫助。請存取網站瞭解更多有關收費的資訊。 存取此頁面瞭解更多有關Iron Software出售的產品。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話