From 16efbfa8d4ead6d5a0d0da9137080ed6444252e5 Mon Sep 17 00:00:00 2001 From: ERDAS Date: Tue, 28 Oct 2025 15:33:41 +0500 Subject: [PATCH 1/3] init --- Program.cs | 25 ++++++++++++++++++++++++- telemetry.csproj | 10 ++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Program.cs b/Program.cs index bc275e4..6d14d67 100644 --- a/Program.cs +++ b/Program.cs @@ -1,8 +1,31 @@ +using OpenTelemetry.Logs; +using OpenTelemetry.Metrics; +using OpenTelemetry.Resources; +using OpenTelemetry.Trace; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorPages(); +builder.Logging.AddOpenTelemetry(options => +{ + options + .SetResourceBuilder( + ResourceBuilder.CreateDefault() + .AddService("TelemetryExample")) + .AddConsoleExporter(); +}); +builder.Services.AddOpenTelemetry() + .ConfigureResource(resource => resource.AddService("TelemetryExample")) + .WithTracing(tracing => tracing + .AddAspNetCoreInstrumentation() + .AddConsoleExporter()) + .WithMetrics(metrics => metrics + .AddPrometheusExporter() + .AddAspNetCoreInstrumentation() + .AddConsoleExporter()); + var app = builder.Build(); // Configure the HTTP request pipeline. @@ -15,7 +38,7 @@ app.UseHttpsRedirection(); app.UseStaticFiles(); - +app.UseOpenTelemetryPrometheusScrapingEndpoint(); app.UseRouting(); app.UseAuthorization(); diff --git a/telemetry.csproj b/telemetry.csproj index 1b28a01..21d6853 100644 --- a/telemetry.csproj +++ b/telemetry.csproj @@ -6,4 +6,14 @@ enable + + + + + + + + + + From e44fe7656b000a690a3dcee702037093e525554f Mon Sep 17 00:00:00 2001 From: "g.host" Date: Tue, 28 Oct 2025 15:40:15 +0500 Subject: [PATCH 2/3] 1.7 --- Metrics.cs | 22 ++++++++++++++++++++++ Pages/Index.cshtml.cs | 16 ++++++++++++---- Program.cs | 7 +++++-- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 Metrics.cs diff --git a/Metrics.cs b/Metrics.cs new file mode 100644 index 0000000..30e2524 --- /dev/null +++ b/Metrics.cs @@ -0,0 +1,22 @@ +using System.Diagnostics.Metrics; + +namespace telemetry; + +public class Metrics +{ + private readonly Counter indexRequestsCount; + private readonly Histogram indexRequestsTime; + + public Metrics(IMeterFactory meterFactory) + { + var meter = meterFactory.Create(nameof(Metrics)); + indexRequestsCount = meter.CreateCounter("requests.index.count", "pcs", "Количество запросов"); + indexRequestsTime = meter.CreateHistogram("requests.index.time", "ms", "Время запроса к index"); + } + + public void RequestToIndex(TimeSpan elapsed) + { + indexRequestsCount.Add(1); + indexRequestsTime.Record(elapsed.TotalMilliseconds); + } +} \ No newline at end of file diff --git a/Pages/Index.cshtml.cs b/Pages/Index.cshtml.cs index 34a599f..48c4810 100644 --- a/Pages/Index.cshtml.cs +++ b/Pages/Index.cshtml.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; using Microsoft.AspNetCore.Mvc.RazorPages; namespace telemetry.Pages; @@ -6,14 +6,22 @@ namespace telemetry.Pages; public class IndexModel : PageModel { private readonly ILogger _logger; + private readonly Metrics _metrics; - public IndexModel(ILogger logger) + public IndexModel(ILogger logger, Metrics metrics) { _logger = logger; + _metrics = metrics; } public void OnGet() { - + var sw = Stopwatch.StartNew(); + for (var i = 0; i < new Random().Next(0, 100); i++) + { + Console.Write("1"); + } + sw.Stop(); + _metrics.RequestToIndex(sw.Elapsed); } -} +} \ No newline at end of file diff --git a/Program.cs b/Program.cs index 6d14d67..f6732ad 100644 --- a/Program.cs +++ b/Program.cs @@ -2,6 +2,7 @@ using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; +using telemetry; var builder = WebApplication.CreateBuilder(args); @@ -24,7 +25,9 @@ .WithMetrics(metrics => metrics .AddPrometheusExporter() .AddAspNetCoreInstrumentation() - .AddConsoleExporter()); + .AddConsoleExporter() + .AddMeter(nameof(Metrics)) + ); var app = builder.Build(); @@ -45,4 +48,4 @@ app.MapRazorPages(); -app.Run(); +app.Run(); \ No newline at end of file From 586fbefc07223b97d3b6e8414b7c863b0bc3bb6a Mon Sep 17 00:00:00 2001 From: ERDAS Date: Tue, 28 Oct 2025 15:49:29 +0500 Subject: [PATCH 3/3] fix --- Program.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Program.cs b/Program.cs index f6732ad..7e4cfeb 100644 --- a/Program.cs +++ b/Program.cs @@ -8,6 +8,7 @@ // Add services to the container. builder.Services.AddRazorPages(); +builder.Services.AddSingleton(); builder.Logging.AddOpenTelemetry(options => {