功能请求
目前,每个HTTP请求都会创建一个新的跟踪。如果可以使用来自请求的跟踪(如果可用),则使用https://opentelemetry.io/docs/specs/otel/context/api-propagators/#propagators-distribution https://www.w3.org/TR/trace-context/中定义的traceparent标头来获取跟踪将非常有用。这样,您将能够通过微服务调用跟踪请求。
动机
我想从前端、后端开始,使用opentelemetry跟踪请求。
您的贡献
我对TGI代码的理解不够深入。
6条答案
按热度按时间dauxcl2d1#
你好@ptanov 👋
感谢打开这个问题🙌
明白了,我认为这是一个很好的动力。我可能会找些时间来实现它。但你能帮我理解一下traceparent头吗?
所以有一个请求带着一个名为
traceparent
的头部,然后我们在TGI中应该在span里设置这个吗?我理解正确了吗?fcwjkofz2#
基本上,大多数框架都会自动执行这个操作,我很惊讶Axum OpenTelemetry集成没有自动执行这个操作。
具体来说,通常在开始新的跟踪之前,你会检查是否有"活动跟踪",所以无论集成在哪里开始新的跟踪/确定是否有活动跟踪,你可能都需要查看它是否了解活动跟踪。
理想情况下,应该有一些中间件层从头部解析出跟踪并立即设置"活动跟踪"。
8tntrjer3#
你好,ErikKaum,
抱歉回复晚了:(
是的,正如@noyoshi所描述的那样——通常是由框架自动完成的。
头部内容格式的描述在这里:https://www.w3.org/TR/trace-context/#traceparent-header
wi3ka0sx4#
不用担心@ptanov,这周确实很忙,所以(不幸地)我还没来得及做这个😅
感谢你的澄清@ptanov 🙌 的确有点令人惊讶!
我想我这周可能无法完成这个任务,但最有可能在下周结束前完成。
vawmfj5a5#
谢谢你!
还有一件事对你可能有用——通常如果跟踪信息不能由框架自动传播(例如在
./router/src/server.rs
中的.layer(OtelInResponseLayer::default())
和.layer(OtelAxumLayer::default())
),可以手动提取并重用,如下所示:假设
global::set_text_map_propagator(TraceContextPropagator::new());
在./router/src/logging.rs
中设置了,但我无法使其正常工作:(对不起,我不熟悉 TGI 代码库,也不熟悉 Rust。我通过向
curl
提供tracepoint
头文件来测试它,例如curl -v tgihostport/v1/chat/completions -H 'traceparent: 00-aa1274dfd3752a0f67b3bc3f21c71aaa-c8480007d4f1cbbb-01' -H 'Content-Type: application/json' -d '{SOMEQUESTION}'
yk9xbfzb6#
谢谢你@ptanov 🚀,这已经帮了很多忙!