arrow系列31---OpenTelemetry
作者:yunjinqi   类别:    日期:2023-10-17 19:43:30    阅读:140 次   消耗积分:0 分    


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 容器接收到跟踪时,应该会看到输出。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/364
上一篇:arrow系列30---线程管理
下一篇:arrow系列32---环境变量