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 容器收到追蹤時看到輸出。