Skip to content

Commit da7333b

Browse files
OpenTelemetry support for Azure Monitor (#802)
* OpenTelemetry support for Azure Monitor * Support versions with string prefixes (such as "8.0.0-preview.3.23174.8" and "1.5.0-alpha.2") on ProjectHealthTest. * Add AWSInstrumentation for AWSOtel. Update dependency of GxNetCoreStartup proyect. * Add UnitTest for error Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=7.0.0.0 It happens when <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.0" /> is removed from GxNetCoreStartup. * use Azure.Monitor.OpenTelemetry.AspNetCore because it automatically collects telemetry data --------- Co-authored-by: cmurialdo <cmurialdo@genexus.com>
1 parent ba9c5eb commit da7333b

File tree

18 files changed

+389
-46
lines changed

18 files changed

+389
-46
lines changed

dotnet/DotNetStandardClasses.sln

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GeneXus.OpenTelemetry", "sr
226226
EndProject
227227
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DynService.CosmosDB", "src\dotnetcore\DynService\Cosmos\DynService.CosmosDB.csproj", "{52DC6C43-58ED-4310-996B-06E95105F848}"
228228
EndProject
229+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GeneXus.OpenTelemetry.Azure.AppInsights", "src\dotnetcore\Providers\OpenTelemetry\OpenTelemetryAzureMonitor\GeneXus.OpenTelemetry.Azure.AppInsights.csproj", "{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C}"
230+
EndProject
231+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetCoreOpenTelemetryTest", "test\DotNetCoreOpenTelemetryTest\DotNetCoreOpenTelemetryTest.csproj", "{B040A39A-53DC-4514-BE7F-A275FE1355FF}"
232+
ProjectSection(ProjectDependencies) = postProject
233+
{5937CEC2-5C16-4650-B0E6-78CD34357384} = {5937CEC2-5C16-4650-B0E6-78CD34357384}
234+
EndProjectSection
235+
EndProject
236+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "test\TestApp\TestApp.csproj", "{5937CEC2-5C16-4650-B0E6-78CD34357384}"
237+
EndProject
229238
Global
230239
GlobalSection(SolutionConfigurationPlatforms) = preSolution
231240
Debug|Any CPU = Debug|Any CPU
@@ -548,6 +557,18 @@ Global
548557
{52DC6C43-58ED-4310-996B-06E95105F848}.Debug|Any CPU.Build.0 = Debug|Any CPU
549558
{52DC6C43-58ED-4310-996B-06E95105F848}.Release|Any CPU.ActiveCfg = Release|Any CPU
550559
{52DC6C43-58ED-4310-996B-06E95105F848}.Release|Any CPU.Build.0 = Release|Any CPU
560+
{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
561+
{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
562+
{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
563+
{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C}.Release|Any CPU.Build.0 = Release|Any CPU
564+
{B040A39A-53DC-4514-BE7F-A275FE1355FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
565+
{B040A39A-53DC-4514-BE7F-A275FE1355FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
566+
{B040A39A-53DC-4514-BE7F-A275FE1355FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
567+
{B040A39A-53DC-4514-BE7F-A275FE1355FF}.Release|Any CPU.Build.0 = Release|Any CPU
568+
{5937CEC2-5C16-4650-B0E6-78CD34357384}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
569+
{5937CEC2-5C16-4650-B0E6-78CD34357384}.Debug|Any CPU.Build.0 = Debug|Any CPU
570+
{5937CEC2-5C16-4650-B0E6-78CD34357384}.Release|Any CPU.ActiveCfg = Release|Any CPU
571+
{5937CEC2-5C16-4650-B0E6-78CD34357384}.Release|Any CPU.Build.0 = Release|Any CPU
551572
EndGlobalSection
552573
GlobalSection(SolutionProperties) = preSolution
553574
HideSolutionNode = FALSE
@@ -657,6 +678,9 @@ Global
657678
{B5A9DEA7-67EC-49E4-924E-4729C34286EC} = {BBE020D4-C0FF-41A9-9EB1-D1EE12CC4BB8}
658679
{00B1FA38-7D0B-47E4-860C-23490249A4D6} = {BBE020D4-C0FF-41A9-9EB1-D1EE12CC4BB8}
659680
{52DC6C43-58ED-4310-996B-06E95105F848} = {79C9ECC6-2935-4C43-BF32-94698547F584}
681+
{7AD4B13D-FA17-489B-9721-C00BCB6A3F2C} = {BBE020D4-C0FF-41A9-9EB1-D1EE12CC4BB8}
682+
{B040A39A-53DC-4514-BE7F-A275FE1355FF} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
683+
{5937CEC2-5C16-4650-B0E6-78CD34357384} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
660684
EndGlobalSection
661685
GlobalSection(ExtensibilityGlobals) = postSolution
662686
SolutionGuid = {E18684C9-7D76-45CD-BF24-E3944B7F174C}

dotnet/src/dotnetcore/GxNetCoreStartup/GxNetCoreStartup.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="3.1.3" />
1717
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.1.7" />
1818
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
19+
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.0" />
1920
</ItemGroup>
2021
<ItemGroup>
2122
<ProjectReference Include="..\GxClasses.Web\GxClasses.Web.csproj" />

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetry/GeneXus.OpenTelemetry.csproj

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

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -7,18 +7,16 @@
77
<AssemblyName>GeneXus.OpenTelemetry</AssemblyName>
88
<PackageTags>OpenTelemetry GeneXus DotNet </PackageTags>
99
<PackageId>GeneXus.OpenTelemetry.OpenTelemetry</PackageId>
10+
<NoWarn>NU1605</NoWarn>
1011
</PropertyGroup>
1112

1213
<ItemGroup>
13-
<PackageReference Include="OpenTelemetry.Api" Version="1.4.0-alpha.1" NoWarn="NU5104"/>
14-
<PackageReference Include="OpenTelemetry" Version="1.4.0-alpha.1" NoWarn="NU5104"/>
15-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0-alpha.1" NoWarn="NU5104"/>
16-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.4.0-alpha.1" NoWarn="NU5104" />
17-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.0.0-rc9.5" NoWarn="NU5104" />
18-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9.5" NoWarn="NU5104"/>
19-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9.5" NoWarn="NU5104"/>
20-
<PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.0.0-rc9.5" NoWarn="NU5104"/>
21-
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
14+
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0" />
15+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.4.0" />
16+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.4.0" />
17+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9.14" NoWarn="NU5104" />
18+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9.14" NoWarn="NU5104" />
19+
<PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.0.0-rc9.14" NoWarn="NU5104" />
2220
</ItemGroup>
2321

2422
<ItemGroup>

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetry/OpenTelemetryProvider.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@ public OpenTelemetryProvider(GXService s)
1313

1414
public bool InstrumentAspNetCoreApplication(IServiceCollection services)
1515
{
16-
17-
services.AddOpenTelemetryTracing(tracerProviderBuilder =>
16+
services.AddOpenTelemetry().WithTracing(tracerProviderBuilder =>
1817
{
1918
tracerProviderBuilder
20-
.AddOtlpExporter()
21-
.AddGxAspNetInstrumentation();
19+
.AddOtlpExporter()
20+
.AddGxAspNetInstrumentation();
2221
});
23-
2422
return true;
2523
}
2624
}

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetryAWSOtel/AWSOtelProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public bool InstrumentAspNetCoreApplication(IServiceCollection _)
2222

2323
Sdk.CreateTracerProviderBuilder()
2424
.AddXRayTraceId() // for generating AWS X-Ray compliant trace IDs
25+
.AddAWSInstrumentation()
2526
.AddOtlpExporter(options =>
2627
{
2728
if (!string.IsNullOrEmpty(oltpEndpoint))

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetryAWSOtel/GeneXus.OpenTelemetry.AWS.AspNet.csproj

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

33
<PropertyGroup>
44
<TargetFrameworks>net6.0</TargetFrameworks>
@@ -7,21 +7,13 @@
77
<SignAssembly>false</SignAssembly>
88
<AssemblyName>GeneXus.OpenTelemetry.AWS.AspNet</AssemblyName>
99
<PackageTags>AWSOtel OpenDistro OpenTelemetry GeneXus</PackageTags>
10-
<PackageId>GeneXus.OpenTelemetry.AWS.AspNet</PackageId>
10+
<PackageId>GeneXus.OpenTelemetry.AWS.AspNet</PackageId>
11+
<NoWarn>NU1605</NoWarn>
1112
</PropertyGroup>
1213

1314
<ItemGroup>
1415
<PackageReference Include="OpenTelemetry.Contrib.Extensions.AWSXRay" Version="1.2.0" />
1516
<PackageReference Include="OpenTelemetry.Contrib.Instrumentation.AWS" Version="1.0.2" />
16-
<PackageReference Include="OpenTelemetry.Api" Version="1.4.0-alpha.1" NoWarn="NU5104" />
17-
<PackageReference Include="OpenTelemetry" Version="1.4.0-alpha.1" NoWarn="NU5104" />
18-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0-alpha.1" NoWarn="NU5104" />
19-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.4.0-alpha.1" NoWarn="NU5104" />
20-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.0.0-rc9.5" NoWarn="NU5104" />
21-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9.5" NoWarn="NU5104" />
22-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9.5" NoWarn="NU5104" />
23-
<PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.0.0-rc9.5" NoWarn="NU5104" />
24-
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
2517
</ItemGroup>
2618

2719
<ItemGroup>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System;
2+
using Azure.Monitor.OpenTelemetry.AspNetCore;
3+
using GeneXus.Services;
4+
using GeneXus.Services.OpenTelemetry;
5+
using log4net;
6+
using Microsoft.Extensions.DependencyInjection;
7+
using Microsoft.Extensions.Logging;
8+
9+
namespace GeneXus.OpenTelemetry.Azure
10+
{
11+
public class AzureAppInsights : IOpenTelemetryProvider
12+
{
13+
private static readonly ILog log = LogManager.GetLogger(typeof(AzureAppInsights));
14+
private const string APPLICATIONINSIGHTS_CONNECTION_STRING = "APPLICATIONINSIGHTS_CONNECTION_STRING";
15+
16+
public AzureAppInsights(GXService s)
17+
{
18+
}
19+
20+
public bool InstrumentAspNetCoreApplication(IServiceCollection services)
21+
{
22+
string oltpEndpoint = Environment.GetEnvironmentVariable(APPLICATIONINSIGHTS_CONNECTION_STRING);
23+
24+
if (!string.IsNullOrEmpty(oltpEndpoint))
25+
{
26+
services.AddOpenTelemetry()
27+
.UseAzureMonitor( o =>
28+
{
29+
o.ConnectionString = oltpEndpoint;
30+
});
31+
32+
return true;
33+
}
34+
else
35+
{
36+
log.Warn("OpenTelemetry Azure Monitor was not initialized due to missing 'APPLICATIONINSIGHTS_CONNECTION_STRING' Environment Variable");
37+
return false;
38+
}
39+
}
40+
}
41+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFrameworks>net6.0</TargetFrameworks>
4+
<DefineConstants>NETCORE;</DefineConstants>
5+
<AppDesignerFolder>Properties</AppDesignerFolder>
6+
<SignAssembly>false</SignAssembly>
7+
<AssemblyName>GeneXus.OpenTelemetry.Azure.AppInsights</AssemblyName>
8+
<PackageTags>Azure Application Insights OpenTelemetry GeneXus</PackageTags>
9+
<PackageId>GeneXus.OpenTelemetry.Azure.AppInsights</PackageId>
10+
<NoWarn>NU1605</NoWarn>
11+
</PropertyGroup>
12+
<ItemGroup>
13+
<PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.0.0-beta.4" NoWarn="NU5104"/>
14+
</ItemGroup>
15+
<ItemGroup>
16+
<ProjectReference Include="..\..\..\GxClasses\GxClasses.csproj" />
17+
<ProjectReference Include="..\OpenTelemetry\GeneXus.OpenTelemetry.csproj" />
18+
</ItemGroup>
19+
</Project>

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetryLightStep/GeneXus.OpenTelemetry.Lightstep.AspNet.csproj

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

33
<PropertyGroup>
44
<TargetFrameworks>net6.0</TargetFrameworks>
@@ -7,21 +7,10 @@
77
<SignAssembly>false</SignAssembly>
88
<AssemblyName>GeneXus.OpenTelemetry.Lightstep.AspNet</AssemblyName>
99
<PackageTags>Lightstep OpenTelemetry GeneXus DotNet </PackageTags>
10-
<PackageId>GeneXus.OpenTelemetry.Lightstep.AspNet</PackageId>
10+
<PackageId>GeneXus.OpenTelemetry.Lightstep.AspNet</PackageId>
11+
<NoWarn>NU1605</NoWarn>
1112
</PropertyGroup>
1213

13-
<ItemGroup>
14-
<PackageReference Include="OpenTelemetry.Api" Version="1.4.0-alpha.1" NoWarn="NU5104" />
15-
<PackageReference Include="OpenTelemetry" Version="1.4.0-alpha.1" NoWarn="NU5104" />
16-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.4.0-alpha.1" NoWarn="NU5104" />
17-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.4.0-alpha.1" NoWarn="NU5104" />
18-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.0.0-rc9.5" NoWarn="NU5104" />
19-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9.5" NoWarn="NU5104" />
20-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9.5" NoWarn="NU5104" />
21-
<PackageReference Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.0.0-rc9.5" NoWarn="NU5104" />
22-
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="6.0.0" />
23-
</ItemGroup>
24-
2514
<ItemGroup>
2615
<ProjectReference Include="..\..\..\GxClasses\GxClasses.csproj" />
2716
<ProjectReference Include="..\OpenTelemetry\GeneXus.OpenTelemetry.csproj" />

dotnet/src/dotnetcore/Providers/OpenTelemetry/OpenTelemetryLightStep/LightstepProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ public bool InstrumentAspNetCoreApplication(IServiceCollection services)
3131
return false;
3232
}
3333

34-
services.AddOpenTelemetryTracing(tracerProviderBuilder =>
35-
{
34+
services.AddOpenTelemetry().WithTracing(tracerProviderBuilder =>
35+
{
3636
tracerProviderBuilder
3737
.AddOtlpExporter(opt =>
3838
{

0 commit comments

Comments
 (0)