diff --git a/paket.dependencies b/paket.dependencies index dbc62b7c..902dbae2 100755 --- a/paket.dependencies +++ b/paket.dependencies @@ -10,6 +10,9 @@ nuget HtmlAgilityPack 1.11.59 nuget CsvHelper 31.0.2 +nuget Datadog.Trace 2.49.0 +nuget Datadog.Trace.Bundle 2.49.0 + nuget NetTopologySuite 2.5.0 nuget Dapper 2.1.35 nuget NodaTime 3.1.11 diff --git a/paket.lock b/paket.lock index 2c782560..c3df3581 100644 --- a/paket.lock +++ b/paket.lock @@ -377,6 +377,10 @@ NUGET System.Memory (>= 4.5) CsvHelper (31.0.2) Dapper (2.1.35) + Datadog.Trace (2.49) + System.Diagnostics.DiagnosticSource (>= 4.4.1) + Datadog.Trace.Bundle (2.49) + Datadog.Trace (>= 2.49) Destructurama.JsonNet (3.0) Newtonsoft.Json (>= 13.0.3) Serilog (>= 3.1.1) @@ -476,9 +480,9 @@ NUGET Microsoft.EntityFrameworkCore.Relational (8.0.3) Microsoft.EntityFrameworkCore (>= 8.0.3) Microsoft.Extensions.Configuration.Abstractions (>= 8.0) - Microsoft.EntityFrameworkCore.Relational.Design (1.1.6) - Microsoft.EntityFrameworkCore.Relational (>= 1.1.6) - NETStandard.Library (>= 1.6.1) + Microsoft.EntityFrameworkCore.Relational.Design (2.0.0-preview1-final) + Microsoft.EntityFrameworkCore.Relational (>= 2.0.0-preview1-final) + NETStandard.Library (>= 2.0.0-preview1-25301-01) Microsoft.EntityFrameworkCore.SqlServer (8.0.3) Microsoft.Data.SqlClient (>= 5.1.5) Microsoft.EntityFrameworkCore.Relational (>= 8.0.3) @@ -667,14 +671,15 @@ NUGET Microsoft.EntityFrameworkCore.Abstractions (>= 8.0.2) Microsoft.EntityFrameworkCore.Relational (>= 8.0.2) Npgsql (>= 8.0.2) - Npgsql.EntityFrameworkCore.PostgreSQL.Design (1.1) - Microsoft.EntityFrameworkCore (>= 1.1) - Microsoft.EntityFrameworkCore.Relational (>= 1.1) - Microsoft.EntityFrameworkCore.Relational.Design (>= 1.1) - Microsoft.Extensions.DependencyInjection (>= 1.1) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.1) - Npgsql (>= 3.1.9) - Npgsql.EntityFrameworkCore.PostgreSQL (>= 1.1) + Npgsql.EntityFrameworkCore.PostgreSQL.Design (2.0.0-preview1) + Microsoft.EntityFrameworkCore (>= 2.0.0-preview1-final) + Microsoft.EntityFrameworkCore.Relational (>= 2.0.0-preview1-final) + Microsoft.EntityFrameworkCore.Relational.Design (>= 2.0.0-preview1-final) + Microsoft.Extensions.DependencyInjection (>= 2.0.0-preview1-final) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.0.0-preview1-final) + NETStandard.Library (>= 1.6.1) + Npgsql (>= 3.2.2) + Npgsql.EntityFrameworkCore.PostgreSQL (>= 2.0.0-preview1) NSwag.CodeGeneration (14.0.3) NJsonSchema.CodeGeneration (>= 11.0) NSwag.Core (>= 14.0.3) diff --git a/src/PostalRegistry.Api.CrabImport/Dockerfile b/src/PostalRegistry.Api.CrabImport/Dockerfile index 056f5bf0..1298bd2c 100644 --- a/src/PostalRegistry.Api.CrabImport/Dockerfile +++ b/src/PostalRegistry.Api.CrabImport/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3000/tcp ENV ASPNETCORE_URLS http://*:3000 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Api.CrabImport/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Api.CrabImport/Infrastructure/Modules/ApiModule.cs index 5efd4cb1..e6e8d2e1 100755 --- a/src/PostalRegistry.Api.CrabImport/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Api.CrabImport/Infrastructure/Modules/ApiModule.cs @@ -4,7 +4,6 @@ namespace PostalRegistry.Api.CrabImport.Infrastructure.Modules using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; using Be.Vlaanderen.Basisregisters.CommandHandling.Idempotency; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Be.Vlaanderen.Basisregisters.EventHandling; using Be.Vlaanderen.Basisregisters.EventHandling.Autofac; using Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac; @@ -34,8 +33,6 @@ protected override void Load(ContainerBuilder builder) { var eventSerializerSettings = EventsJsonSerializerSettingsProvider.CreateSerializerSettings(); - builder.RegisterModule(new DataDogModule(_configuration)); - builder .RegisterModule(new EventHandlingModule(typeof(DomainAssemblyMarker).Assembly, eventSerializerSettings)) .RegisterModule(new EnvelopeModule()) diff --git a/src/PostalRegistry.Api.CrabImport/Infrastructure/Startup.cs b/src/PostalRegistry.Api.CrabImport/Infrastructure/Startup.cs index 083d53a8..4bbdb331 100755 --- a/src/PostalRegistry.Api.CrabImport/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Api.CrabImport/Infrastructure/Startup.cs @@ -8,7 +8,6 @@ namespace PostalRegistry.Api.CrabImport.Infrastructure using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api; using Be.Vlaanderen.Basisregisters.CommandHandling.Idempotency; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Configuration; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -114,32 +113,12 @@ public void Configure( ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, MsSqlStreamStore streamStore, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); StartupHelpers.EnsureSqlStreamStoreSchema(streamStore, loggerFactory); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Api.CrabImport/appsettings.json b/src/PostalRegistry.Api.CrabImport/appsettings.json index e2459c26..7591f243 100755 --- a/src/PostalRegistry.Api.CrabImport/appsettings.json +++ b/src/PostalRegistry.Api.CrabImport/appsettings.json @@ -7,12 +7,6 @@ "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=EFProviders.InMemory.PostalRegistry;Trusted_Connection=True;TrustServerCertificate=True;" }, - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "postal-registry-dev" - }, - "BaseUrl": "https://api.staging-basisregisters.vlaanderen/", "Cors": [ diff --git a/src/PostalRegistry.Api.CrabImport/paket.references b/src/PostalRegistry.Api.CrabImport/paket.references index 85ff6396..cb4bdf17 100755 --- a/src/PostalRegistry.Api.CrabImport/paket.references +++ b/src/PostalRegistry.Api.CrabImport/paket.references @@ -1,10 +1,12 @@ Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.CommandHandling.Idempotency -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac Be.Vlaanderen.Basisregisters.EventHandling.Autofac Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac AspNetCore.HealthChecks.SqlServer +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Api.CrabImport/paket.template b/src/PostalRegistry.Api.CrabImport/paket.template index f7e66cfe..5fb322d5 100755 --- a/src/PostalRegistry.Api.CrabImport/paket.template +++ b/src/PostalRegistry.Api.CrabImport/paket.template @@ -18,7 +18,6 @@ dependencies framework: net8.0 Be.Vlaanderen.Basisregisters.Api >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.CommandHandling.Idempotency >= LOCKEDVERSION - Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.EventHandling.Autofac >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac >= LOCKEDVERSION AspNetCore.HealthChecks.SqlServer >= LOCKEDVERSION diff --git a/src/PostalRegistry.Api.Extract/Dockerfile b/src/PostalRegistry.Api.Extract/Dockerfile index 008b4423..815cced1 100644 --- a/src/PostalRegistry.Api.Extract/Dockerfile +++ b/src/PostalRegistry.Api.Extract/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3004/tcp ENV ASPNETCORE_URLS http://*:3004 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Api.Extract/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Api.Extract/Infrastructure/Modules/ApiModule.cs index 0f6136bf..19981d81 100755 --- a/src/PostalRegistry.Api.Extract/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Api.Extract/Infrastructure/Modules/ApiModule.cs @@ -3,7 +3,6 @@ namespace PostalRegistry.Api.Extract.Infrastructure.Modules using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -27,8 +26,6 @@ public ApiModule( protected override void Load(ContainerBuilder builder) { - builder.RegisterModule(new DataDogModule(_configuration)); - builder .RegisterModule(new ExtractModule(_configuration, _services, _loggerFactory, false)); diff --git a/src/PostalRegistry.Api.Extract/Infrastructure/Startup.cs b/src/PostalRegistry.Api.Extract/Infrastructure/Startup.cs index f2681fd0..66b7e6e1 100755 --- a/src/PostalRegistry.Api.Extract/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Api.Extract/Infrastructure/Startup.cs @@ -1,5 +1,9 @@ namespace PostalRegistry.Api.Extract.Infrastructure { + using System; + using System.Linq; + using System.Reflection; + using Asp.Versioning.ApiExplorer; using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api; @@ -8,17 +12,12 @@ namespace PostalRegistry.Api.Extract.Infrastructure using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; - using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Diagnostics.HealthChecks; using Microsoft.Extensions.Hosting; + using Microsoft.Extensions.Logging; + using Microsoft.OpenApi.Models; using Modules; using Projections.Extract; - using System; - using System.Linq; - using System.Reflection; - using Asp.Versioning.ApiExplorer; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; - using Microsoft.Extensions.Diagnostics.HealthChecks; - using Microsoft.OpenApi.Models; public class Startup { @@ -114,31 +113,11 @@ public void Configure( IHostApplicationLifetime appLifetime, ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Api.Extract/appsettings.json b/src/PostalRegistry.Api.Extract/appsettings.json index 074d21cf..831cab02 100755 --- a/src/PostalRegistry.Api.Extract/appsettings.json +++ b/src/PostalRegistry.Api.Extract/appsettings.json @@ -5,12 +5,6 @@ "ExtractProjectionsAdmin": "Server=(localdb)\\mssqllocaldb;Database=EFProviders.InMemory.PostalRegistry;Trusted_Connection=True;TrustServerCertificate=True;" }, - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "PostalRegistry Extract" - }, - "BaseUrl": "https://api.staging-basisregisters.vlaanderen/", "Cors": [ diff --git a/src/PostalRegistry.Api.Extract/paket.references b/src/PostalRegistry.Api.Extract/paket.references index 7638ce5d..17a47af7 100755 --- a/src/PostalRegistry.Api.Extract/paket.references +++ b/src/PostalRegistry.Api.Extract/paket.references @@ -2,9 +2,11 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.GrAr.Extracts Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac AspNetCore.HealthChecks.SqlServer +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Api.Extract/paket.template b/src/PostalRegistry.Api.Extract/paket.template index c140747a..f9754298 100644 --- a/src/PostalRegistry.Api.Extract/paket.template +++ b/src/PostalRegistry.Api.Extract/paket.template @@ -20,7 +20,6 @@ dependencies Be.Vlaanderen.Basisregisters.Api >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.GrAr.Extracts >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.EventHandling.Autofac >= LOCKEDVERSION - Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac >= LOCKEDVERSION AspNetCore.HealthChecks.SqlServer >= LOCKEDVERSION files diff --git a/src/PostalRegistry.Api.Legacy/Dockerfile b/src/PostalRegistry.Api.Legacy/Dockerfile index 52c79851..6804fda7 100644 --- a/src/PostalRegistry.Api.Legacy/Dockerfile +++ b/src/PostalRegistry.Api.Legacy/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3002/tcp ENV ASPNETCORE_URLS http://*:3002 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Api.Legacy/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Api.Legacy/Infrastructure/Modules/ApiModule.cs index 813f5e3e..f4ebeefb 100755 --- a/src/PostalRegistry.Api.Legacy/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Api.Legacy/Infrastructure/Modules/ApiModule.cs @@ -3,7 +3,6 @@ namespace PostalRegistry.Api.Legacy.Infrastructure.Modules using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -28,8 +27,6 @@ public ApiModule( protected override void Load(ContainerBuilder builder) { - builder.RegisterModule(new DataDogModule(_configuration)); - builder .RegisterModule(new LegacyModule(_configuration, _services, _loggerFactory)) .RegisterModule(new SyndicationModule(_configuration, _services, _loggerFactory)); diff --git a/src/PostalRegistry.Api.Legacy/Infrastructure/Startup.cs b/src/PostalRegistry.Api.Legacy/Infrastructure/Startup.cs index c45e306a..e46721a3 100755 --- a/src/PostalRegistry.Api.Legacy/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Api.Legacy/Infrastructure/Startup.cs @@ -18,7 +18,6 @@ namespace PostalRegistry.Api.Legacy.Infrastructure using System.Linq; using System.Reflection; using Asp.Versioning.ApiExplorer; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Microsoft.OpenApi.Models; /// Represents the startup process for the application. @@ -117,31 +116,11 @@ public void Configure( IHostApplicationLifetime appLifetime, ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Api.Legacy/appsettings.json b/src/PostalRegistry.Api.Legacy/appsettings.json index 862b31d2..bf0f69c0 100755 --- a/src/PostalRegistry.Api.Legacy/appsettings.json +++ b/src/PostalRegistry.Api.Legacy/appsettings.json @@ -6,13 +6,7 @@ "SyndicationProjections": "Server=(localdb)\\mssqllocaldb;Database=postalregistry-dev;Trusted_Connection=True;TrustServerCertificate=True;", "SyndicationProjectionsAdmin": "Server=(localdb)\\mssqllocaldb;Database=postalregistry-dev;Trusted_Connection=True;TrustServerCertificate=True;" }, - - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "postal-registry-legacy-dev" - }, - + "BaseUrl": "https://api.staging-basisregisters.vlaanderen/", "Syndication": { diff --git a/src/PostalRegistry.Api.Legacy/paket.references b/src/PostalRegistry.Api.Legacy/paket.references index 87329282..63028cc9 100755 --- a/src/PostalRegistry.Api.Legacy/paket.references +++ b/src/PostalRegistry.Api.Legacy/paket.references @@ -1,9 +1,11 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac AspNetCore.HealthChecks.SqlServer +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Api.Legacy/paket.template b/src/PostalRegistry.Api.Legacy/paket.template index 8ee735e2..d6db0a42 100755 --- a/src/PostalRegistry.Api.Legacy/paket.template +++ b/src/PostalRegistry.Api.Legacy/paket.template @@ -20,7 +20,6 @@ dependencies Be.Vlaanderen.Basisregisters.AggregateSource >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.Api >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.EventHandling.Autofac >= LOCKEDVERSION - Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac >= LOCKEDVERSION AspNetCore.HealthChecks.SqlServer >= LOCKEDVERSION files @@ -34,6 +33,6 @@ files PostalRegistry.Projections.Syndication.dll => lib\net8.0 PostalRegistry.Projections.Syndication.pdb => lib\net8.0 - + PostalRegistry.dll => lib\net8.0 PostalRegistry.pdb => lib\net8.0 diff --git a/src/PostalRegistry.Api.Oslo/Dockerfile b/src/PostalRegistry.Api.Oslo/Dockerfile index f99ef87e..4069aa98 100644 --- a/src/PostalRegistry.Api.Oslo/Dockerfile +++ b/src/PostalRegistry.Api.Oslo/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3012/tcp ENV ASPNETCORE_URLS http://*:3012 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Api.Oslo/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Api.Oslo/Infrastructure/Modules/ApiModule.cs index e1af2e2f..10cffff7 100644 --- a/src/PostalRegistry.Api.Oslo/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Api.Oslo/Infrastructure/Modules/ApiModule.cs @@ -3,7 +3,6 @@ namespace PostalRegistry.Api.Oslo.Infrastructure.Modules using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -29,8 +28,6 @@ public ApiModule( protected override void Load(ContainerBuilder builder) { - builder.RegisterModule(new DataDogModule(_configuration)); - builder .RegisterModule(new LegacyModule(_configuration, _services, _loggerFactory)) .RegisterModule(new SyndicationModule(_configuration, _services, _loggerFactory)); diff --git a/src/PostalRegistry.Api.Oslo/Infrastructure/Startup.cs b/src/PostalRegistry.Api.Oslo/Infrastructure/Startup.cs index a8ccdf22..7de2492c 100644 --- a/src/PostalRegistry.Api.Oslo/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Api.Oslo/Infrastructure/Startup.cs @@ -7,7 +7,6 @@ namespace PostalRegistry.Api.Oslo.Infrastructure using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Configuration; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -117,31 +116,11 @@ public void Configure( IHostApplicationLifetime appLifetime, ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Api.Oslo/appsettings.json b/src/PostalRegistry.Api.Oslo/appsettings.json index 7e902d75..0e66447b 100644 --- a/src/PostalRegistry.Api.Oslo/appsettings.json +++ b/src/PostalRegistry.Api.Oslo/appsettings.json @@ -5,12 +5,6 @@ "SyndicationProjections": "Server=(localdb)\\mssqllocaldb;Database=postalregistry-dev;Trusted_Connection=True;TrustServerCertificate=True;" }, - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "postal-registry-oslo-dev" - }, - "BaseUrl": "https://api.staging-basisregisters.vlaanderen/", "Cors": [ diff --git a/src/PostalRegistry.Api.Oslo/paket.references b/src/PostalRegistry.Api.Oslo/paket.references index 4cb64122..0871c333 100644 --- a/src/PostalRegistry.Api.Oslo/paket.references +++ b/src/PostalRegistry.Api.Oslo/paket.references @@ -1,11 +1,13 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac AspNetCore.HealthChecks.SqlServer CsvHelper +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Api.Oslo/paket.template b/src/PostalRegistry.Api.Oslo/paket.template index 32678219..4cfc8d97 100644 --- a/src/PostalRegistry.Api.Oslo/paket.template +++ b/src/PostalRegistry.Api.Oslo/paket.template @@ -17,9 +17,8 @@ description Postal Registry. dependencies framework: net8.0 Be.Vlaanderen.Basisregisters.AggregateSource >= LOCKEDVERSION - Be.Vlaanderen.Basisregisters.Api >= LOCKEDVERSION + Be.Vlaanderen.Basisregisters.Api >= LOCKEDVERSION Be.Vlaanderen.Basisregisters.EventHandling.Autofac >= LOCKEDVERSION - Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac >= LOCKEDVERSION AspNetCore.HealthChecks.SqlServer >= LOCKEDVERSION CsvHelper >= LOCKEDVERSION @@ -31,9 +30,9 @@ files PostalRegistry.Projections.Legacy.dll => lib\net8.0 PostalRegistry.Projections.Legacy.pdb => lib\net8.0 - + PostalRegistry.Projections.Syndication.dll => lib\net8.0 PostalRegistry.Projections.Syndication.pdb => lib\net8.0 - + PostalRegistry.dll => lib\net8.0 PostalRegistry.pdb => lib\net8.0 diff --git a/src/PostalRegistry.Infrastructure/ContainerBuilderExtensions.cs b/src/PostalRegistry.Infrastructure/ContainerBuilderExtensions.cs index 4630bad9..3faba50b 100755 --- a/src/PostalRegistry.Infrastructure/ContainerBuilderExtensions.cs +++ b/src/PostalRegistry.Infrastructure/ContainerBuilderExtensions.cs @@ -4,7 +4,6 @@ namespace PostalRegistry.Infrastructure using Autofac; using Autofac.Core.Registration; using Be.Vlaanderen.Basisregisters.AggregateSource.SqlStreamStore.Autofac; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.SqlStreamStore; using Microsoft.Extensions.Configuration; public static class ContainerBuilderExtensions @@ -21,8 +20,7 @@ public static ContainerBuilder RegisterEventstreamModule( } builder - .RegisterModule(new SqlStreamStoreModule(connectionString, Schema.Default)) - .RegisterModule(new TraceSqlStreamStoreModule(configuration["DataDog:ServiceName"])); + .RegisterModule(new SqlStreamStoreModule(connectionString, Schema.Default)); return builder; } @@ -39,8 +37,7 @@ public static IModuleRegistrar RegisterEventstreamModule( } return builder - .RegisterModule(new SqlStreamStoreModule(connectionString, Schema.Default)) - .RegisterModule(new TraceSqlStreamStoreModule(configuration["DataDog:ServiceName"])); + .RegisterModule(new SqlStreamStoreModule(connectionString, Schema.Default)); } } } diff --git a/src/PostalRegistry.Infrastructure/paket.references b/src/PostalRegistry.Infrastructure/paket.references index f4b34be1..d6d43450 100755 --- a/src/PostalRegistry.Infrastructure/paket.references +++ b/src/PostalRegistry.Infrastructure/paket.references @@ -6,8 +6,5 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.AggregateSource.SqlStreamStore Be.Vlaanderen.Basisregisters.AggregateSource.SqlStreamStore.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.SqlStreamStore -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql - SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/Dockerfile b/src/PostalRegistry.Producer.Snapshot.Oslo/Dockerfile index 2e750a24..ebb24e2d 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/Dockerfile +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3016/tcp ENV ASPNETCORE_URLS http://*:3016 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Modules/ApiModule.cs index 0be84850..76a5ca5d 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Modules/ApiModule.cs @@ -4,7 +4,6 @@ namespace PostalRegistry.Producer.Snapshot.Oslo.Infrastructure.Modules using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Be.Vlaanderen.Basisregisters.EventHandling; using Be.Vlaanderen.Basisregisters.EventHandling.Autofac; using Be.Vlaanderen.Basisregisters.GrAr.Oslo.SnapshotProducer; @@ -37,8 +36,6 @@ public ApiModule( protected override void Load(ContainerBuilder builder) { - builder.RegisterModule(new DataDogModule(_configuration)); - RegisterProjectionSetup(builder); builder diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Startup.cs b/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Startup.cs index 8630d64b..d52804ac 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/Infrastructure/Startup.cs @@ -7,7 +7,6 @@ namespace PostalRegistry.Producer.Snapshot.Oslo.Infrastructure using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Be.Vlaanderen.Basisregisters.GrAr.Oslo.SnapshotProducer; using Be.Vlaanderen.Basisregisters.Projector; using Configuration; @@ -119,31 +118,11 @@ public void Configure( IHostApplicationLifetime appLifetime, ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/ProducerModule.cs b/src/PostalRegistry.Producer.Snapshot.Oslo/ProducerModule.cs index 4002afce..ebcd7a39 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/ProducerModule.cs +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/ProducerModule.cs @@ -2,7 +2,6 @@ namespace PostalRegistry.Producer.Snapshot.Oslo { using System; using Autofac; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql.EntityFrameworkCore; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer.MigrationExtensions; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; @@ -24,7 +23,7 @@ public ProducerModule( var hasConnectionString = !string.IsNullOrWhiteSpace(connectionString); if (hasConnectionString) { - RunOnSqlServer(configuration, services, loggerFactory, connectionString); + RunOnSqlServer(services, loggerFactory, connectionString); } else { @@ -41,18 +40,14 @@ public ProducerModule( } private static void RunOnSqlServer( - IConfiguration configuration, IServiceCollection services, ILoggerFactory loggerFactory, string backofficeProjectionsConnectionString) { services - .AddScoped(s => new TraceDbConnection( - new SqlConnection(backofficeProjectionsConnectionString), - configuration["DataDog:ServiceName"])) - .AddDbContext((provider, options) => options + .AddDbContext((_, options) => options .UseLoggerFactory(loggerFactory) - .UseSqlServer(provider.GetRequiredService>(), sqlServerOptions => + .UseSqlServer(backofficeProjectionsConnectionString, sqlServerOptions => { sqlServerOptions.EnableRetryOnFailure(); sqlServerOptions.MigrationsHistoryTable(MigrationTables.ProducerSnapshotOslo, Schema.ProducerSnapshotOslo); diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/appsettings.json b/src/PostalRegistry.Producer.Snapshot.Oslo/appsettings.json index 374c8c37..4c4c0c59 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/appsettings.json +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/appsettings.json @@ -16,12 +16,6 @@ "RetryBackoffFactor": 5 }, - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "postal-registry-producer-snapshot-oslo-dev" - }, - "Kafka": { "BootstrapServers": "localhost:29092/" }, diff --git a/src/PostalRegistry.Producer.Snapshot.Oslo/paket.references b/src/PostalRegistry.Producer.Snapshot.Oslo/paket.references index 7efba64d..c348a016 100644 --- a/src/PostalRegistry.Producer.Snapshot.Oslo/paket.references +++ b/src/PostalRegistry.Producer.Snapshot.Oslo/paket.references @@ -1,6 +1,5 @@ Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.GrAr.Legacy Be.Vlaanderen.Basisregisters.GrAr.Oslo Be.Vlaanderen.BasisRegisters.MessageHandling.Kafka.Producer @@ -12,5 +11,8 @@ Microsoft.Extensions.DependencyInjection AspNetCore.HealthChecks.SqlServer +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Producer/Dockerfile b/src/PostalRegistry.Producer/Dockerfile index ae3b956f..3a04d80e 100644 --- a/src/PostalRegistry.Producer/Dockerfile +++ b/src/PostalRegistry.Producer/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3014/tcp ENV ASPNETCORE_URLS http://*:3014 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Producer/Infrastructure/Modules/ApiModule.cs b/src/PostalRegistry.Producer/Infrastructure/Modules/ApiModule.cs index 401c66b2..e40bd942 100644 --- a/src/PostalRegistry.Producer/Infrastructure/Modules/ApiModule.cs +++ b/src/PostalRegistry.Producer/Infrastructure/Modules/ApiModule.cs @@ -4,7 +4,6 @@ namespace PostalRegistry.Producer.Infrastructure.Modules using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api.Exceptions; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Be.Vlaanderen.Basisregisters.EventHandling; using Be.Vlaanderen.Basisregisters.EventHandling.Autofac; using Be.Vlaanderen.Basisregisters.MessageHandling.Kafka; @@ -36,8 +35,6 @@ public ApiModule( protected override void Load(ContainerBuilder builder) { - builder.RegisterModule(new DataDogModule(_configuration)); - RegisterProjectionSetup(builder); builder diff --git a/src/PostalRegistry.Producer/Infrastructure/Startup.cs b/src/PostalRegistry.Producer/Infrastructure/Startup.cs index 0b6d522d..34af5ffb 100644 --- a/src/PostalRegistry.Producer/Infrastructure/Startup.cs +++ b/src/PostalRegistry.Producer/Infrastructure/Startup.cs @@ -7,7 +7,6 @@ namespace PostalRegistry.Producer.Infrastructure using Autofac; using Autofac.Extensions.DependencyInjection; using Be.Vlaanderen.Basisregisters.Api; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Autofac; using Be.Vlaanderen.Basisregisters.Projector; using Configuration; using Microsoft.AspNetCore.Builder; @@ -117,31 +116,11 @@ public void Configure( IHostApplicationLifetime appLifetime, ILoggerFactory loggerFactory, IApiVersionDescriptionProvider apiVersionProvider, - ApiDataDogToggle datadogToggle, - ApiDebugDataDogToggle debugDataDogToggle, HealthCheckService healthCheckService) { StartupHelpers.CheckDatabases(healthCheckService, DatabaseTag, loggerFactory).GetAwaiter().GetResult(); app - .UseDataDog(new DataDogOptions - { - Common = - { - ServiceProvider = serviceProvider, - LoggerFactory = loggerFactory - }, - Toggles = - { - Enable = datadogToggle, - Debug = debugDataDogToggle - }, - Tracing = - { - ServiceName = _configuration["DataDog:ServiceName"], - } - }) - .UseDefaultForApi(new StartupUseOptions { Common = diff --git a/src/PostalRegistry.Producer/ProducerModule.cs b/src/PostalRegistry.Producer/ProducerModule.cs index cc9e1adc..48bd03b5 100644 --- a/src/PostalRegistry.Producer/ProducerModule.cs +++ b/src/PostalRegistry.Producer/ProducerModule.cs @@ -2,10 +2,7 @@ namespace PostalRegistry.Producer { using System; using Autofac; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql.EntityFrameworkCore; - using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.MigrationExtensions; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer.MigrationExtensions; - using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,7 +21,7 @@ public ProducerModule( var hasConnectionString = !string.IsNullOrWhiteSpace(connectionString); if (hasConnectionString) - RunOnSqlServer(configuration, services, loggerFactory, connectionString); + RunOnSqlServer(services, loggerFactory, connectionString); else RunInMemoryDb(services, loggerFactory, logger); @@ -38,18 +35,14 @@ public ProducerModule( } private static void RunOnSqlServer( - IConfiguration configuration, IServiceCollection services, ILoggerFactory loggerFactory, string backofficeProjectionsConnectionString) { services - .AddScoped(s => new TraceDbConnection( - new SqlConnection(backofficeProjectionsConnectionString), - configuration["DataDog:ServiceName"])) .AddDbContext((provider, options) => options .UseLoggerFactory(loggerFactory) - .UseSqlServer(provider.GetRequiredService>(), sqlServerOptions => + .UseSqlServer(backofficeProjectionsConnectionString, sqlServerOptions => { sqlServerOptions.EnableRetryOnFailure(); sqlServerOptions.MigrationsHistoryTable(MigrationTables.Producer, Schema.Producer); diff --git a/src/PostalRegistry.Producer/appsettings.json b/src/PostalRegistry.Producer/appsettings.json index ee4e3a72..54b54fe6 100644 --- a/src/PostalRegistry.Producer/appsettings.json +++ b/src/PostalRegistry.Producer/appsettings.json @@ -7,12 +7,6 @@ "BaseUrl": "https://api.staging-basisregisters.vlaanderen/", - "DataDog": { - "Enabled": false, - "Debug": false, - "ServiceName": "postal-registry-producer-dev" - }, - "Kafka": { "BootstrapServers": "localhost:29092/" }, diff --git a/src/PostalRegistry.Producer/paket.references b/src/PostalRegistry.Producer/paket.references index 05131826..67461e84 100644 --- a/src/PostalRegistry.Producer/paket.references +++ b/src/PostalRegistry.Producer/paket.references @@ -1,7 +1,6 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.Api Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.GrAr.Contracts Be.Vlaanderen.BasisRegisters.MessageHandling.Kafka.Producer Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer @@ -12,5 +11,8 @@ Microsoft.Extensions.DependencyInjection AspNetCore.HealthChecks.SqlServer +Datadog.Trace +Datadog.Trace.Bundle + SourceLink.Embed.AllSourceFiles SourceLink.Copy.PdbFiles diff --git a/src/PostalRegistry.Projections.Extract/ExtractModule.cs b/src/PostalRegistry.Projections.Extract/ExtractModule.cs index ac9a2996..983700b1 100755 --- a/src/PostalRegistry.Projections.Extract/ExtractModule.cs +++ b/src/PostalRegistry.Projections.Extract/ExtractModule.cs @@ -2,10 +2,8 @@ namespace PostalRegistry.Projections.Extract { using System; using Autofac; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql.EntityFrameworkCore; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer.MigrationExtensions; using Infrastructure; - using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -24,7 +22,7 @@ public ExtractModule( var hasConnectionString = !string.IsNullOrWhiteSpace(connectionString); if (hasConnectionString) - RunOnSqlServer(configuration, services, loggerFactory, connectionString, enableRetry); + RunOnSqlServer(services, loggerFactory, connectionString, enableRetry); else RunInMemoryDb(services, loggerFactory, logger); @@ -37,19 +35,16 @@ public ExtractModule( nameof(ExtractContext), Schema.Extract, MigrationTables.Extract); } - private static void RunOnSqlServer(IConfiguration configuration, + private static void RunOnSqlServer( IServiceCollection services, ILoggerFactory loggerFactory, string backofficeProjectionsConnectionString, bool enableRetry) { services - .AddScoped(s => new TraceDbConnection( - new SqlConnection(backofficeProjectionsConnectionString), - configuration["DataDog:ServiceName"])) .AddDbContext((provider, options) => options .UseLoggerFactory(loggerFactory) - .UseSqlServer(provider.GetRequiredService>(), sqlServerOptions => + .UseSqlServer(backofficeProjectionsConnectionString, sqlServerOptions => { if (enableRetry) sqlServerOptions.EnableRetryOnFailure(); diff --git a/src/PostalRegistry.Projections.Extract/paket.references b/src/PostalRegistry.Projections.Extract/paket.references index 3fe9525d..2313df78 100644 --- a/src/PostalRegistry.Projections.Extract/paket.references +++ b/src/PostalRegistry.Projections.Extract/paket.references @@ -1,6 +1,5 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac Be.Vlaanderen.Basisregisters.Shaperon diff --git a/src/PostalRegistry.Projections.Integration/paket.references b/src/PostalRegistry.Projections.Integration/paket.references index 0b4c6c3d..fbd0cd2e 100644 --- a/src/PostalRegistry.Projections.Integration/paket.references +++ b/src/PostalRegistry.Projections.Integration/paket.references @@ -1,6 +1,5 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.Npgsql Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac diff --git a/src/PostalRegistry.Projections.Legacy/LegacyModule.cs b/src/PostalRegistry.Projections.Legacy/LegacyModule.cs index dfe3eb52..16ad1632 100755 --- a/src/PostalRegistry.Projections.Legacy/LegacyModule.cs +++ b/src/PostalRegistry.Projections.Legacy/LegacyModule.cs @@ -1,10 +1,7 @@ namespace PostalRegistry.Projections.Legacy { using System; - using Microsoft.Data.SqlClient; using Autofac; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql.EntityFrameworkCore; - using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.MigrationExtensions; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer.MigrationExtensions; using Infrastructure; using Microsoft.EntityFrameworkCore; @@ -24,7 +21,7 @@ public LegacyModule( var hasConnectionString = !string.IsNullOrWhiteSpace(connectionString); if (hasConnectionString) - RunOnSqlServer(configuration, services, loggerFactory, connectionString); + RunOnSqlServer(services, loggerFactory, connectionString); else RunInMemoryDb(services, loggerFactory, logger); @@ -38,18 +35,14 @@ public LegacyModule( } private static void RunOnSqlServer( - IConfiguration configuration, IServiceCollection services, ILoggerFactory loggerFactory, string backofficeProjectionsConnectionString) { services - .AddScoped(s => new TraceDbConnection( - new SqlConnection(backofficeProjectionsConnectionString), - configuration["DataDog:ServiceName"])) - .AddDbContext((provider, options) => options + .AddDbContext((_, options) => options .UseLoggerFactory(loggerFactory) - .UseSqlServer(provider.GetRequiredService>(), sqlServerOptions => + .UseSqlServer(backofficeProjectionsConnectionString, sqlServerOptions => { sqlServerOptions.EnableRetryOnFailure(); sqlServerOptions.MigrationsHistoryTable(MigrationTables.Legacy, Schema.Legacy); diff --git a/src/PostalRegistry.Projections.Legacy/paket.references b/src/PostalRegistry.Projections.Legacy/paket.references index 500d1d06..4d41ce23 100755 --- a/src/PostalRegistry.Projections.Legacy/paket.references +++ b/src/PostalRegistry.Projections.Legacy/paket.references @@ -1,7 +1,6 @@ Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.AggregateSource.SqlStreamStore Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac diff --git a/src/PostalRegistry.Projections.Syndication/Dockerfile b/src/PostalRegistry.Projections.Syndication/Dockerfile index 68c70dc1..4d963d66 100644 --- a/src/PostalRegistry.Projections.Syndication/Dockerfile +++ b/src/PostalRegistry.Projections.Syndication/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -14,6 +14,14 @@ RUN apt-get update && \ apt-get install curl jq -y && \ chmod +x ./init.sh +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh + # switch to created user USER app diff --git a/src/PostalRegistry.Projections.Syndication/SyndicationModule.cs b/src/PostalRegistry.Projections.Syndication/SyndicationModule.cs index 0a968bc4..68daa8b1 100755 --- a/src/PostalRegistry.Projections.Syndication/SyndicationModule.cs +++ b/src/PostalRegistry.Projections.Syndication/SyndicationModule.cs @@ -3,9 +3,6 @@ namespace PostalRegistry.Projections.Syndication.Modules using System; using Microsoft.Data.SqlClient; using System.Net.Http; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Http; - using Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql.EntityFrameworkCore; - using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.MigrationExtensions; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Syndication; using Autofac; using Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer.MigrationExtensions; @@ -29,7 +26,7 @@ public SyndicationModule( var hasConnectionString = !string.IsNullOrWhiteSpace(connectionString); if (hasConnectionString) - RunOnSqlServer(configuration, services, loggerFactory, connectionString); + RunOnSqlServer(services, loggerFactory, connectionString); else RunInMemoryDb(services, loggerFactory, logger); @@ -37,18 +34,14 @@ public SyndicationModule( } private static void RunOnSqlServer( - IConfiguration configuration, IServiceCollection services, ILoggerFactory loggerFactory, string backofficeProjectionsConnectionString) { services - .AddScoped(s => new TraceDbConnection( - new SqlConnection(backofficeProjectionsConnectionString), - configuration["DataDog:ServiceName"])) - .AddDbContext((provider, options) => options + .AddDbContext((_, options) => options .UseLoggerFactory(loggerFactory) - .UseSqlServer(provider.GetRequiredService>(), sqlServerOptions => + .UseSqlServer(backofficeProjectionsConnectionString, sqlServerOptions => { sqlServerOptions.EnableRetryOnFailure(); sqlServerOptions.MigrationsHistoryTable(MigrationTables.Syndication, Schema.Syndication); @@ -75,9 +68,6 @@ private static void RegisterHttpClient(IConfiguration configuration, IServiceCol .AddHttpClient( RegistryAtomFeedReader.HttpClientName, client => { client.DefaultRequestHeaders.Add("Accept", "application/atom+xml"); }) - .ConfigurePrimaryHttpMessageHandler(c => new TraceHttpMessageHandler( - new HttpClientHandler(), - configuration["DataDog:ServiceName"])) .AddTransientHttpErrorPolicy(policyBuilder => policyBuilder .WaitAndRetryAsync( 5, diff --git a/src/PostalRegistry.Projections.Syndication/appsettings.json b/src/PostalRegistry.Projections.Syndication/appsettings.json index c930e0fd..4c37e720 100755 --- a/src/PostalRegistry.Projections.Syndication/appsettings.json +++ b/src/PostalRegistry.Projections.Syndication/appsettings.json @@ -3,14 +3,9 @@ "SyndicationProjections": "Server=.;Database=postalregistry-dev;Trusted_Connection=True;", "SyndicationProjectionsAdmin": "Server=.;Database=postalregistry-dev;Trusted_Connection=True;" }, - - "DataDog": { - "Enabled": false, - "Debug": false - }, - + "DistributedLock": { - "Region": "eu-west-1", + "Region": "eu-west-1", "TableName": "__DistributedLocks__", "LeasePeriodInMinutes": 5, "ThrowOnFailedRenew": true, diff --git a/src/PostalRegistry.Projections.Syndication/paket.references b/src/PostalRegistry.Projections.Syndication/paket.references index 7b055627..fb98ab2b 100755 --- a/src/PostalRegistry.Projections.Syndication/paket.references +++ b/src/PostalRegistry.Projections.Syndication/paket.references @@ -20,9 +20,11 @@ Microsoft.Extensions.Http.Polly Microsoft.SyndicationFeed.ReaderWriter +Datadog.Trace +Datadog.Trace.Bundle + Be.Vlaanderen.Basisregisters.AggregateSource Be.Vlaanderen.Basisregisters.EventHandling.Autofac -Be.Vlaanderen.Basisregisters.DataDog.Tracing.Sql Be.Vlaanderen.Basisregisters.ProjectionHandling.Runner.SqlServer Be.Vlaanderen.Basisregisters.ProjectionHandling.SqlStreamStore.Autofac Be.Vlaanderen.Basisregisters.ProjectionHandling.Syndication diff --git a/src/PostalRegistry.Projector/Dockerfile b/src/PostalRegistry.Projector/Dockerfile index 2261fece..40e9087a 100644 --- a/src/PostalRegistry.Projector/Dockerfile +++ b/src/PostalRegistry.Projector/Dockerfile @@ -4,7 +4,7 @@ FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-bookworm-slim-amd64 RUN mkdir /app && chown -R app:app /app WORKDIR /app -LABEL maintainer "Digitaal Vlaanderen " +LABEL maintainer="Digitaal Vlaanderen " LABEL registry="postal-registry" COPY / /app @@ -16,6 +16,13 @@ RUN apt-get update && \ EXPOSE 3006/tcp ENV ASPNETCORE_URLS http://*:3006 +ENV CORECLR_ENABLE_PROFILING=1 +ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} +ENV CORECLR_PROFILER_PATH=/app/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so +ENV DD_DOTNET_TRACER_HOME=/app/datadog + +# Run the createLogPath script on Linux to ensure the automatic instrumentation logs are generated without permission issues +RUN /app/datadog/createLogPath.sh # switch to created user USER app diff --git a/src/PostalRegistry.Projector/paket.references b/src/PostalRegistry.Projector/paket.references index c18e667b..d400bfe5 100644 --- a/src/PostalRegistry.Projector/paket.references +++ b/src/PostalRegistry.Projector/paket.references @@ -10,6 +10,9 @@ Npgsql.EntityFrameworkCore.PostgreSQL AspNetCore.HealthChecks.SqlServer AspNetCore.HealthChecks.NpgSql +Datadog.Trace +Datadog.Trace.Bundle + NodaTime Dapper