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(); } } }
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); } }
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); } }
public async Task CheckingZPagesProcessor() { const string ActivitySourceName = "zpages.test"; ZPagesExporterOptions options = new ZPagesExporterOptions { RetentionTime = 100_000, Url = "http://localhost:7284/rpcz/", }; ZPagesExporter exporter = new ZPagesExporter(options); var zpagesProcessor = new ZPagesProcessor(exporter); var source = new ActivitySource(ActivitySourceName); var activity0 = source.StartActivity("Test Zipkin Activity 1"); zpagesProcessor.OnStart(activity0); // checking size of dictionaries from ZPagesActivityTracker Assert.Equal(1, ZPagesActivityTracker.ProcessingList.First().Value); Assert.Equal(1, ZPagesActivityTracker.TotalCount.First().Value); Assert.Single(ZPagesActivityTracker.TotalEndedCount); Assert.Single(ZPagesActivityTracker.TotalErrorCount); Assert.Single(ZPagesActivityTracker.TotalLatency); var activity1 = source.StartActivity("Test Zipkin Activity 1"); zpagesProcessor.OnStart(activity1); // checking size of dictionaries from ZPagesActivityTracker Assert.Equal(2, ZPagesActivityTracker.ProcessingList.First().Value); Assert.Equal(2, ZPagesActivityTracker.TotalCount.First().Value); Assert.Single(ZPagesActivityTracker.TotalEndedCount); Assert.Single(ZPagesActivityTracker.TotalErrorCount); Assert.Single(ZPagesActivityTracker.TotalLatency); var activity2 = source.StartActivity("Test Zipkin Activity 2"); zpagesProcessor.OnStart(activity2); // checking size of dictionaries from ZPagesActivityTracker Assert.Equal(2, ZPagesActivityTracker.ProcessingList.Count); Assert.Equal(2, ZPagesActivityTracker.TotalCount.Count); Assert.Equal(2, ZPagesActivityTracker.TotalEndedCount.Count); Assert.Equal(2, ZPagesActivityTracker.TotalErrorCount.Count); Assert.Equal(2, ZPagesActivityTracker.TotalLatency.Count); activity0?.Stop(); activity1?.Stop(); activity2?.Stop(); zpagesProcessor.OnEnd(activity0); zpagesProcessor.OnEnd(activity1); zpagesProcessor.OnEnd(activity2); // checking if activities were processed Assert.Equal(0, ZPagesActivityTracker.ProcessingList.First().Value); Assert.Equal(0, ZPagesActivityTracker.ProcessingList.Last().Value); Assert.Empty(ZPagesActivityTracker.ZQueue); var zpagesServer = new ZPagesExporterStatsHttpServer(exporter); zpagesServer.Start(); using var httpResponseMessage = await HttpClient.GetAsync("http://localhost:7284/rpcz/"); Assert.True(httpResponseMessage.IsSuccessStatusCode); var content = await httpResponseMessage.Content.ReadAsStringAsync(); Assert.Contains($"<td>Test Zipkin Activity 1</td>", content); Assert.Contains($"<td>Test Zipkin Activity 2</td>", content); zpagesProcessor.Dispose(); zpagesServer.Stop(); zpagesServer.Dispose(); exporter.Dispose(); }