Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="HttpWebRequestInstrumentation"/> class.
        /// </summary>
        /// <param name="tracer">Tracer to record traced with.</param>
        /// <param name="options">Configuration options for HttpWebRequest instrumentation.</param>
        public HttpWebRequestInstrumentation(Tracer tracer, HttpClientInstrumentationOptions options)
        {
#if NET461
            GC.KeepAlive(HttpWebRequestDiagnosticSource.Instance);

            this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new HttpWebRequestDiagnosticListener(tracer, options), options.EventFilter);
            this.diagnosticSourceSubscriber.Subscribe();
#endif
        }
        internal bool EventFilter(HttpWebRequest request)
        {
            Uri requestUri;

            if (request.Method == "POST" &&
                (requestUri = request.RequestUri) != null &&
                HttpClientInstrumentationOptions.IsInternalUrl(requestUri))
            {
                return(false);
            }

            return(this.FilterFunc?.Invoke(request) ?? true);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DependenciesInstrumentation"/> class.
        /// </summary>
        /// <param name="tracerFactory">Tracer factory to get a tracer from.</param>
        /// <param name="httpOptions">Http configuration options.</param>
        /// <param name="sqlOptions">Sql configuration options.</param>
        public DependenciesInstrumentation(TracerFactoryBase tracerFactory, HttpClientInstrumentationOptions httpOptions = null, SqlClientInstrumentationOptions sqlOptions = null)
        {
            if (tracerFactory == null)
            {
                throw new ArgumentNullException(nameof(tracerFactory));
            }

            var assemblyVersion = typeof(DependenciesInstrumentation).Assembly.GetName().Version;

            var httpClientListener            = new HttpClientInstrumentation(tracerFactory.GetTracer(nameof(HttpClientInstrumentation), "semver:" + assemblyVersion), httpOptions ?? new HttpClientInstrumentationOptions());
            var httpWebRequestInstrumentation = new HttpWebRequestInstrumentation(tracerFactory.GetTracer(nameof(HttpWebRequestInstrumentation), "semver:" + assemblyVersion), httpOptions ?? new HttpClientInstrumentationOptions());
            var azureClientsListener          = new AzureClientsInstrumentation(tracerFactory.GetTracer(nameof(AzureClientsInstrumentation), "semver:" + assemblyVersion));
            var azurePipelineListener         = new AzurePipelineInstrumentation(tracerFactory.GetTracer(nameof(AzurePipelineInstrumentation), "semver:" + assemblyVersion));
            var sqlClientListener             = new SqlClientInstrumentation(tracerFactory.GetTracer(nameof(AzurePipelineInstrumentation), "semver:" + assemblyVersion), sqlOptions ?? new SqlClientInstrumentationOptions());

            this.instrumentations.Add(httpClientListener);
            this.instrumentations.Add(httpWebRequestInstrumentation);
            this.instrumentations.Add(azureClientsListener);
            this.instrumentations.Add(azurePipelineListener);
            this.instrumentations.Add(sqlClientListener);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpClientInstrumentation"/> class.
 /// </summary>
 /// <param name="activitySource">ActivitySource adapter instance.</param>
 /// <param name="options">Configuration options for dependencies instrumentation.</param>
 public HttpClientInstrumentation(ActivitySourceAdapter activitySource, HttpClientInstrumentationOptions options)
 {
     this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new HttpHandlerDiagnosticListener(options, activitySource), options.EventFilter);
     this.diagnosticSourceSubscriber.Subscribe();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpClientInstrumentation"/> class.
 /// </summary>
 /// <param name="tracer">Tracer to record traced with.</param>
 /// <param name="options">Configuration options for dependencies instrumentation.</param>
 public HttpClientInstrumentation(Tracer tracer, HttpClientInstrumentationOptions options)
 {
     this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new HttpHandlerDiagnosticListener(tracer, options), options.EventFilter);
     this.diagnosticSourceSubscriber.Subscribe();
 }