Skip to content

Commit

Permalink
feat: or-2583 use configuration object
Browse files Browse the repository at this point in the history
  • Loading branch information
koenmetsu committed Jan 27, 2025
1 parent 5d3c8ba commit 36538d9
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ private static async Task FunctionHandler(SQSEvent @event, ILambdaContext contex
var eventConflictResolver = new EventConflictResolver(Array.Empty<IEventPreConflictResolutionStrategy>(),
Array.Empty<IEventPostConflictResolutionStrategy>());

_openTelemetrySetup = new OpenTelemetrySetup(context.Logger);
_openTelemetrySetup = new OpenTelemetrySetup(context.Logger, configuration);

var loggerFactory = LoggerFactory.Create(builder =>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
namespace AssociationRegistry.KboMutations.SyncLambda;

using Amazon.Lambda.Core;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Npgsql;
using OpenTelemetry;
Expand All @@ -14,6 +15,7 @@ namespace AssociationRegistry.KboMutations.SyncLambda;
public class OpenTelemetrySetup : IDisposable
{
private readonly OpenTelemetryResources _resources;
private OtlpConfigs _otlpConfigs;
private const string OtelAuthHeader = "OTEL_AUTH_HEADER";
private const string MetricsUri = "OTLP_METRICS_URI";
private const string TracingUri = "OTLP_TRACING_URI";
Expand All @@ -23,8 +25,11 @@ public class OpenTelemetrySetup : IDisposable

public const string MeterName = "kbomutations.sync.lambda.metrics";

public OpenTelemetrySetup(ILambdaLogger contextLogger)
public OpenTelemetrySetup(ILambdaLogger contextLogger, IConfigurationRoot configuration)
{
_otlpConfigs = new OtlpConfigs();
configuration.Bind(_otlpConfigs.Configs);

_resources = GetResources(contextLogger);

MeterProvider = SetupMeter();
Expand All @@ -33,8 +38,6 @@ public OpenTelemetrySetup(ILambdaLogger contextLogger)

public MeterProvider SetupMeter()
{
var otlpMetricsUri = Environment.GetEnvironmentVariable(MetricsUri);

var builder = Sdk.CreateMeterProviderBuilder()
.ConfigureResource(_resources.ConfigureResourceBuilder)
.AddMeter(MeterName)
Expand All @@ -43,57 +46,59 @@ public MeterProvider SetupMeter()
.AddRuntimeInstrumentation()
.AddHttpClientInstrumentation();

if (!string.IsNullOrEmpty(otlpMetricsUri))
builder
.AddOtlpExporter(options =>
foreach (var otlpConfig in _otlpConfigs.Configs)
{
if (!string.IsNullOrEmpty(otlpConfig.Value.MetricsUri))
builder.AddOtlpExporter(options =>
{
options.Endpoint =
new Uri(otlpMetricsUri);

AddAuth(options);
new Uri(otlpConfig.Value.MetricsUri);
AddAuth(options, otlpConfig.Value.AuthHeader);
});
}

return builder.Build();
}

public TracerProvider SetUpTracing()
{
var otlpTracingUri = Environment.GetEnvironmentVariable(TracingUri);

var builder = Sdk.CreateTracerProviderBuilder()
.AddHttpClientInstrumentation()
.AddNpgsql()
.ConfigureResource(_resources.ConfigureResourceBuilder)
.AddConsoleExporter();

if (!string.IsNullOrEmpty(otlpTracingUri))
builder.AddOtlpExporter(options =>
{
options.Endpoint = new Uri(otlpTracingUri);
AddAuth(options);
});
foreach (var otlpConfig in _otlpConfigs.Configs)
{
if (!string.IsNullOrEmpty(otlpConfig.Value.TracingUri))
builder.AddOtlpExporter(options =>
{
options.Endpoint = new Uri(otlpConfig.Value.TracingUri);
AddAuth(options, otlpConfig.Value.AuthHeader);
});
}

return builder.Build();
}

public void SetUpLogging(ILoggingBuilder builder)
{
var otlpLogssUri = Environment.GetEnvironmentVariable(OtlpLogsUri);

builder.AddOpenTelemetry(options =>
{
var resourceBuilder = ResourceBuilder.CreateDefault();
_resources.ConfigureResourceBuilder(resourceBuilder);
options.SetResourceBuilder(resourceBuilder);

if (!string.IsNullOrEmpty(otlpLogssUri))

options.AddOtlpExporter(exporterOptions =>
{
exporterOptions.Endpoint = new Uri(otlpLogssUri);
foreach (var otlpConfig in _otlpConfigs.Configs)
{
if (!string.IsNullOrEmpty(otlpConfig.Value.LogsUri))
options.AddOtlpExporter(exporterOptions =>
{
exporterOptions.Endpoint = new Uri(otlpConfig.Value.LogsUri);

AddAuth(exporterOptions);
});
AddAuth(exporterOptions, otlpConfig.Value.AuthHeader);
});
}
});
}

Expand Down Expand Up @@ -137,10 +142,8 @@ public void Dispose()
TracerProvider.Dispose();
}

private void AddAuth(OtlpExporterOptions options)
private void AddAuth(OtlpExporterOptions options, string authHeader)
{
var authHeader = Environment.GetEnvironmentVariable(OtelAuthHeader);

if (!string.IsNullOrEmpty(authHeader))
options.Headers = $"Authorization={authHeader}";
}
Expand Down
13 changes: 13 additions & 0 deletions src/AssociationRegistry.KboMutations.SyncLambda/OtlpConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace AssociationRegistry.KboMutations.SyncLambda;

public class OtlpConfig
{
public string AuthHeader { get; set; }
public string MetricsUri { get; set; }
public string TracingUri { get; set; }
public string LogsUri { get; set; }
}
public class OtlpConfigs
{
public Dictionary<string, OtlpConfig> Configs { get; set; } = new();
}

0 comments on commit 36538d9

Please sign in to comment.