text-generation-inference 从请求头中获取opentelemetry trace id,而不是创建新的trace,

rkkpypqq  于 4个月前  发布在  其他
关注(0)|答案(6)|浏览(83)

功能请求

目前,每个HTTP请求都会创建一个新的跟踪。如果可以使用来自请求的跟踪(如果可用),则使用https://opentelemetry.io/docs/specs/otel/context/api-propagators/#propagators-distribution https://www.w3.org/TR/trace-context/中定义的traceparent标头来获取跟踪将非常有用。这样,您将能够通过微服务调用跟踪请求。

动机

我想从前端、后端开始,使用opentelemetry跟踪请求。

您的贡献

我对TGI代码的理解不够深入。

dauxcl2d

dauxcl2d1#

你好@ptanov 👋
感谢打开这个问题🙌
明白了,我认为这是一个很好的动力。我可能会找些时间来实现它。但你能帮我理解一下traceparent头吗?
所以有一个请求带着一个名为traceparent的头部,然后我们在TGI中应该在span里设置这个吗?我理解正确了吗?

fcwjkofz

fcwjkofz2#

基本上,大多数框架都会自动执行这个操作,我很惊讶Axum OpenTelemetry集成没有自动执行这个操作。
具体来说,通常在开始新的跟踪之前,你会检查是否有"活动跟踪",所以无论集成在哪里开始新的跟踪/确定是否有活动跟踪,你可能都需要查看它是否了解活动跟踪。
理想情况下,应该有一些中间件层从头部解析出跟踪并立即设置"活动跟踪"。

8tntrjer

8tntrjer3#

你好,ErikKaum,
抱歉回复晚了:(
是的,正如@noyoshi所描述的那样——通常是由框架自动完成的。
头部内容格式的描述在这里:https://www.w3.org/TR/trace-context/#traceparent-header

wi3ka0sx

wi3ka0sx4#

不用担心@ptanov,这周确实很忙,所以(不幸地)我还没来得及做这个😅
感谢你的澄清@ptanov 🙌 的确有点令人惊讶!
我想我这周可能无法完成这个任务,但最有可能在下周结束前完成。

vawmfj5a

vawmfj5a5#

谢谢你!

还有一件事对你可能有用——通常如果跟踪信息不能由框架自动传播(例如在 ./router/src/server.rs 中的 .layer(OtelInResponseLayer::default()).layer(OtelAxumLayer::default())),可以手动提取并重用,如下所示:

let extractor = HeaderExtractor(headers);
    let propagator = global::get_text_map_propagator(|propagator| propagator.clone());
    let span = propagator.extract(&extractor);
    let _guard = span.make_current();

假设 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}'

yk9xbfzb

yk9xbfzb6#

谢谢你@ptanov 🚀,这已经帮了很多忙!

相关问题