OpenTelemetry#

Arrow C++ 的部分已使用 OpenTelemetry C++ SDK 進行檢測,這使其可以產生詳細的追蹤資訊,並可在其他工具中進行分析。

建立啟用 OpenTelemetry 追蹤功能的建置#

OpenTelemetry 追蹤預設為關閉,因此您必須先建立啟用追蹤功能的 Arrow C++ 自訂建置。有關建立自訂建置的一般說明,請參閱 建置 Arrow C++

若要啟用追蹤,請在產生建置時指定 ARROW_WITH_OPENTELEMETRY=ON。您可能也希望指定 CMAKE_BUILD_TYPE=RelWithDebInfo,以便在保留偵錯資訊的同時獲得具代表性的時間量測。

匯出追蹤資訊#

預設情況下,在指定追蹤後端之前,不會匯出任何追蹤資訊。追蹤後端的選擇由 ARROW_TRACING_BACKEND 環境變數控制。可能的值為

  • ostream:將文字記錄訊息發送到 stdout

  • otlp_http:將 OTLP JSON 編碼的追蹤發送到 HTTP 伺服器(預設情況下,端點 URL 為“https://127.0.0.1:4318/v1/traces”)

  • arrow_otlp_stdout:將 JSON 追蹤發送到 stdout

  • arrow_otlp_stderr:將 JSON 追蹤發送到 stderr

例如,若要啟用將 JSON 追蹤匯出到 stdout,請設定

export ARROW_TRACING_BACKEND=arrow_otlp_stdout

此時,執行您已連結到 Arrow C++ 自訂建置的程式,應在 stdout 上產生 JSON 追蹤。

使用 Jaeger UI 可視化追蹤#

分析匯出到 stdout/stderr 的追蹤資訊可能需要編寫自訂處理腳本。作為此過程的替代方案(甚至是補充),“all-in-one” Jaeger Docker 映像檔是一種相對簡單的可視化追蹤資料的方式,適用於本機開發和測試。

注意:這假設您已安裝 Docker

首先,將您的追蹤後端變更為 otlp_http

export ARROW_TRACING_BACKEND=otlp_http

然後啟動 Jaeger all-in-one 容器

docker run \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  jaegertracing/all-in-one:1.35

現在您應該可以執行您的程式,並在網頁瀏覽器中 https://127.0.0.1:16686 查看任何追蹤。請注意,與其他匯出追蹤的方法不同,不會輸出到 stdout/stderr。但是,如果您追蹤 Docker 容器日誌,您應該會在 all-in-one 容器收到追蹤時看到輸出。