Skip to content

Commit a3170e5

Browse files
committed
Refactory open telemetry
1 parent 7688a62 commit a3170e5

File tree

9 files changed

+157
-12
lines changed

9 files changed

+157
-12
lines changed

src/Genocs.Core.Demo.Worker/Genocs.Core.Demo.Worker.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
<ItemGroup>
1919
<PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="7.3.1" />
20-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0" />
21-
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.4.0" />
2220
<PackageReference Include="Serilog.AspNetCore" Version="6.1.0" />
2321
<PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="4.0.0" />
2422
</ItemGroup>

src/Genocs.Logging/Extensions.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ namespace Genocs.Logging;
1818

1919
public static class Extensions
2020
{
21-
private const string LoggerSectionName = "logger";
2221
internal static LoggingLevelSwitch LoggingLevelSwitch = new();
2322

2423
public static IHostBuilder UseLogging(this IHostBuilder hostBuilder,
@@ -31,7 +30,7 @@ public static IHostBuilder UseLogging(this IHostBuilder hostBuilder,
3130
{
3231
if (string.IsNullOrWhiteSpace(loggerSectionName))
3332
{
34-
loggerSectionName = LoggerSectionName;
33+
loggerSectionName = LoggerSettings.Position;
3534
}
3635

3736
if (string.IsNullOrWhiteSpace(appSectionName))
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
namespace Genocs.Logging.Options;
22

3+
/// <summary>
4+
/// Console Settings
5+
/// </summary>
36
public class ConsoleSettings
47
{
8+
/// <summary>
9+
/// It define whether the console logger and tracing are enabled or not
10+
/// </summary>
511
public bool Enabled { get; set; }
612
}

src/Genocs.Logging/Options/LoggerSettings.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
namespace Genocs.Logging.Options;
22

3+
4+
/// <summary>
5+
/// Logger Settings
6+
/// </summary>
37
public class LoggerSettings
48
{
9+
/// <summary>
10+
/// Default section name
11+
/// </summary>
12+
public const string Position = "logger";
13+
514
public string? Level { get; set; }
15+
16+
/// <summary>
17+
/// The Console Logging and tracing Settings
18+
/// </summary>
619
public ConsoleSettings? Console { get; set; }
720
public LocalFileSettings? File { get; set; }
821
public ElkSettings? Elk { get; set; }

src/Genocs.Monitoring/Genocs.Monitoring.csproj

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netstandard2.1</TargetFramework>
4+
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<PackageId>Genocs.Monitoring</PackageId>
@@ -42,12 +42,25 @@
4242
</None>
4343
</ItemGroup>
4444

45+
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
46+
<ProjectReference Include="..\Genocs.Core\Genocs.Core.csproj" />
47+
<ProjectReference Include="..\Genocs.Logging\Genocs.Logging.csproj" />
48+
<ProjectReference Include="..\Genocs.Tracing\Genocs.Tracing.csproj" />
49+
50+
</ItemGroup>
51+
52+
<ItemGroup Condition="'$(Configuration)' == 'Release'">
53+
<PackageReference Include="Genocs.Core" Version="5.0.0-preview.4.*" />
54+
<PackageReference Include="Genocs.Logging" Version="5.0.0-preview.4.*" />
55+
<PackageReference Include="Genocs.Tracing" Version="5.0.0-preview.4.*" />
56+
</ItemGroup>
57+
4558
<ItemGroup>
4659
<PackageReference Include="Azure.Monitor.OpenTelemetry.Exporter" Version="1.0.0-beta.9" />
4760
<PackageReference Include="MongoDB.Driver.Core.Extensions.OpenTelemetry" Version="1.0.0" />
48-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0" />
49-
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.4.0" />
50-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.4.0" />
61+
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.5.1" />
62+
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.5.1" />
63+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.5.1" />
5164
</ItemGroup>
5265

5366
</Project>

src/Genocs.Tracing/Extensions.cs

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
using Azure.Monitor.OpenTelemetry.Exporter;
2+
using Genocs.Common.Options;
3+
using Genocs.Core.Builders;
4+
using Genocs.Logging.Options;
5+
using Genocs.Tracing.Jaeger.Options;
6+
using Microsoft.Extensions.DependencyInjection;
7+
using OpenTelemetry;
8+
using OpenTelemetry.Resources;
9+
using OpenTelemetry.Trace;
10+
11+
namespace Genocs.Tracing;
12+
13+
/// <summary>
14+
/// The Open Telemetry and Tracing
15+
/// </summary>
16+
public static class Extensions
17+
{
18+
19+
/// <summary>
20+
/// Custom settings for OpenTelemetry
21+
/// </summary>
22+
/// <param name="builder">The genocs builder</param>
23+
/// <returns>the builder</returns>
24+
public static IGenocsBuilder AddOpenTelemetry(this IGenocsBuilder builder)
25+
{
26+
27+
var appOptions = builder.GetOptions<AppSettings>(AppSettings.Position);
28+
29+
// No OpenTelemetryTracing in case of missing ServiceName
30+
if (string.IsNullOrWhiteSpace(appOptions.Service))
31+
{
32+
return builder;
33+
}
34+
35+
var services = builder.Services;
36+
37+
38+
// Set Custom Open telemetry
39+
services.AddOpenTelemetry().WithTracing(x =>
40+
{
41+
TracerProviderBuilder provider = x.SetResourceBuilder(ResourceBuilder.CreateDefault()
42+
.AddService(appOptions.Service)
43+
.AddTelemetrySdk()
44+
.AddEnvironmentVariableDetector())
45+
.AddSource("*");
46+
47+
// Remove comment below to enable tracing on console
48+
// you should add MongoDB.Driver.Core.Extensions.OpenTelemetry NuGet package
49+
provider.AddMongoDBInstrumentation();
50+
51+
52+
var loggerOptions = builder.GetOptions<LoggerSettings>(LoggerSettings.Position);
53+
54+
55+
// Check for Azure ApplicationInsights
56+
if (loggerOptions.Console != null && loggerOptions.Console.Enabled)
57+
{
58+
// OpenTelemetry.Exporter.Console NuGet package
59+
provider.AddConsoleExporter();
60+
}
61+
62+
// Check for Azure ApplicationInsights
63+
if (loggerOptions.Azure != null && loggerOptions.Azure.Enabled)
64+
{
65+
provider.AddAzureMonitorTraceExporter(o =>
66+
{
67+
o.ConnectionString = loggerOptions.Azure.ConnectionString;
68+
});
69+
}
70+
71+
var jaegerOptions = builder.GetOptions<JaegerSettings>(JaegerSettings.Position);
72+
73+
if (jaegerOptions != null && jaegerOptions.Enabled)
74+
{
75+
provider.AddJaegerExporter(o =>
76+
{
77+
o.AgentHost = jaegerOptions.UdpHost;
78+
o.AgentPort = jaegerOptions.UdpPort;
79+
o.MaxPayloadSizeInBytes = jaegerOptions.MaxPacketSize;
80+
o.ExportProcessorType = ExportProcessorType.Batch;
81+
o.BatchExportProcessorOptions = new BatchExportProcessorOptions<System.Diagnostics.Activity>
82+
{
83+
MaxQueueSize = 2048,
84+
ScheduledDelayMilliseconds = 5000,
85+
ExporterTimeoutMilliseconds = 30000,
86+
MaxExportBatchSize = 512,
87+
};
88+
});
89+
}
90+
91+
});
92+
93+
return builder;
94+
}
95+
}

src/Genocs.Tracing/Genocs.Tracing.csproj

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,27 @@
4545

4646
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
4747
<ProjectReference Include="..\Genocs.Core\Genocs.Core.csproj" />
48+
<ProjectReference Include="..\Genocs.Logging\Genocs.Logging.csproj" />
4849
<ProjectReference Include="..\Genocs.MessageBrokers.RabbitMQ\Genocs.MessageBrokers.RabbitMQ.csproj" />
4950
</ItemGroup>
5051

5152
<ItemGroup Condition="'$(Configuration)' == 'Release'">
5253
<PackageReference Include="Genocs.Core" Version="5.0.0-preview.4.*" />
54+
<PackageReference Include="Genocs.Logging" Version="5.0.0-preview.4.*" />
5355
<PackageReference Include="Genocs.MessageBrokers.RabbitMQ" Version="5.0.0-preview.4.*" />
54-
5556
</ItemGroup>
5657

5758
<ItemGroup>
5859
<PackageReference Include="Jaeger" Version="1.0.3" />
5960
<PackageReference Include="OpenTracing.Contrib.NetCore" Version="0.9.0" />
6061
</ItemGroup>
6162

63+
<ItemGroup>
64+
<PackageReference Include="Azure.Monitor.OpenTelemetry.Exporter" Version="1.0.0-beta.14" />
65+
<PackageReference Include="MongoDB.Driver.Core.Extensions.OpenTelemetry" Version="1.0.0" />
66+
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.5.1" />
67+
<PackageReference Include="OpenTelemetry.Exporter.Jaeger" Version="1.5.1" />
68+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.5.1" />
69+
</ItemGroup>
70+
6271
</Project>

src/Genocs.Tracing/Jaeger/Options/JaegerSettings.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
namespace Genocs.Tracing.Jaeger.Options;
22

3+
/// <summary>
4+
/// Jaeger Settings
5+
/// </summary>
36
public class JaegerSettings
47
{
8+
/// <summary>
9+
/// Default section name
10+
/// </summary>
11+
public const string Position = "jaeger";
12+
13+
/// <summary>
14+
///
15+
/// </summary>
516
public bool Enabled { get; set; }
617
public string? ServiceName { get; set; }
718
public string? UdpHost { get; set; }

src/apps/identity/Genocs.Identities.Application/Extensions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
using Genocs.Metrics.AppMetrics;
2323
using Genocs.Persistence.MongoDb.Extensions;
2424
using Genocs.Persistence.Redis;
25-
using Genocs.Tracing.Jaeger;
25+
using Genocs.Tracing;
2626
using Genocs.WebApi;
2727
using Genocs.WebApi.CQRS;
2828
using Genocs.WebApi.Swagger;
@@ -66,7 +66,8 @@ public static IGenocsBuilder AddCore(this IGenocsBuilder builder)
6666
.AddMessageOutbox(o => o.AddMongo())
6767
.AddMongo()
6868
.AddRedis()
69-
.AddJaeger()
69+
.AddOpenTelemetry()
70+
//.AddJaeger()
7071
.AddMetrics()
7172
.AddMongoRepository<RefreshTokenDocument, Guid>("refreshTokens")
7273
.AddMongoRepository<UserDocument, Guid>("users")
@@ -89,7 +90,7 @@ public static IApplicationBuilder UseCore(this IApplicationBuilder app)
8990
{
9091
app.UseMiddleware<LogContextMiddleware>()
9192
.UseErrorHandler()
92-
.UseJaeger()
93+
//.UseJaeger()
9394
.UseSwaggerDocs()
9495
.UseGenocs()
9596
.UseAccessTokenValidator()

0 commit comments

Comments
 (0)