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 为“http://localhost: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
现在,您应该能够运行程序并在 web 浏览器中查看 http://localhost:16686 上的任何跟踪。请注意,与导出跟踪的其他方法不同,不会在标准输出(stdout)/标准错误(stderr)上产生任何输出。但是,如果查看 Docker 容器日志,当 all-in-one 容器接收到跟踪时,应该会看到输出。