跳過到頁腳內容
PYTHON 說明

Python 應用程式中的 OpenTelemetry

在現代軟體開發中,有效的文件生成和可觀測性是開發可擴展和彈性系統的重要基礎。 開發者可以使用開源可觀測性平台 OpenTelemetry 對分散式系統中的可觀測資料進行檢測、收集和分析。

開發人員可以使用強大的 .NET 框架 IronPDF 輕鬆建立、修改和輸出 PDF 文件。 本文將探討 OpenTelemetry Python 與 IronPDF 的集成,展示這兩種技術如何協同工作以提高可觀測性和文件生成潛力。

開發者可以使用 OpenTelemetry API 和 SDK 套件(OpenTelemetry 專案在 Python 中的實作)存取廣泛的功能集,用於檢測、收集和匯出分散式系統的開放遙測資料。

OpenTelemetry Python(開發者使用指南):圖 1 - OpenTelemetry 首頁

OpenTelemetry 功能

讓我們來研究一下OpenTelemetry對 Python 的主要功能:

分散式追蹤

  • OpenTelemetry for Python 實現了分散式追踪,使開發人員能夠追蹤請求在分散式系統中的路徑。
  • 追蹤資訊可以深入了解請求的順序,包括服務聯繫的日期和時間。
  • 開發人員可以對 Python 程式進行插樁,以記錄 span,span 是離散的操作或分散式追蹤的一部分。

指標收集

  • 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可作為範例。 請確保所有導入resources (例如 importResourcetrace`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 exporter,我們建立一個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 收集器記錄的追蹤信息,請在您的 Web 瀏覽器中開啟 Jaeger UI(通常是http://localhost:16686 ),然後選擇您的服務名稱。

按照這些說明,您已成功在應用程式中建立和設定了 OpenTelemetry Python。 現在,您可以使用 OpenTelemetry 記錄追蹤並將其匯出到 Jaeger 後端,從而查看您的 Python 程式的行為和效能。

開始使用 IronPdf

什麼是 IronPDF?

借助 Iron Software 出品的強大的 .NET 庫 IronPDF,開發人員可以在 .NET 應用程式中建立、編輯和呈現 PDF 文件。 開發人員可以使用 IronPDF 從各種來源(例如預先存在的 PDF 文件、HTML 文字、URL 和圖像)以程式設計方式建立 PDF 文件。 讓我們仔細看看IronPDF的功能:

OpenTelemetry Python(開發者使用指南):圖 2 - IronPDF 首頁

將 HTML 轉換為 PDF

開發者可以使用 IronPDF 輕鬆地將 HTML 內容轉換為 PDF 檔案。 透過使用 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的新 span。
  • 在此期間,我們使用 IronPDF 將 HTML 內容轉換為 PDF 文件。
  • 一個名為output.pdf檔案包含產生的 PDF 內容。

OpenTelemetry Python(開發者使用指南):圖 3 - 上述程式碼產生的範例輸出

結論

最後,OpenTelemetry Python 和 IronPDF 的連接提供了 Python 應用程式中的可觀測性和文件生成能力的結合。 透過將分散式追蹤和指標收集與動態 PDF 生成相結合,開發人員可以輕鬆地即時建立專業外觀的文檔,同時更了解系統效能。

OpenTelemetry Python 和 IronPDF 之間的合作展現出強大的推動力,使開發人員能夠創建可靠、可擴展且高效能的應用程序,從而幫助企業在軟體解決方案中追求效率和卓越性。

IronPDF 包含終身許可證,捆綁購買價格相當合理。 套裝價格非常划算,只需$799 ,只需購買一次即可在多個系統上使用。 持證用戶可享全天候24小時線上工程技術支援。請瀏覽網站以了解更多收費詳情。 請造訪此頁面,以了解更多關於Iron Software銷售的產品資訊。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。