Должен ли OpenTelemetry AddSqlClientInstrumentation работать с функциями Azure?C#

Место общения программистов C#
Ответить
Anonymous
 Должен ли OpenTelemetry AddSqlClientInstrumentation работать с функциями Azure?

Сообщение Anonymous »

У меня есть функция Azure, работающая локально в изолированном рабочем процессе. Я намерен использовать дополнительные пакеты OpenTelemetry, а не встроенные функции во время выполнения функций, поскольку я намерен интегрировать с OpenTelemtry.
Из того, что я могу Tell .AddSqlClientInstrumentation() из OpenTelemetry.Instrumentation.SqlClient
Должен отслеживать вызовы SQL при использовании Microsoft.Data.SQLClient, которые, по-видимому, используются выходными привязками в функциях Azure.
Однако я не вижу никаких доказательств того, что он работает.
Совместим ли пакет OpenTelemetry с привязкой выходных данных SQL Функций Azure при использовании изолированных функций?
Я вижу, что инструментарий HttpClient работает нормально, поэтому в целом пакеты OpenTelemetry настроены нормально.
Я предполагаю, что расширения работают в рабочем процессе хоста, а не в рабочем процессе хоста. чем рабочий процесс приложения? Но, прочитав документацию по жизненному циклу расширения, я не могу это подтвердить наверняка, поскольку они не выделяют это напрямую.
РЕДАКТИРОВАТЬ
Некоторый дополнительный контекст чтобы проиллюстрировать, чего я хочу достичь.
p.s. Меня меньше интересует решение проблем с кодом, а больше вопрос о том, есть ли в архитектуре библиотек инструментов Sql какие-либо проблемы, работающие во время выполнения функций Azure. Но я определенно вижу преимущество листинга кода для добавления большего контекста (спасибо за отзыв).
var builder = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices(services =>
{

services.AddOpenTelemetry()
.ConfigureResource(resource => resource.AddService(serviceName))
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddSqlClientInstrumentation(options => options.SetDbStatementForText = true)
.AddHttpClientInstrumentation()
.AddConsoleExporter()
.AddAzureMonitorTraceExporter(options => options.ConnectionString = "XXX")
);

})
.ConfigureLogging(logging =>
{
logging.AddOpenTelemetry(options => options
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName))
.AddAzureMonitorLogExporter(options => options.ConnectionString = "XXX")
.AddConsoleExporter());
})
.UseDefaultServiceProvider(x => x.ValidateOnBuild = true);

var host = builder.Build();

host.Run();

У меня есть следующие ссылки на пакеты:















И следующее в файле host.json, в частности, я также играл с встроенной интеграцией appinsights, а также с OpenTelemetry, я задавался вопросом, может ли appinsights использовать его и не разрешать библиотекам OpenTelemtry получить телеметрию, но я не могу себе представить, чтобы это было спроектировано таким образом.
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
},
"enableLiveMetricsFilters": true,
"enableDependencyTracking": true,
"dependencyTrackingOptions": {
"enableSqlCommandTextInstrumentation": true
}
}
},
"logLevel": {
"default": "Information"
},
"telemetryMode": "openTelemetry"
}

РЕДАКТИРОВАТЬ 2:
Я использую привязки вывода функций Azure, т. е. украшая возвращаемый тип с помощью SqlOutput.
public class NewUserOutputBinding
{

[SqlOutput("dbo.Users", connectionStringSetting: "SqlConnectionString")]
public required User User { get; set; }

[HttpResult]
public required IActionResult HttpResponse { get; set; }

}


Подробнее здесь: https://stackoverflow.com/questions/789 ... -functions
Ответить

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

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

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

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

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