我有一个工作人员,它每 x 秒调用一个函数
foo
。
我想跟踪这个函数的每次调用foo
,以监控每个调用的情况。
我正在使用 c#
activity
进行监控,它位于 OpenTelemetry 收集器/后端/等中...
我在 Grafana 上观察这些痕迹。
我的函数 foo 类似于:
void foo()
{
using var activity = activitySource.StartActivity("foo");
var userIDList = GetUserIDList(); // Some span are create here
foreach (var userID in userIDList)
{
someActionOnUser(userID); // lot of span are create here
}
}
最终的痕迹很重(大约10Mo),我想减小这个大小,因为后端有一个大小限制(我可以增大这个限制,但我寻找更好的解决方案......)。
我的想法是:
someActionOnUser
中创建的span)someActionOnUser
中创建的跨度)Activity Link。
但是在 C# 中,只有在创建 Activity 时才能设置 Activity Link(链接到 Activity 代码源),所以这个解决方案实际上不太可行...
我发现了这个讨论,建议在活动中添加一个功能AddLinks
,以及这个问题。所以我认为这个想法并不是很好(我想知道这是否不是一个反模式......)。 我不认为我是第一个遇到这个问题的人,但我没有找到很多关于这个问题的资源。 我怀疑我有一个糟糕的策略来处理这个问题。
人们如何处理这个问题?
https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/trace/links-creation-with-new-activities - 检查此文档,它有一些关于如何实现此目的的示例。 (注:AddLink API 将于今年晚些时候推出:https://github.com/open-telemetry/opentelemetry-dotnet/issues/5273)