/// <summary> /// Initializes a new instance of the <see cref="ProfilerHttpProcessing"/> class. /// </summary> public ProfilerHttpProcessing(TelemetryConfiguration configuration, string agentVersion, ObjectInstanceBasedOperationHolder <DependencyTelemetry> telemetryTupleHolder, bool setCorrelationHeaders, ICollection <string> correlationDomainExclusionList, bool injectLegacyHeaders, bool injectW3CHeaders) : base(configuration, SdkVersionUtils.GetSdkVersion("rdd" + RddSource.Profiler + ":"), agentVersion, setCorrelationHeaders, correlationDomainExclusionList, injectLegacyHeaders, injectW3CHeaders) { if (telemetryTupleHolder == null) { throw new ArgumentNullException(nameof(telemetryTupleHolder)); } this.TelemetryTable = telemetryTupleHolder; }
internal DesktopDiagnosticSourceHttpProcessing(TelemetryConfiguration configuration, CacheBasedOperationHolder telemetryTupleHolder, bool setCorrelationHeaders, ICollection <string> correlationDomainExclusionList, bool injectLegacyHeaders, bool enableW3CHeaders) : base(configuration, SdkVersionUtils.GetSdkVersion("rdd" + RddSource.DiagnosticSourceDesktop + ":"), null, setCorrelationHeaders, correlationDomainExclusionList, injectLegacyHeaders, enableW3CHeaders) { if (telemetryTupleHolder == null) { throw new ArgumentNullException("telemetryTupleHolder"); } this.telemetryTable = telemetryTupleHolder; }
/// <summary> /// Initializes a new instance of the <see cref="ProfilerHttpProcessing"/> class. /// </summary> public ProfilerHttpProcessing(TelemetryConfiguration configuration, string agentVersion, ObjectInstanceBasedOperationHolder telemetryTupleHolder, bool setCorrelationHeaders, ICollection <string> correlationDomainExclusionList, string appIdEndpoint) : base(configuration, SdkVersionUtils.GetSdkVersion("rdd" + RddSource.Profiler + ":"), agentVersion, setCorrelationHeaders, correlationDomainExclusionList, appIdEndpoint) { if (telemetryTupleHolder == null) { throw new ArgumentNullException("telemetryTupleHolder"); } this.TelemetryTable = telemetryTupleHolder; }
internal FrameworkHttpProcessing(TelemetryConfiguration configuration, CacheBasedOperationHolder telemetryTupleHolder, bool setCorrelationHeaders, ICollection <string> correlationDomainExclusionList, bool injectLegacyHeaders) : base(configuration, SdkVersionUtils.GetSdkVersion("rdd" + RddSource.Framework + ":"), null, setCorrelationHeaders, correlationDomainExclusionList, injectLegacyHeaders, false) { if (telemetryTupleHolder == null) { throw new ArgumentNullException("telemetryTupleHolder"); } this.applicationInsightsUrlFilter = new ApplicationInsightsUrlFilter(configuration); this.TelemetryTable = telemetryTupleHolder; }
public HttpCoreDiagnosticSourceListener(TelemetryConfiguration configuration, bool setComponentCorrelationHttpHeaders, IEnumerable <string> correlationDomainExclusionList) { this.client = new TelemetryClient(configuration); this.client.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion("rdd" + RddSource.DiagnosticSourceCore + ":"); var httpClientVersion = typeof(HttpClient).GetTypeInfo().Assembly.GetName().Version; this.isNetCore20HttpClient = httpClientVersion.CompareTo(new Version(4, 2)) >= 0; this.configuration = configuration; this.applicationInsightsUrlFilter = new ApplicationInsightsUrlFilter(configuration); this.setComponentCorrelationHttpHeaders = setComponentCorrelationHttpHeaders; this.correlationDomainExclusionList = correlationDomainExclusionList ?? Enumerable.Empty <string>(); this.subscriber = new HttpCoreDiagnosticSourceSubscriber(this, this.applicationInsightsUrlFilter, this.isNetCore20HttpClient); }
/// <summary> /// Initializes a new instance of the <see cref="FrameworkSqlProcessing"/> class. /// </summary> internal FrameworkSqlProcessing(TelemetryConfiguration configuration, CacheBasedOperationHolder telemetryTupleHolder) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } this.TelemetryTable = telemetryTupleHolder ?? throw new ArgumentNullException(nameof(telemetryTupleHolder)); this.telemetryClient = new TelemetryClient(configuration); // Since dependencySource is no longer set, sdk version is prepended with information which can identify whether RDD was collected by profiler/framework // For directly using TrackDependency(), version will be simply what is set by core string prefix = "rdd" + RddSource.Framework + ":"; this.telemetryClient.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion(prefix); }
public HttpCoreDiagnosticSourceListener( TelemetryConfiguration configuration, string effectiveProfileQueryEndpoint, bool setComponentCorrelationHttpHeaders, IEnumerable <string> correlationDomainExclusionList, ICorrelationIdLookupHelper correlationIdLookupHelper) { this.client = new TelemetryClient(configuration); this.client.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion("rdd" + RddSource.DiagnosticSourceCore + ":"); this.configuration = configuration; this.applicationInsightsUrlFilter = new ApplicationInsightsUrlFilter(configuration); this.setComponentCorrelationHttpHeaders = setComponentCorrelationHttpHeaders; this.correlationIdLookupHelper = correlationIdLookupHelper ?? new CorrelationIdLookupHelper(effectiveProfileQueryEndpoint); this.correlationDomainExclusionList = correlationDomainExclusionList ?? Enumerable.Empty <string>(); this.subscriber = new HttpCoreDiagnosticSourceSubscriber(this, this.applicationInsightsUrlFilter); }
/// <summary> /// On end callback from Framework event source. /// </summary> /// <param name="id">The id.</param> /// <param name="success">The success to indicate if the dependency call completed successfully or not.</param> /// <param name="synchronous">The synchronous flag to indicate if the dependency call was synchronous or not.</param> /// <param name="statusCode">The HTTP status code of the response.</param> public void OnEndHttpCallback(long id, bool?success, bool synchronous, int?statusCode) { DependencyCollectorEventSource.Log.EndCallbackCalled(id.ToString(CultureInfo.InvariantCulture)); var telemetryTuple = this.TelemetryTable.Get(id); if (telemetryTuple == null) { DependencyCollectorEventSource.Log.EndCallbackWithNoBegin(id.ToString(CultureInfo.InvariantCulture)); return; } if (!telemetryTuple.Item2) { this.TelemetryTable.Remove(id); DependencyTelemetry telemetry = telemetryTuple.Item1; // If this telemetry was processed via the DiagnosticSource path, we should record that fact in the // SdkVersion field if (this.HasTouchedByDiagnosticSource(telemetry)) { telemetry.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion("rdd" + RddSource.FrameworkAndDiagnostic + ":"); } if (statusCode.HasValue) { // We calculate success on the base of http code and do not use the 'success' method argument // because framework returns true all the time if you use HttpClient to create a request // statusCode == -1 if there is no Response telemetry.Success = (statusCode > 0) && (statusCode < 400); telemetry.ResultCode = statusCode.Value > 0 ? statusCode.Value.ToString(CultureInfo.InvariantCulture) : string.Empty; ClientServerDependencyTracker.EndTracking(this.telemetryClient, telemetry); } else { // This case is for 4.5.2 // We never collected statusCode or success before 2.1.0-beta4 // We also had duplicates if runtime is also 4.5.2 (4.6 runtime has no such problem) // So starting with 2.1.0-beta4 we are cutting support for HTTP dependencies in .NET 4.5.2. } } }
public TelemetryDiagnosticSourceListener(TelemetryConfiguration configuration, ICollection <string> includeDiagnosticSourceActivities) : base(configuration) { this.Client.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion("rdd" + RddSource.DiagnosticSourceListener + ":"); this.PrepareInclusionLists(includeDiagnosticSourceActivities); }
/// <summary> /// Initializes a new instance of the <see cref="ProfilerSqlProcessing"/> class. /// </summary> internal ProfilerSqlProcessing(TelemetryConfiguration configuration, string agentVersion, ObjectInstanceBasedOperationHolder telemetryTupleHolder) { if (configuration == null) { throw new ArgumentNullException("configuration"); } if (telemetryTupleHolder == null) { throw new ArgumentNullException("telemetryHolder"); } this.TelemetryTable = telemetryTupleHolder; this.telemetryClient = new TelemetryClient(configuration); // Since dependencySource is no longer set, sdk version is prepended with information which can identify whether RDD was collected by profiler/framework // For directly using TrackDependency(), version will be simply what is set by core this.telemetryClient.Context.GetInternalContext().SdkVersion = string.Format(CultureInfo.InvariantCulture, "rdd{0}: {1}", RddSource.Profiler, SdkVersionUtils.GetAssemblyVersion()); if (!string.IsNullOrEmpty(agentVersion)) { this.telemetryClient.Context.GetInternalContext().AgentVersion = agentVersion; } }
internal FrameworkHttpProcessing(TelemetryConfiguration configuration, CacheBasedOperationHolder telemetryTupleHolder) { if (configuration == null) { throw new ArgumentNullException("configuration"); } if (telemetryTupleHolder == null) { throw new ArgumentNullException("telemetryTupleHolder"); } this.applicationInsightsUrlFilter = new ApplicationInsightsUrlFilter(configuration); this.TelemetryTable = telemetryTupleHolder; this.telemetryClient = new TelemetryClient(configuration); // Since dependencySource is no longer set, sdk version is prepended with information which can identify whether RDD was collected by profiler/framework // For directly using TrackDependency(), version will be simply what is set by core this.telemetryClient.Context.GetInternalContext().SdkVersion = string.Format(CultureInfo.InvariantCulture, "rdd{0}: {1}", RddSource.Framework, SdkVersionUtils.GetAssemblyVersion()); }