共用方式為


從 OpenCensus Python SDK 和適用於 Python 的 Azure 監視器 OpenCensus 匯出工具移轉至 Azure 監視器 OpenTelemetry Python 發行版本

注意

OpenCensus Python SDK 已淘汰,但 Microsoft 將持續提供支援,直到 2024 年 9 月 30 日淘汰為止。 我們現在建議使用以 OpenTelemetry 為基礎的 Python 供應項目,並提供移轉指引

請遵循下列步驟,將 Python 應用程式移轉至 Azure 監視器Application InsightsOpenTelemetry 發行版本

警告

步驟 1:解除安裝 OpenCensus 程式庫

解除安裝與 OpenCensus 相關的所有程式庫,包含 opencensus-* 開頭的所有 Pypi 套件。

pip freeze | grep opencensus | xargs pip uninstall -y

步驟 2:從程式碼移除 OpenCensus

從程式碼移除所有 OpenCensus SDK 和 Azure 監視器匯出工具的執行個體。

檢查檢查 opencensus 開頭的匯出陳述式以尋找必須移除的所有 OpenCensus API/SDK 整合、匯出工具和執行個體。

以下是必須移除的匯入陳述式範例。

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

from opencensus.ext.azure.log_exporter import AzureLogHandler

步驟 3:熟悉 OpenTelemetry Python APIs/SDK

下列文件提供 OpenTelemetry Python APIs/SDK 的必要條件知識。

注意

OpenTelemetry Python 和 OpenCensus Python 有不同的 API 介面、自動收集功能和上線指示。

步驟 4:設定 Azure 監視器 OpenTelemetry 發行版本

請遵循開始使用頁面以上線至 Azure 監視器 OpenTelemetry 發行版本。

變更和限制

當從 OpenCensus 移轉至 OpenTelemetry 時,可能會遇到下列變更和限制。

Python < 3.7 支援

OpenTelemetry 以 Python 為基礎的監視解決方案僅支援 Python 3.7 和更新版本,但不包含 OpenCensus 先前支援的 Python 2.7、 3.4、3.5 和 3.6 版。 我們建議使用舊版 Python 的使用者進行升級,因為在撰寫此文件時,這些版本已達到生命週期結束。 堅持不升級的使用者仍可使用 OpenTelemetry 解決方案,但可能會發生不支援的非預期或中斷行為。 在任何情況下,最終支援版本的 opencensus-ext-azure 一律存在並仍適用於這些版本,但該專案沒有新的版本。

設定

OpenCensus Python 提供一些與收集和匯出遙測相關的設定選項。 您可以使用 OpenTelemetry Python API 和 SDK 來達成相同的設定。 OpenTelemetry Azure 監視器 Python 發行版本是一站式服務,適用於 Python 應用程式最常見監視需求。 由於發行版本封裝 OpenTelemetry API/SDK,因此發行版本目前可能不支援某些較不常見使用案例的設定。 您可改為選擇上線至 Azure 監視器 OpenTelemetry 匯出工具,其中包含 OpenTelemetry API/SDK,應能夠符合監視需求。 其中一些設定包含:

  • 自訂傳播器
  • 自訂取樣器
  • 新增額外的跨度/記錄處理器/計量讀取器

納入 Azure 函式

為了提供提供 Python 應用程式的分散式追蹤功能以在 Azure 函式中呼叫其他 Python 應用程式,已提供 opencensus-extension-azure-functions 套件以允許連線的分散式圖表。

目前 Azure 監視器的 OpenTelemetry 解決方案目前不支援此案例。 作為因應措施,您可手動在 Azure 函式應用程式中傳播追蹤內容,如下列範例所示。

from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
  TraceContextTextMapPropagator

# Context parameter is provided for the body of the function
def main(req, context):
  functions_current_context = {
    "traceparent": context.trace_context.Traceparent,
    "tracestate": context.trace_context.Tracestate
  }
  parent_context = TraceContextTextMapPropagator().extract(
      carrier=functions_current_context
  )
  token = attach(parent_context)

  ...
  # Function logic
  ...
  detach(token)

延伸模組和匯出工具

OpenCensus SDK 可讓您個別透過 OpenCensus 整合和匯出工具以收及和匯出遙測。 在 OpenTelemetry 中,整合現在指的是檢測,而匯出工具詞彙保持相同。 OpenTelemetry Python 檢測和匯出工具是 OpenCensus 中提供的超集,因此在程式庫涵蓋範圍和功能的方面,OpenTelemetry 程式庫是直接的升級。 針對 Azure 監視器 OpenTelemetry 發行版本,其中隨附一熱門現成可用的 OpenTelemetry Python 檢測,不需要額外的程式碼。 Microsoft 完全支援這些檢測設備。

針對其他此清單中未包含的 OpenTelemetry Python 檢測設備,使用者仍可手動使用這些檢測進行檢測。 然而,請務必注意,在這些情況下,無法保證或支援穩定性和行為。 因此,請自行判斷是否要使用。

如果您想要向我們建議社群檢測程式庫以包含在發行版本,請在意見反應社群中張貼或贊同想法。 針對輸出工具,Azure 監視器 OpenTelemetry 發行版本隨附於 Azure 監視器 OpenTelemetry 匯出工具。 如果您也想要使用其他匯出工具,您可以與發行版本一起使用,如此範例

TelemetryProcessors

OpenCensus Python 遙測處理器是強大的機制,可讓使用者在傳送至匯出工具前修改其遙測。 OpenTelemetry 沒有 TelemetryProcessors 的概念,但您可使用 API 和類別來複寫相同的行為。

設定雲端角色名稱和雲端角色執行個體

請遵循這裡的指示,了解如何設定遙測的雲端角色名稱和雲端角色執行個體。 OpenTelemetry Azure 監視器發行版本會自動從環境變數擷取值並填入個別欄位。

使用 SpanProcessors 修改跨度

即將推出。

使用 Views 修改計量

即將推出。

效能計數器

OpenCensus Python Azure 監視器匯出工具會自動收集系統與效能相關的計量,稱為效能計數器。 這些計量會顯示在 Application Insights 執行個體的 performanceCounters 中。 在 OpenTelemetry 中,我們不再明確將這些計量傳送至 performanceCounters。 與傳入/傳出要求相關的計量可在標準計量下找到。 如果您要 OpenTelemetry 自動收集系統相關計量,您可使用 OpenTelemetry Python 社群參與的實驗系統計量檢測。 此套件是實驗性質,Microsoft 並未正式支援。

疑難排解

步驟 1:啟用診斷記錄

Azure 監視器匯出工具使用 EventSource 進行其內部記錄。 透過選擇名稱為 OpenTelemetry-AzureMonitor-Exporter 的來源,任何 EventListener 都可以使用匯出工具記錄。 如需疑難排解步驟,請參閱 GitHub 上的 OpenTelemetry 疑難排解

步驟 2:測試應用程式主機與內嵌服務之間的連線

Application Insights SDK 和代理程式會傳送遙測,以內嵌為 REST 呼叫內嵌到我們內嵌的端點。 若要測試從 Web 伺服器或應用程式主機電腦到內嵌服務端點的連線,請使用來自 PowerShell 的 curl 命令或原始 REST 要求。 如需詳細資訊,請參閱針對 Azure 監視器 Application Insights 中遺失的應用程式遙測進行疑難排解

已知問題

下列項目是 Azure 監視器 OpenTelemetry 匯出工具的已知問題:

  • 相依性遙測資料中缺少操作名稱。 缺少操作名稱會導致失敗,並對性能索引標籤體驗產生負面影響。

  • 要求和相依性遙測資料中缺少裝置型號。 缺少裝置型號會對裝置世代分析產生不利影響。

支援

選取您選擇的語言索引標籤,以探索支援選項。

OpenTelemetry 意見反應

若要提供意見反應: