請遵循下列步驟,將 Python 應用程式移轉至 Azure 監視器Application InsightsOpenTelemetry 發行版本。
警告
- OpenCensus「如何移轉至 OpenTelemetry」部落格不適用於 Azure 監視器使用者。
- Microsoft 不建議或支援 OpenTelemetry OpenCensus 填充碼。
- 下列概述 Azure 監視器客戶的唯一移轉方案。
步驟 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 Functions 的連結
為了提供提供 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 匯出工具。 如果您也想要使用其他匯出工具,您可以搭配發行版一同使用,如這個範例。
遙測處理器
OpenTelemetry 沒有 TelemetryProcessors 的概念,但您可使用 API 和類別來複寫相同的行為。
設定雲端角色名稱和雲端角色執行個體
請遵循這裡的指示,了解如何設定遙測的雲端角色名稱和雲端角色執行個體。 OpenTelemetry Azure 監視器發行版本會自動從環境變數擷取值並填入個別欄位。
使用 SpanProcessors 修改跨度
即將推出。
使用 Views 修改計量
即將推出。
效能計數器
OpenCensus Python Azure 監視器匯出工具會自動收集系統與效能相關的計量,稱為效能計數器。 這些計量會顯示在 Application Insights 執行個體的 performanceCounters 中。 在 OpenTelemetry 中,我們不再明確將這些計量傳送至 performanceCounters。 與傳入/傳出要求相關的計量可在標準計量下找到。 如果您要 OpenTelemetry 自動收集系統相關計量,您可使用 OpenTelemetry Python 社群參與的實驗系統計量檢測。 此套件是實驗性質,Microsoft 並未正式支援。
支援
若要檢閱疑難解答步驟、支援選項或提供 OpenTelemetry 意見反應,請參閱 Azure 監視器 Application Insights 的 OpenTelemetry 疑難解答、支持和意見反應。