public HttpInListener(string name, AspNetCoreInstrumentationOptions options, ActivitySourceAdapter activitySource) : base(name) { this.hostingSupportsW3C = typeof(HttpRequest).Assembly.GetName().Version.Major >= 3; this.options = options ?? throw new ArgumentNullException(nameof(options)); this.activitySource = activitySource; }
/// <summary> /// Initializes a new instance of the <see cref="MassTransitInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> /// <param name="options">Instrumentation options.</param> public MassTransitInstrumentation(ActivitySourceAdapter activitySource, MassTransitInstrumentationOptions options) { var diagnosticListener = new MassTransitDiagnosticListener(activitySource, options); this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(diagnosticListener, null); this.diagnosticSourceSubscriber.Subscribe(); }
public QuartzJobInstrumentation(ActivitySourceAdapter activitySource, QuartzInstrumentationOptions options) { var listener = new QuartzDiagnosticListener(DiagnosticHeaders.DefaultListenerName, options, activitySource); diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(listener, null); diagnosticSourceSubscriber.Subscribe(); }
/// <summary> /// Initializes a new instance of the <see cref="AspNetInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> /// <param name="options">Configuration options for ASP.NET instrumentation.</param> public AspNetInstrumentation(ActivitySourceAdapter activitySource, AspNetInstrumentationOptions options) { this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber( name => new HttpInListener(name, options, activitySource), listener => listener.Name == AspNetDiagnosticListenerName, null); this.diagnosticSourceSubscriber.Subscribe(); }
public void ActivitySourceAdapterValidatesConstructor() { // Sampler null Assert.Throws <ArgumentNullException>(() => new ActivitySourceAdapter(null, this.testProcessor)); // Processor null. This is not expected to throw as processor can // be null and can be later added. var adapter = new ActivitySourceAdapter(this.testSampler, null); }
/// <summary> /// Initializes a new instance of the <see cref="GrpcClientInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> public GrpcClientInstrumentation(ActivitySourceAdapter activitySource) { if (activitySource == null) { throw new ArgumentNullException(nameof(activitySource)); } this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new GrpcClientDiagnosticListener(activitySource), null); this.diagnosticSourceSubscriber.Subscribe(); }
public GrpcClientDiagnosticListener(ActivitySourceAdapter activitySource) : base("Grpc.Net.Client") { if (activitySource == null) { throw new ArgumentNullException(nameof(activitySource)); } this.activitySource = activitySource; }
/// <summary> /// Initializes a new instance of the <see cref="ElasticsearchClientInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> /// <param name="options">Configuration options for Elasticsearch client instrumentation.</param> public ElasticsearchClientInstrumentation(ActivitySourceAdapter activitySource, ElasticsearchClientInstrumentationOptions options) { if (activitySource == null) { throw new ArgumentNullException(nameof(activitySource)); } this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new ElasticsearchRequestPipelineDiagnosticListener(activitySource, options), null); this.diagnosticSourceSubscriber.Subscribe(); }
public ElasticsearchRequestPipelineDiagnosticListener(ActivitySourceAdapter activitySource, ElasticsearchClientInstrumentationOptions options) : base("Elasticsearch.Net.RequestPipeline") { if (activitySource == null) { throw new ArgumentNullException(nameof(activitySource)); } this.activitySource = activitySource; this.options = options; }
/// <summary> /// Initializes a new instance of the <see cref="SqlClientInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> /// <param name="options">Configuration options for sql instrumentation.</param> public SqlClientInstrumentation(ActivitySourceAdapter activitySource, SqlClientInstrumentationOptions options) { this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber( name => new SqlClientDiagnosticListener(name, options, activitySource), listener => listener.Name == SqlClientDiagnosticListenerName, null); this.diagnosticSourceSubscriber.Subscribe(); #if NETFRAMEWORK this.sqlEventSourceListener = new SqlEventSourceListener(options); #endif }
public OTelMediatRInstrumentation(ActivitySourceAdapter activitySource) { if (activitySource == null) { throw new ArgumentNullException(nameof(activitySource)); } _diagnosticSourceSubscriber = new DiagnosticSourceSubscriber( name => new OTelMediatRDiagnosticListener(OTelMediatROptions.OTelMediatRName, activitySource), listener => { return(listener.Name.Contains(OTelMediatROptions.OTelMediatRName)); }, null ); _diagnosticSourceSubscriber?.Subscribe(); }
public HttpHandlerDiagnosticListener(HttpClientInstrumentationOptions options, ActivitySourceAdapter activitySource) : base("HttpHandlerDiagnosticListener") { var framework = Assembly .GetEntryAssembly()? .GetCustomAttribute <TargetFrameworkAttribute>()? .FrameworkName; // Depending on the .NET version/flavor this will look like // '.NETCoreApp,Version=v3.0', '.NETCoreApp,Version = v2.2' or '.NETFramework,Version = v4.7.1' if (framework != null) { var match = CoreAppMajorVersionCheckRegex.Match(framework); this.httpClientSupportsW3C = match.Success && int.Parse(match.Groups[1].Value, CultureInfo.InvariantCulture) >= 3; } this.options = options; this.activitySource = activitySource; }
/// <summary> /// Enables OpenTelemetry. /// </summary> /// <param name="configureOpenTelemetryBuilder">Function that configures OpenTelemetryBuilder.</param> /// <returns><see cref="OpenTelemetrySdk"/> instance which can be disposed on application shutdown.</returns> /// <remarks> /// Basic implementation only. Most logic from TracerBuilder will be ported here. /// </remarks> public static OpenTelemetrySdk EnableOpenTelemetry(Action <OpenTelemetryBuilder> configureOpenTelemetryBuilder) { var openTelemetryBuilder = new OpenTelemetryBuilder(); configureOpenTelemetryBuilder(openTelemetryBuilder); var openTelemetrySDK = new OpenTelemetrySdk(); ActivitySampler sampler = openTelemetryBuilder.Sampler ?? new AlwaysOnActivitySampler(); ActivityProcessor activityProcessor; if (openTelemetryBuilder.ProcessingPipelines == null || !openTelemetryBuilder.ProcessingPipelines.Any()) { // if there are no pipelines are configured, use noop processor activityProcessor = new NoopActivityProcessor(); } else if (openTelemetryBuilder.ProcessingPipelines.Count == 1) { // if there is only one pipeline - use it's outer processor as a // single processor on the tracerSdk. var processorFactory = openTelemetryBuilder.ProcessingPipelines[0]; activityProcessor = processorFactory.Build(); } else { // if there are more pipelines, use processor that will broadcast to all pipelines var processors = new ActivityProcessor[openTelemetryBuilder.ProcessingPipelines.Count]; for (int i = 0; i < openTelemetryBuilder.ProcessingPipelines.Count; i++) { processors[i] = openTelemetryBuilder.ProcessingPipelines[i].Build(); } activityProcessor = new BroadcastActivityProcessor(processors); } openTelemetrySDK.resource = openTelemetryBuilder.Resource; var activitySource = new ActivitySourceAdapter(sampler, activityProcessor, openTelemetrySDK.resource); if (openTelemetryBuilder.InstrumentationFactories != null) { foreach (var instrumentation in openTelemetryBuilder.InstrumentationFactories) { openTelemetrySDK.instrumentations.Add(instrumentation.Factory(activitySource)); } } // This is what subscribes to Activities. // Think of this as the replacement for DiagnosticListener.AllListeners.Subscribe(onNext => diagnosticListener.Subscribe(..)); openTelemetrySDK.listener = new ActivityListener { // Callback when Activity is started. ActivityStarted = (activity) => { if (activity.IsAllDataRequested) { activity.SetResource(openTelemetrySDK.resource); } activityProcessor.OnStart(activity); }, // Callback when Activity is started. ActivityStopped = activityProcessor.OnEnd, // Function which takes ActivitySource and returns true/false to indicate if it should be subscribed to // or not ShouldListenTo = (activitySource) => openTelemetryBuilder.ActivitySourceNames?.Contains(activitySource.Name.ToUpperInvariant()) ?? false, // The following parameter is not used now. GetRequestedDataUsingParentId = (ref ActivityCreationOptions <string> options) => ActivityDataRequest.AllData, // This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext. GetRequestedDataUsingContext = (ref ActivityCreationOptions <ActivityContext> options) => ComputeActivityDataRequest(options, sampler), }; ActivitySource.AddActivityListener(openTelemetrySDK.listener); openTelemetrySDK.activityProcessor = activityProcessor; return(openTelemetrySDK); }
public OTelMediatRDiagnosticListener(string name, ActivitySourceAdapter activitySource) : base(name) { _activitySource = activitySource; }
/// <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="activitySource">ActivitySource adapter instance.</param> public HttpClientInstrumentation(ActivitySourceAdapter activitySource) : this(activitySource, new HttpClientInstrumentationOptions()) { }
public QuartzDiagnosticListener(string sourceName, QuartzInstrumentationOptions options, ActivitySourceAdapter activitySource) : base(sourceName) { this.options = options ?? throw new ArgumentNullException(nameof(options)); this.activitySource = activitySource; }
/// <summary> /// Initializes a new instance of the <see cref="MassTransitInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> public MassTransitInstrumentation(ActivitySourceAdapter activitySource) : this(activitySource, new MassTransitInstrumentationOptions()) { }
public MassTransitDiagnosticListener(ActivitySourceAdapter activitySource, MassTransitInstrumentationOptions options) : base("MassTransit") { this.activitySource = activitySource; this.options = options; }
public SendMessageListener(ActivitySourceAdapter activitySource, NServiceBusInstrumentationOptions options) : base("NServiceBus.Extensions.Diagnostics.OutgoingPhysicalMessage") { _activitySource = activitySource; _options = options; }
public TestInstrumentation(ActivitySourceAdapter adapter) { this.adapter = adapter; }
public TestInstrumentation(ActivitySourceAdapter adapter) { this.Adapter = adapter; this.IsDisposed = false; }
/// <summary> /// Initializes a new instance of the <see cref="AspNetCoreInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> /// <param name="options">Configuration options for ASP.NET Core instrumentation.</param> public AspNetCoreInstrumentation(ActivitySourceAdapter activitySource, AspNetCoreInstrumentationOptions options) { this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new HttpInListener("Microsoft.AspNetCore", options, activitySource), null); this.diagnosticSourceSubscriber.Subscribe(); }
/// <summary> /// Initializes a new instance of the <see cref="AspNetCoreInstrumentation"/> class. /// </summary> /// <param name="activitySource">ActivitySource adapter instance.</param> public AspNetCoreInstrumentation(ActivitySourceAdapter activitySource) : this(activitySource, new AspNetCoreInstrumentationOptions()) { }
/// <summary> /// Initializes a new instance of the <see cref="HttpClientInstrumentation"/> class. /// </summary> /// <param name="activitySourceAdapter">ActivitySource adapter instance.</param> /// <param name="options">Configuration options for HTTP client instrumentation.</param> public HttpClientInstrumentation(ActivitySourceAdapter activitySourceAdapter, HttpClientInstrumentationOptions options) { this.diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new HttpHandlerDiagnosticListener(options, activitySourceAdapter), (activityName, arg1, arg2) => options?.EventFilter(activityName, arg1) ?? true); this.diagnosticSourceSubscriber.Subscribe(); }
public NServiceBusSendInstrumentation(ActivitySourceAdapter activitySource, NServiceBusInstrumentationOptions options) { _diagnosticSourceSubscriber = new DiagnosticSourceSubscriber( new SendMessageListener(activitySource, options), null); _diagnosticSourceSubscriber.Subscribe(); }
public QuartzJobInstrumentation(ActivitySourceAdapter activitySource) : this(activitySource, new QuartzInstrumentationOptions()) { }
public HttpInListener(string name, AspNetInstrumentationOptions options, ActivitySourceAdapter activitySource) : base(name) { this.options = options ?? throw new ArgumentNullException(nameof(options)); this.activitySource = activitySource; }
public ActivitySourceAdapterTest() { this.testSampler = new TestSampler(); this.testProcessor = new TestActivityProcessor(); this.activitySourceAdapter = new ActivitySourceAdapter(this.testSampler, this.testProcessor, this.testResource); }
public MongoDBCommandAdapter(ActivitySourceAdapter activitySource, MongoDBInstrumentationOptions options) { _diagnosticSourceSubscriber = new DiagnosticSourceSubscriber(new CommandListener(activitySource, options), null); _diagnosticSourceSubscriber.Subscribe(); }