Правильный способ инструментирования OpenTelemetry HttpClient в веб-приложенииC#

Место общения программистов C#
Ответить
Гость
 Правильный способ инструментирования OpenTelemetry HttpClient в веб-приложении

Сообщение Гость »

У меня есть клиент веб-приложения Razor (.NET 8), и я хочу получать метрики выполнения и вызовов других API.
У меня установлены следующие пакеты nuget:
  • OpenTelemetry
  • OpenTelemetry.Exporter.Console
  • OpenTelemetry.Instrumentation.AspNetCore >
  • OpenTelemetry.Instrumentation.Http
В Program.Main настраиваю

Код: Выделить всё

TracerProvider tracer = null;

try
{
...
app.MapRazorPages();
// using ResourceBuilder.CreateDefault has no effect, nor does moving init to top
tracer = Sdk.CreateTracerProviderBuilder()
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.SetResourceBuilder(ResourceBuilder.CreateEmpty())
.AddSource("test")
.AddConsoleExporter()
.Build();

app.Run();
}
finally
{
tracer?.Dispose();
}
У меня есть еще один класс, в котором мне нужно вызвать API, для которого я хочу получить трассировку. На данный момент использую статический ActivitySource, но цель состоит в том, чтобы создать один (или несколько) для моего приложения и повторно использовать (не по одному для каждого класса)

Код: Выделить всё

class MyClass
{
private static readonly ActivitySource _source1= new ActivitySource("test");

async Task MyMethod()
{
using var activity1 = _source1.StartActivity("action");
var source2 = new ActivitySource("test");
using var activity2 = source2.StartActivity("action");
...
}
}
Я вижу
  • Код: Выделить всё

    _source1
    не имеет прослушивателя и активность 1 равна нулю
  • имеет прослушиватель, а Activity2 является допустимым объектом.
Я пытаюсь создать только один ActivitySource в соответствии с рекомендациями, но это не работает. Что я делаю неправильно или чего не хватает в моей настройке?

Подробнее здесь: https://stackoverflow.com/questions/781 ... -a-web-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»