/// <summary>
        /// Start listening for elasticsearch <see cref="DiagnosticSource"/> events
        /// </summary>
        public IDisposable Subscribe(IApmAgent agentComponents)
        {
            var composite = new CompositeDisposable();

            if (!agentComponents.ConfigurationReader.Enabled)
            {
                return(composite);
            }

            var subscriber = new DiagnosticInitializer(agentComponents.Logger, new IDiagnosticListener[]
            {
                new AuditDiagnosticsListener(agentComponents),
                new RequestPipelineDiagnosticsListener(agentComponents),
                new HttpConnectionDiagnosticsListener(agentComponents),
                new SerializerDiagnosticsListener(agentComponents),
            });

            composite.Add(subscriber);

            composite.Add(DiagnosticListener
                          .AllListeners
                          .Subscribe(subscriber));

            return(composite);
        }
        /// <summary>
        /// Subscribes diagnostic source events.
        /// </summary>
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal      = new CompositeDisposable();
            var initializer = new DiagnosticInitializer(agent, new IDiagnosticListener[]
            {
                new AzureBlobStorageDiagnosticListener(agent),
                new AzureCoreDiagnosticListener(agent)
            });

            retVal.Add(initializer);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(initializer));

            if (agent is ApmAgent realAgent)
            {
                realAgent.HttpTraceConfiguration.AddTracer(new MicrosoftAzureBlobStorageTracer());

                if (!realAgent.HttpTraceConfiguration.Subscribed)
                {
                    retVal.Add(realAgent.Subscribe(new HttpDiagnosticsSubscriber(false)));
                }
            }

            return(retVal);
        }
        /// <inheritdoc />
        public IDisposable Subscribe(IApmAgent agentComponents)
        {
            var retVal = new CompositeDisposable();

            if (!agentComponents.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            if (PlatformDetection.IsDotNetCore || PlatformDetection.IsDotNet)
            {
                var initializer = new DiagnosticInitializer(agentComponents, new SqlClientDiagnosticListener(agentComponents));

                retVal.Add(initializer);

                retVal.Add(DiagnosticListener
                           .AllListeners
                           .Subscribe(initializer));
            }
            else
            {
                retVal.Add(new SqlEventListener(agentComponents));
            }

            return(retVal);
        }
Ejemplo n.º 4
0
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            //MiniProfiler.EntityFrameworkCore
            var initializer = new DiagnosticInitializer(new[] { new RelationalDiagnosticListener() });

            initializer.Start();
        }
        /// <summary>
        /// Adds Esquio profiling for MiniProfiler via DiagnosticListener.
        /// </summary>
        /// <typeparam name="T">The specific options type to chain with.</typeparam>
        /// <param name="options">The <see cref="MiniProfilerBaseOptions" /> to register on (just for chaining).</param>
        /// <exception cref="ArgumentNullException"><paramref name="options"/> is <c>null</c>.</exception>
        public static T AddEsquio <T>(this T options) where T : MiniProfilerBaseOptions
        {
            var initializer = new DiagnosticInitializer(new[] { new EsquioDiagnosticListener() });

            initializer.Start();

            return(options);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Adds middleware for profiling HTTP requests.
        /// </summary>
        /// <param name="builder">The <see cref="IApplicationBuilder"/> instance this method extends.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="builder"/> is null.</exception>
        public static IApplicationBuilder UseMiniProfiler(this IApplicationBuilder builder)
        {
            _ = builder ?? throw new ArgumentNullException(nameof(builder));

            // Register all IMiniProfilerDiagnosticListeners that were registered, e.g. EntityFramework
            var listeners   = builder.ApplicationServices.GetServices <IMiniProfilerDiagnosticListener>();
            var initializer = new DiagnosticInitializer(listeners);

            initializer.Start();

            return(builder.UseMiddleware <MiniProfilerMiddleware>());
        }
        /// <summary>
        /// Start listening for EF Core diagnosticsource events
        /// </summary>
        public IDisposable Subscribe(IApmAgent agentComponents)
        {
            var retVal     = new CompositeDisposable();
            var subscriber = new DiagnosticInitializer(agentComponents.Logger, new[] { new EfCoreDiagnosticListener(agentComponents) });

            retVal.Add(subscriber);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            return(retVal);
        }
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal     = new CompositeDisposable();
            var subscriber = new DiagnosticInitializer(agent.Logger, new[] { new AspNetCoreDiagnosticListener(agent as ApmAgent), });

            retVal.Add(subscriber);

            retVal.Add(System.Diagnostics.DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            return(retVal);
        }
Ejemplo n.º 9
0
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            var retVal      = new CompositeDisposable();
            var initializer = new DiagnosticInitializer(new[] { new HttpDiagnosticListenerImplBase <HttpWebRequest, HttpWebResponse>() });

            retVal.Add(initializer);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(initializer));
        }
Ejemplo n.º 10
0
            public IDisposable Subscribe(IApmAgent agent)
            {
                var retVal = new CompositeDisposable();

                var initializer = new DiagnosticInitializer(agent, new TestListener(agent));

                retVal.Add(initializer);
                retVal.Add(DiagnosticListener
                           .AllListeners
                           .Subscribe(initializer));

                return(retVal);
            }
        /// <summary>
        /// Subscribes diagnostic source events.
        /// </summary>
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal = new CompositeDisposable();

            var initializer = new DiagnosticInitializer(agent.Logger, new AzureMessagingServiceBusDiagnosticListener(agent));

            retVal.Add(initializer);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(initializer));

            return(retVal);
        }
        /// <summary>
        /// Subscribes diagnostic source events.
        /// </summary>
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal = new CompositeDisposable();

            var initializer = new DiagnosticInitializer(agent.Logger, new[] { new AzureQueueStorageDiagnosticListener(agent) });

            retVal.Add(initializer);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(initializer));

            return(retVal);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Start listening for EF Core <see cref="DiagnosticSource"/> events
        /// </summary>
        public IDisposable Subscribe(IApmAgent agentComponents)
        {
            var retVal = new CompositeDisposable();

            if (!agentComponents.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            var subscriber = new DiagnosticInitializer(agentComponents, new EfCoreDiagnosticListener(agentComponents));

            retVal.Add(subscriber);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            return(retVal);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Starts listening for mongoDB driver diagnostic source events
        /// </summary>
        public IDisposable Subscribe(IApmAgent components)
        {
            var retVal = new CompositeDisposable();

            if (!components.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            var initializer = new DiagnosticInitializer(components, new MongoDiagnosticListener(components));

            retVal.Add(initializer);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(initializer));

            return(retVal);
        }
Ejemplo n.º 15
0
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal = new CompositeDisposable();

            if (!agent.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            var subscriber = new DiagnosticInitializer(agent.Logger, new AspNetCoreDiagnosticListener(agent as ApmAgent));

            retVal.Add(subscriber);

            retVal.Add(System.Diagnostics.DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            return(retVal);
        }
        public IDisposable Subscribe(IApmAgent agent)
        {
            var retVal = new CompositeDisposable();

            if (!agent.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            Listener = new GrpcClientDiagnosticListener(agent as ApmAgent);
            var subscriber = new DiagnosticInitializer(agent.Logger, Listener);

            retVal.Add(subscriber);

            retVal.Add(DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            return(retVal);
        }
Ejemplo n.º 17
0
        public IDisposable Subscribe(IApmAgent agentComponents)
        {
            var retVal = new CompositeDisposable();

            if (PlatformDetection.IsDotNetCore)
            {
                var initializer = new DiagnosticInitializer(agentComponents.Logger, new[] { new SqlClientDiagnosticListener(agentComponents) });

                retVal.Add(initializer);

                retVal.Add(DiagnosticListener
                           .AllListeners
                           .Subscribe(initializer));
            }
            else
            {
                retVal.Add(new SqlEventListener(agentComponents));
            }

            return(retVal);
        }
        public IDisposable Subscribe(IApmAgent agent)
        {
            agent.Logger.Debug()?.Log($"{nameof(AspNetCoreDiagnosticSubscriber)} starting to subscribe");

            var retVal = new CompositeDisposable();

            if (!agent.ConfigurationReader.Enabled)
            {
                return(retVal);
            }

            var subscriber = new DiagnosticInitializer(agent, new AspNetCoreDiagnosticListener(agent as ApmAgent));

            retVal.Add(subscriber);

            retVal.Add(System.Diagnostics.DiagnosticListener
                       .AllListeners
                       .Subscribe(subscriber));

            agent.Logger.Debug()?.Log($"{nameof(AspNetCoreDiagnosticSubscriber)} subscribed");

            return(retVal);
        }