From 5f76a197461f91608a46c7f4dd2561d32f1c8a77 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Sat, 27 Jan 2024 15:21:23 -0500 Subject: [PATCH] Switch to common OpenTelemetry package --- Weather/SerialReader/Program.cs | 77 ++---------------------- Weather/SerialReader/SerialReader.csproj | 6 +- Weather/Service/Program.cs | 71 ++-------------------- Weather/Service/Service.csproj | 8 +-- Weather/Weather.sln | 4 +- 5 files changed, 14 insertions(+), 152 deletions(-) diff --git a/Weather/SerialReader/Program.cs b/Weather/SerialReader/Program.cs index 8bb7bf3..55073af 100644 --- a/Weather/SerialReader/Program.cs +++ b/Weather/SerialReader/Program.cs @@ -1,15 +1,9 @@ +using ChrisKaczor.Common.OpenTelemetry; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.ResponseCompression; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using OpenTelemetry.Exporter; -using OpenTelemetry.Logs; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; -using System; using System.IO.Compression; using System.Reflection; using System.Text.Json.Serialization; @@ -24,73 +18,10 @@ public static class Program builder.Configuration.AddEnvironmentVariables(); + builder.Services.AddCommonOpenTelemetry(Assembly.GetExecutingAssembly().GetName().Name, builder.Configuration["Telemetry:Endpoint"], nameof(SerialReader)); + builder.Services.AddControllers(); - // --- - - var openTelemetry = builder.Services.AddOpenTelemetry(); - - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); - - var serviceName = Assembly.GetExecutingAssembly().GetName().Name; - - openTelemetry.ConfigureResource(resource => resource.AddService(serviceName!)); - - openTelemetry.WithMetrics(meterProviderBuilder => meterProviderBuilder - .AddAspNetCoreInstrumentation() - .AddHttpClientInstrumentation() - .AddProcessInstrumentation() - .AddMeter("Microsoft.AspNetCore.Hosting") - .AddMeter("Microsoft.AspNetCore.Server.Kestrel")); - - openTelemetry.WithTracing(tracerProviderBuilder => - { - tracerProviderBuilder.AddAspNetCoreInstrumentation(instrumentationOptions => - { - instrumentationOptions.RecordException = true; - }); - - tracerProviderBuilder.AddHttpClientInstrumentation(instrumentationOptions => - { - instrumentationOptions.RecordException = true; - }); - - tracerProviderBuilder.AddSqlClientInstrumentation(o => - { - o.RecordException = true; - o.SetDbStatementForText = true; - }); - - tracerProviderBuilder.AddSource(nameof(SerialReader)); - - tracerProviderBuilder.SetErrorStatusOnException(); - - tracerProviderBuilder.AddOtlpExporter(exporterOptions => - { - exporterOptions.Endpoint = new Uri(builder.Configuration["Telemetry:Endpoint"]!); - exporterOptions.Protocol = OtlpExportProtocol.Grpc; - }); - }); - - builder.Services.AddLogging(loggingBuilder => - { - loggingBuilder.SetMinimumLevel(LogLevel.Information); - - loggingBuilder.AddOpenTelemetry(options => - { - options.IncludeFormattedMessage = true; - options.IncludeScopes = true; - options.ParseStateValues = true; - - options.AddOtlpExporter(exporterOptions => - { - exporterOptions.Endpoint = new Uri(builder.Configuration["Telemetry:Endpoint"]!); - exporterOptions.Protocol = OtlpExportProtocol.Grpc; - }); - } - ); - }); - builder.Services.AddHostedService(); builder.Services.Configure(options => options.Level = CompressionLevel.Optimal); @@ -103,7 +34,7 @@ public static class Program builder.Services.AddCors(o => o.AddPolicy("CorsPolicy", corsPolicyBuilder => corsPolicyBuilder.AllowAnyMethod().AllowAnyHeader().AllowCredentials().WithOrigins("http://localhost:4200"))); - builder.Services.AddMvc().AddJsonOptions(configure => { configure.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); }); + builder.Services.AddMvc().AddJsonOptions(configure => configure.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); // --- diff --git a/Weather/SerialReader/SerialReader.csproj b/Weather/SerialReader/SerialReader.csproj index e466d1d..199280e 100644 --- a/Weather/SerialReader/SerialReader.csproj +++ b/Weather/SerialReader/SerialReader.csproj @@ -12,15 +12,11 @@ + - - - - - diff --git a/Weather/Service/Program.cs b/Weather/Service/Program.cs index d4808a4..46d937f 100644 --- a/Weather/Service/Program.cs +++ b/Weather/Service/Program.cs @@ -1,16 +1,10 @@ -using ChrisKaczor.HomeMonitor.Weather.Service.Data; +using ChrisKaczor.Common.OpenTelemetry; +using ChrisKaczor.HomeMonitor.Weather.Service.Data; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.ResponseCompression; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using OpenTelemetry.Exporter; -using OpenTelemetry.Logs; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; -using System; using System.IO.Compression; using System.Reflection; using System.Text.Json.Serialization; @@ -25,62 +19,10 @@ public static class Program builder.Configuration.AddEnvironmentVariables(); + builder.Services.AddCommonOpenTelemetry(Assembly.GetExecutingAssembly().GetName().Name, builder.Configuration["Telemetry:Endpoint"], nameof(MessageHandler)); + builder.Services.AddControllers(); - // --- - - var openTelemetry = builder.Services.AddOpenTelemetry(); - - AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); - - var serviceName = Assembly.GetExecutingAssembly().GetName().Name; - - openTelemetry.ConfigureResource(resource => resource.AddService(serviceName!)); - - openTelemetry.WithMetrics(meterProviderBuilder => meterProviderBuilder - .AddAspNetCoreInstrumentation() - .AddHttpClientInstrumentation() - .AddProcessInstrumentation() - .AddMeter("Microsoft.AspNetCore.Hosting") - .AddMeter("Microsoft.AspNetCore.Server.Kestrel")); - - openTelemetry.WithTracing(tracerProviderBuilder => - { - tracerProviderBuilder.AddAspNetCoreInstrumentation(instrumentationOptions => instrumentationOptions.RecordException = true); - - tracerProviderBuilder.AddHttpClientInstrumentation(instrumentationOptions => instrumentationOptions.RecordException = true); - - tracerProviderBuilder.AddSqlClientInstrumentation(o => - { - o.RecordException = true; - o.SetDbStatementForText = true; - }); - - tracerProviderBuilder.AddSource(nameof(MessageHandler)); - - tracerProviderBuilder.SetErrorStatusOnException(); - - tracerProviderBuilder.AddOtlpExporter(exporterOptions => - { - exporterOptions.Endpoint = new Uri(builder.Configuration["Telemetry:Endpoint"]!); - exporterOptions.Protocol = OtlpExportProtocol.Grpc; - }); - }); - - builder.Services.AddLogging(loggingBuilder => - { - loggingBuilder.SetMinimumLevel(LogLevel.Information); - loggingBuilder.AddOpenTelemetry(options => - { - options.AddOtlpExporter(exporterOptions => - { - exporterOptions.Endpoint = new Uri(builder.Configuration["Telemetry:Endpoint"]!); - exporterOptions.Protocol = OtlpExportProtocol.Grpc; - }); - } - ); - }); - builder.Services.AddTransient(); builder.Services.AddHostedService(); @@ -95,10 +37,7 @@ public static class Program builder.Services.AddCors(o => o.AddPolicy("CorsPolicy", corsPolicyBuilder => corsPolicyBuilder.AllowAnyMethod().AllowAnyHeader().AllowCredentials().WithOrigins("http://localhost:4200"))); - builder.Services.AddMvc().AddJsonOptions(configure => - { - configure.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - }); + builder.Services.AddMvc().AddJsonOptions(configure => configure.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); // --- diff --git a/Weather/Service/Service.csproj b/Weather/Service/Service.csproj index 4ff5077..14315a1 100644 --- a/Weather/Service/Service.csproj +++ b/Weather/Service/Service.csproj @@ -35,14 +35,10 @@ - + + - - - - - diff --git a/Weather/Weather.sln b/Weather/Weather.sln index 83e76f3..0933bf4 100644 --- a/Weather/Weather.sln +++ b/Weather/Weather.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28705.295 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34511.84 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SerialReader", "SerialReader\SerialReader.csproj", "{63142748-213D-4BD3-9A15-8E5C405718B4}" EndProject