У меня есть работник, который вызывает функцию foo каждые x секунд.
Я хотел бы отслеживать каждый вызов этой функции foo, чтобы отслеживать, как обстоят дела при каждом вызове.
Я использую C# activity для мониторинга, и он входит в сборщик OpenTelemetry/бэкэнд/и т.д.
Я смотрю эти трассировки на Графане.
Моя функция 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)someActionOnUser)В C# ссылка Span — это Activity Link.
Но в C# вы можете установить Activity Link только при создании действия (ссылка на источник кода действия), поэтому такое решение на самом деле невозможно...
Я нашел это обсуждение, с предложением добавить функцию AddLinks в активность, и с этим проблема.
Поэтому я полагаю, что эта идея не очень хороша (интересно, не является ли это антишаблоном...). Я не думаю, что я первый, кто столкнулся с этой проблемой, но я не нашел много ресурсов по этому поводу. Я подозреваю, что у меня плохая стратегия, чтобы справиться с этим.
Как люди справляются с этой проблемой?





https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/trace/links-creation-with-new-activities - Проверьте этот документ, там есть несколько примеров того, как этого добиться. . (Примечание: API AddLink появится позже в этом году: https://github.com/open-telemetry/opentelemetry-dotnet/issues/5273)
Я проверяю это, но он устанавливает ссылку только от детей к родителю (а не от родителей к детям).... Спасибо за ссылку на проблему!
На самом деле это скорее вопрос мнения, вариантов много. прежде чем он будет закрыт... позвольте мне сказать, что вам следует подумать о том, как вы хотите это отладить, какие запросы вы выполняете к трассировкам или отдельным диапазонам или что вы хотите увидеть, чтобы разобраться в сути проблем. Используйте это, чтобы направлять вас. Кроме того, вероятно, в .NET 9 будет AddLinks, он был недавно объединен.