internal static object Run() { var zpagesOptions = new ZPagesExporterOptions() { Url = "http://localhost:7284/rpcz/" }; var zpagesExporter = new ZPagesExporter(zpagesOptions); var spanProcessor = new SimpleSpanProcessor(zpagesExporter); var httpServer = new ZPagesExporterStatsHttpServer(zpagesExporter, spanProcessor); // Start the server httpServer.Start(); // Configure exporter using (var tracerFactory = TracerFactory.Create(builder => builder .AddProcessorPipeline(b => b .SetExporter(zpagesExporter) .SetExportingProcessor(e => spanProcessor)))) { var tracer = tracerFactory.GetTracer("zpages-test"); while (true) { // Create a scoped span. It will end automatically when using statement ends using (tracer.WithSpan(tracer.StartSpan("Main"))) { Console.WriteLine("Starting Span"); } Thread.Sleep(500); } } }
internal static object Run() { var zpagesOptions = new ZPagesExporterOptions() { Url = "http://localhost:7284/rpcz/" }; var zpagesExporter = new ZPagesExporter(zpagesOptions); var spanProcessor = new ZPagesSpanProcessor(zpagesExporter); ZPagesSpans.RetentionTime = 3600000; var httpServer = new ZPagesExporterStatsHttpServer(zpagesExporter, spanProcessor); // Start the server httpServer.Start(); // Configure exporter using (var tracerFactory = TracerFactory.Create(builder => builder .AddProcessorPipeline(b => b .SetExporter(zpagesExporter) .SetExportingProcessor(e => spanProcessor)))) { var tracer = tracerFactory.GetTracer("zpages-test"); while (true) { // Create a scoped span. TelemetrySpan telemetrySpan = tracer.StartSpan("Main"); telemetrySpan.Status = Status.Unavailable; using (tracer.WithSpan(telemetrySpan)) { Console.WriteLine("Starting Span"); } Thread.Sleep(3000); telemetrySpan.End(); // Create a scoped span. TelemetrySpan telemetrySpan2 = tracer.StartSpan("TestSpan"); telemetrySpan2.Status = Status.Ok; using (tracer.WithSpan(telemetrySpan2)) { Console.WriteLine("Starting Span2"); } Thread.Sleep(5000); telemetrySpan2.End(); } } }
public static TracerProviderBuilder AddZPagesExporter( this TracerProviderBuilder builder, Action <ZPagesExporterOptions> configure = null) { Guard.ThrowIfNull(builder); var exporterOptions = new ZPagesExporterOptions(); configure?.Invoke(exporterOptions); var zpagesExporter = new ZPagesExporter(exporterOptions); // TODO: Pick Simple vs Batching based on ZipkinExporterOptions return(builder.AddProcessor(new ZPagesProcessor(zpagesExporter))); }
/// <summary> /// Registers a Zipkin exporter that will receive <see cref="System.Diagnostics.Activity"/> instances. /// </summary> /// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param> /// <param name="configure">Exporter configuration options.</param> /// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns> public static TracerProviderBuilder AddZPagesExporter( this TracerProviderBuilder builder, Action <ZPagesExporterOptions> configure = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var exporterOptions = new ZPagesExporterOptions(); configure?.Invoke(exporterOptions); var zpagesExporter = new ZPagesExporter(exporterOptions); // TODO: Pick Simple vs Batching based on ZipkinExporterOptions return(builder.AddProcessor(new ZPagesProcessor(zpagesExporter))); }
internal static object Run() { var zpagesOptions = new ZPagesExporterOptions() { Url = "http://localhost:7284/rpcz/", RetentionTime = 3600000 }; var zpagesExporter = new ZPagesExporter(zpagesOptions); var httpServer = new ZPagesExporterStatsHttpServer(zpagesExporter); // Start the server httpServer.Start(); using var openTelemetry = OpenTelemetrySdk.CreateTracerProviderBuilder() .AddSource("zpages-test") .AddZPagesExporter(o => { o.Url = zpagesOptions.Url; o.RetentionTime = zpagesOptions.RetentionTime; }) .Build(); ActivitySource activitySource = new ActivitySource("zpages-test"); while (true) { // Create a scoped activity. It will end automatically when using statement ends using (activitySource.StartActivity("Main")) { System.Console.WriteLine("About to do a busy work in Main"); } Thread.Sleep(3000); // Create a scoped activity. It will end automatically when using statement ends using (activitySource.StartActivity("Test")) { System.Console.WriteLine("About to do a busy work in Test"); } Thread.Sleep(5000); } }
/// <summary> /// Registers a Zipkin exporter that will receive <see cref="System.Diagnostics.Activity"/> instances. /// </summary> /// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param> /// <param name="configure">Exporter configuration options.</param> /// <param name="processorConfigure">Activity processor configuration.</param> /// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns> public static TracerProviderBuilder UseZPagesExporter( this TracerProviderBuilder builder, Action <ZPagesExporterOptions> configure = null, Action <ActivityProcessorPipelineBuilder> processorConfigure = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } return(builder.AddProcessorPipeline(pipeline => { var options = new ZPagesExporterOptions(); configure?.Invoke(options); var exporter = new ZPagesExporter(options); processorConfigure?.Invoke(pipeline); pipeline.SetExporter(exporter); })); }
internal static object Run() { var zpagesOptions = new ZPagesExporterOptions() { Url = "http://localhost:7284/rpcz/", RetentionTime = 3600000 }; var zpagesExporter = new ZPagesExporter(zpagesOptions); var zpagesProcessor = new ZPagesProcessor(zpagesExporter); var httpServer = new ZPagesExporterStatsHttpServer(zpagesExporter); // Start the server httpServer.Start(); using var openTelemetry = Sdk.CreateTracerProvider( builder => builder .AddActivitySource("zpages-test") .UseZPagesExporter( processorConfigure: processor => processor .AddProcessor((next) => zpagesProcessor))); ActivitySource activitySource = new ActivitySource("zpages-test"); while (true) { // Create a scoped activity. It will end automatically when using statement ends using (activitySource.StartActivity("Main")) { System.Console.WriteLine("About to do a busy work in Main"); } Thread.Sleep(3000); // Create a scoped activity. It will end automatically when using statement ends using (activitySource.StartActivity("Test")) { System.Console.WriteLine("About to do a busy work in Test"); } Thread.Sleep(5000); } }