将 Quickwit 集成到 Jaeger
在本教程中,我们将展示 Quickwit 如何“吃自己的狗粮”:我们将 Quickwit 的追踪数据发送到 Jaeger 并进行分析,这将生成新的追踪数据以供分析 :)
启动 Quickwit
首先,启动一个启用了 OTLP 服务的 Quickwit 实例:
QW_ENABLE_OPENTELEMETRY_OTLP_EXPORTER=true \
OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:7281 \
./quickwit run
我们还设置了 QW_ENABLE_OPENTELEMETRY_OTLP_EXPORTER
和 OTEL_EXPORTER_OTLP_ENDPOINT
环境变量,以便 Quickwit 将其自身的追踪数据发送给自己。
启动 Jaeger UI
让我们使用 Docker 启动一个 Jaeger UI 实例。在这里我们需要告知 Jaeger 使用 Quickwit 作为其后端。
由于一些与容器网络相关的特殊性,我们需要在 MacOS 和 Windows 上采用一种方法,在 Linux 上采用另一种方法。
MacOS 与 Windows
我们可以依赖 host.docker.internal
来获取指向我们 Quickwit 服务器的 Docker 桥接 IP 地址。
docker run --rm --name jaeger-qw \
-e SPAN_STORAGE_TYPE=grpc-plugin \
-e GRPC_STORAGE_SERVER=host.docker.internal:7281 \
-p 16686:16686 \
jaegertracing/jaeger-query:latest
Linux
默认情况下,Quickwit 监听 127.0.0.1
,并且不会响应指向 Docker 桥接 (172.17.0.1
) 的请求。解决此问题有多种方法。最简单的方法可能是使用主机网络模式。
docker run --rm --name jaeger-qw --network=host \
-e SPAN_STORAGE_TYPE=grpc-plugin \
-e GRPC_STORAGE_SERVER=127.0.0.1:7281 \
-p 16686:16686 \
jaegertracing/jaeger-query:latest
在 Jaeger UI 中搜索追踪数据
由于 Quickwit 会索引其自身的追踪数据,因此在大约 5 秒后(这是 Quickwit 完成首次提交所需的时间),您应该能够在 Jaeger UI 中看到这些数据。
打开位于 http://localhost:16686 的 Jaeger UI 并搜索追踪数据!通过执行搜索查询,您将看到 Quickwit 自身的追踪数据:
find_traces
是在 Jaeger UI 中搜索追踪数据时调用的端点,随后它会调用find_trace_ids
。find_traces_ids
对跨度执行聚合查询以获取唯一的追踪 ID。root_search
是 Quickwit 的搜索入口点。它会在每个分片(索引的一部分)上并行地或分布式地调用搜索,如果只有一个节点,则仅在本地调用。leaf_search
是每个节点上的搜索入口点。它会在每个分片上调用leaf_search_single_split
。leaf_search_single_split
是分片上的搜索入口点。它会依次调用warmup
和tantivy_search
。warmup
是搜索的预热阶段。它预取执行搜索查询所需的数据。tantivy_search
是搜索的执行阶段。它使用 Tantivy 高速执行搜索查询。
下一步
现在您可以进入下一步:为您的应用程序添加监控并将追踪数据发送到 Quickwit。您可以这样做:
- 在 Python 中。
- 在任何其他 OpenTelemetry 支持的语言中。