/// <summary> /// Enables instrumentation for Azure clients. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddAzureClientsDependencyInstrumentation( this OpenTelemetryBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.AddActivitySource(AzureSdkDiagnosticListener.ActivitySourceName); builder.AddInstrumentation(() => new AzureClientsInstrumentation()); return(builder); }
/// <summary> /// Enables the outgoing requests automatic data collection for .NET Framework HttpWebRequest activity source. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddHttpWebRequestDependencyInstrumentation(this OpenTelemetryBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } GC.KeepAlive(HttpWebRequestActivitySource.Instance); builder.AddActivitySource(HttpWebRequestActivitySource.ActivitySourceName); return(builder); }
/// <summary> /// Enables the outgoing requests automatic data collection for SqlClient. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <param name="configureSqlClientInstrumentationOptions">SqlClient configuration options.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddSqlClientDependencyInstrumentation( this OpenTelemetryBuilder builder, Action <SqlClientInstrumentationOptions> configureSqlClientInstrumentationOptions = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var sqlOptions = new SqlClientInstrumentationOptions(); configureSqlClientInstrumentationOptions?.Invoke(sqlOptions); builder.AddInstrumentation((activitySource) => new SqlClientInstrumentation(sqlOptions)); builder.AddActivitySource(SqlClientDiagnosticListener.ActivitySourceName); return(builder); }
/// <summary> /// Enables the outgoing requests automatic data collection for .NET Framework HttpWebRequest activity source. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <param name="configureOptions">HttpWebRequest configuration options.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddHttpWebRequestDependencyInstrumentation( this OpenTelemetryBuilder builder, Action <HttpWebRequestInstrumentationOptions> configureOptions = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } HttpWebRequestInstrumentationOptions options = new HttpWebRequestInstrumentationOptions(); configureOptions?.Invoke(options); HttpWebRequestActivitySource.Options = options; builder.AddActivitySource(HttpWebRequestActivitySource.ActivitySourceName); return(builder); }
/// <summary> /// Enables the outgoing requests automatic data collection for HttpClient. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <param name="configureHttpClientInstrumentationOptions">HttpClient configuration options.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddHttpClientDependencyInstrumentation( this OpenTelemetryBuilder builder, Action <HttpClientInstrumentationOptions> configureHttpClientInstrumentationOptions) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } // HttpClient is not instrumented with ActivitySource, hence // it'll have a default ActivitySource with name string.Empty. builder.AddActivitySource(string.Empty); var httpClientOptions = new HttpClientInstrumentationOptions(); configureHttpClientInstrumentationOptions?.Invoke(httpClientOptions); builder.AddInstrumentation(() => new HttpClientInstrumentation(httpClientOptions)); return(builder); }
/// <summary> /// Enables the incoming requests automatic data collection for Asp.Net. /// </summary> /// <param name="builder"><see cref="OpenTelemetryBuilder"/> being configured.</param> /// <param name="configureAspNetInstrumentationOptions">ASP.NET Request configuration options.</param> /// <returns>The instance of <see cref="OpenTelemetryBuilder"/> to chain the calls.</returns> public static OpenTelemetryBuilder AddRequestInstrumentation( this OpenTelemetryBuilder builder, Action <AspNetInstrumentationOptions> configureAspNetInstrumentationOptions = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } // Asp.Net is not instrumented with ActivitySource, hence // it'll have a default ActivitySource with name string.Empty. builder.AddActivitySource(string.Empty); var aspnetOptions = new AspNetInstrumentationOptions(); configureAspNetInstrumentationOptions?.Invoke(aspnetOptions); builder.AddInstrumentation(() => new AspNetInstrumentation(aspnetOptions)); return(builder); }