Skip to content

Commit 2e82366

Browse files
authored
feat: Add support for instrumenting Hangfire background jobs. (#3520)
1 parent a3623c4 commit 2e82366

15 files changed

Lines changed: 691 additions & 5 deletions

File tree

.github/workflows/all_solutions.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ jobs:
243243
"DistributedTracing",
244244
"Errors",
245245
"Grpc",
246+
"Hangfire",
246247
"HttpClientInstrumentation",
247248
"HybridHttpContextStorage",
248249
"InfiniteTracing",

FullAgent.sln

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 18
4-
VisualStudioVersion = 18.0.11205.157 d18.0
4+
VisualStudioVersion = 18.0.11205.157
55
MinimumVisualStudioVersion = 15.0.26228.04
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "src\Agent\NewRelic\Agent\Core\Core.csproj", "{D6E22195-EE69-4320-B08B-E68229FB69AB}"
77
ProjectSection(ProjectDependencies) = postProject
@@ -153,6 +153,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Home", "src\Agent\NewRelic\
153153
{4078E594-E738-48F7-A7ED-B208ADD04900} = {4078E594-E738-48F7-A7ED-B208ADD04900}
154154
{44434B8F-EE14-49B0-855D-6EA0B48048BF} = {44434B8F-EE14-49B0-855D-6EA0B48048BF}
155155
{4F5D77F3-B41A-44A7-AF10-2D5462CE0162} = {4F5D77F3-B41A-44A7-AF10-2D5462CE0162}
156+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030} = {5011E41D-F7CB-454B-A7D0-0C3C3E655030}
156157
{570429FD-C785-4673-82DF-643D06B6DC53} = {570429FD-C785-4673-82DF-643D06B6DC53}
157158
{5BBEEC11-B753-4631-BCDD-43BE73B5CCAC} = {5BBEEC11-B753-4631-BCDD-43BE73B5CCAC}
158159
{5D74E5C5-9BA3-423B-86F7-14C2D1A14661} = {5D74E5C5-9BA3-423B-86F7-14C2D1A14661}
@@ -234,6 +235,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureServiceBus", "src\Agen
234235
EndProject
235236
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HybridHttpContext", "src\Agent\NewRelic\Agent\Extensions\Providers\Storage\HybridHttpContext\HybridHttpContext.csproj", "{CE9B992B-A2A7-20F9-9EEB-AE699C6D77CC}"
236237
EndProject
238+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hangfire", "src\Agent\NewRelic\Agent\Extensions\Providers\Wrapper\Hangfire\Hangfire.csproj", "{5011E41D-F7CB-454B-A7D0-0C3C3E655030}"
237239
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssemblyModifier", "src\Agent\NewRelic\AssemblyModifier\AssemblyModifier.csproj", "{36C4B766-2A2F-CACB-CB91-0FC5C2E69773}"
238240
EndProject
239241
Global
@@ -490,6 +492,10 @@ Global
490492
{CE9B992B-A2A7-20F9-9EEB-AE699C6D77CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
491493
{CE9B992B-A2A7-20F9-9EEB-AE699C6D77CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
492494
{CE9B992B-A2A7-20F9-9EEB-AE699C6D77CC}.Release|Any CPU.Build.0 = Release|Any CPU
495+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
496+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030}.Debug|Any CPU.Build.0 = Debug|Any CPU
497+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030}.Release|Any CPU.ActiveCfg = Release|Any CPU
498+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030}.Release|Any CPU.Build.0 = Release|Any CPU
493499
{36C4B766-2A2F-CACB-CB91-0FC5C2E69773}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
494500
{36C4B766-2A2F-CACB-CB91-0FC5C2E69773}.Debug|Any CPU.Build.0 = Debug|Any CPU
495501
{36C4B766-2A2F-CACB-CB91-0FC5C2E69773}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -567,11 +573,12 @@ Global
567573
{A0F784BB-D66D-47E0-80F4-66CF8DAF697C} = {5E86E10A-C38F-48CB-ADE9-67B22BB2F50A}
568574
{4078E594-E738-48F7-A7ED-B208ADD04900} = {5E86E10A-C38F-48CB-ADE9-67B22BB2F50A}
569575
{CE9B992B-A2A7-20F9-9EEB-AE699C6D77CC} = {2D194040-0192-4A87-A076-2B640C7FA82F}
576+
{5011E41D-F7CB-454B-A7D0-0C3C3E655030} = {5E86E10A-C38F-48CB-ADE9-67B22BB2F50A}
570577
{36C4B766-2A2F-CACB-CB91-0FC5C2E69773} = {E3DAC9C6-AE41-4B37-A253-C621E568590E}
571578
EndGlobalSection
572579
GlobalSection(ExtensibilityGlobals) = postSolution
573-
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.2\lib\NET35
574580
SolutionGuid = {D8B98070-6B8E-403C-A07F-A3F2E4A3A3D0}
581+
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.2\lib\NET35
575582
EndGlobalSection
576583
GlobalSection(TestCaseManagementSettings) = postSolution
577584
CategoryFile = FullAgent.vsmdi

build/ArtifactBuilder/CoreAgentComponents.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ protected override void CreateAgentComponents()
6464
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Memcached.dll",
6565
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.OpenSearch.dll",
6666
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.dll",
67+
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Hangfire.dll",
6768
};
6869

6970
var wrapperXmls = new[]
@@ -96,6 +97,7 @@ protected override void CreateAgentComponents()
9697
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Memcached.Instrumentation.xml",
9798
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.OpenSearch.Instrumentation.xml",
9899
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml",
100+
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml",
99101
};
100102

101103
ExtensionXsd = $@"{SourceHomeBuilderPath}\extensions\extension.xsd";
@@ -166,4 +168,4 @@ protected override void CreateAgentComponents()
166168

167169
SetConfigurationComponents(configurationComponents.ToArray());
168170
}
169-
}
171+
}

build/ArtifactBuilder/FrameworkAgentComponents.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ protected override void CreateAgentComponents()
7272
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Memcached.dll",
7373
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.OpenSearch.dll",
7474
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.dll",
75+
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Hangfire.dll"
7576
};
7677

7778
var wrapperXmls = new[]
@@ -118,6 +119,7 @@ protected override void CreateAgentComponents()
118119
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Memcached.Instrumentation.xml",
119120
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.OpenSearch.Instrumentation.xml",
120121
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml",
122+
$@"{SourceHomeBuilderPath}\extensions\NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml",
121123
};
122124

123125
ExtensionXsd = $@"{SourceHomeBuilderPath}\extensions\extension.xsd";
@@ -172,4 +174,4 @@ protected override void CreateAgentComponents()
172174

173175
SetConfigurationComponents(NewRelicXsd, AgentInfoJson);
174176
}
175-
}
177+
}

build/Dotty/packageInfo.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
},
1414
{
1515
"packageName": "amazon.lambda.kinesisevents",
16-
"ignoreTFMs" : "net8.0",
16+
"ignoreTFMs": "net8.0",
1717
"ignoreReason": "net8.0 tests 2.x.x version"
1818
},
1919
{
@@ -76,6 +76,10 @@
7676
"ignoreTFMs": "net8.0",
7777
"ignoreReason": "net8.0 tests 2.x.x version"
7878
},
79+
80+
{
81+
"packageName": "hangfire"
82+
},
7983
{
8084
"packageName": "log4net"
8185
},

src/Agent/MsiInstaller/Installer/Product.wxs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,9 @@ SPDX-License-Identifier: Apache-2.0
421421
<Component Id="AzureServiceBusWrapperComponent" Guid="{5B625630-B816-4E9D-BE30-9403D8C1682A}">
422422
<File Id="AzureServiceBusWrapperFile" Name="NewRelic.Providers.Wrapper.AzureServiceBus.dll" KeyPath="yes" Source="$(var.HomeFolderPath)\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.dll" />
423423
</Component>
424+
<Component Id="HangfireWrapperComponent" Guid="{4E086BCC-4FC0-46B7-9E31-8EA5E42BCA78}">
425+
<File Id="HangfireWrapperFile" Name="NewRelic.Providers.Wrapper.Hangfire.dll" KeyPath="yes" Source="$(var.HomeFolderPath)\extensions\NewRelic.Providers.Wrapper.Hangfire.dll" />
426+
</Component>
424427
</ComponentGroup>
425428

426429
<ComponentGroup Id="CoreNewRelic.Agent.Extensions" Directory="CoreProgramFilesExtensionsFolder">
@@ -511,6 +514,9 @@ SPDX-License-Identifier: Apache-2.0
511514
<Component Id="CoreAzureServiceBusWrapperComponent" Guid="{E2F1AE1C-9EE8-410D-932B-D6B9C25FE405}">
512515
<File Id="CoreAzureServiceBusWrapperFile" Name="NewRelic.Providers.Wrapper.AzureServiceBus.dll" KeyPath="yes" Source="$(var.HomeFolderPath)_coreclr\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.dll" />
513516
</Component>
517+
<Component Id="CoreHangfireWrapperComponent" Guid="{6CE3FE7E-A93B-4FEA-AD38-303010C7085A}">
518+
<File Id="CoreHangfireWrapperFile" Name="NewRelic.Providers.Wrapper.Hangfire.dll" KeyPath="yes" Source="$(var.HomeFolderPath)_coreclr\extensions\NewRelic.Providers.Wrapper.Hangfire.dll" />
519+
</Component>
514520
</ComponentGroup>
515521

516522
<!-- Wrapper Instrumentation Files-->
@@ -641,6 +647,9 @@ SPDX-License-Identifier: Apache-2.0
641647
<Component Id="AzureServiceBusInstrumentationComponent" Guid="{77A2B667-7535-45A6-9CAC-27BFCFEF95B8}">
642648
<File Id="AzureServiceBusInstrumentationFile" Name="NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml" KeyPath="yes" Source="$(var.HomeFolderPath)\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml" />
643649
</Component>
650+
<Component Id="HangfireInstrumentationComponent" Guid="{515414DD-D27A-41E7-A579-CB8F69094C70}">
651+
<File Id="HangfireInstrumentationFile" Name="NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml" KeyPath="yes" Source="$(var.HomeFolderPath)\extensions\NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml" />
652+
</Component>
644653
</ComponentGroup>
645654

646655
<ComponentGroup Id="CoreNewRelic.Agent.Extensions.Instrumentation" Directory="CoreExtensionsFolder">
@@ -728,6 +737,9 @@ SPDX-License-Identifier: Apache-2.0
728737
<Component Id="CoreAzureServiceBusInstrumentationComponent" Guid="{78AF8B95-BC14-41DA-8046-8F9348BA4769}">
729738
<File Id="CoreAzureServiceBusInstrumentationFile" Name="NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml" KeyPath="yes" Source="$(var.HomeFolderPath)_coreclr\extensions\NewRelic.Providers.Wrapper.AzureServiceBus.Instrumentation.xml"/>
730739
</Component>
740+
<Component Id="CoreHangfireInstrumentationComponent" Guid="{D3519623-E3DE-41BF-A8A4-295F144ADE43}">
741+
<File Id="CoreHangfireInstrumentationFile" Name="NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml" KeyPath="yes" Source="$(var.HomeFolderPath)_coreclr\extensions\NewRelic.Providers.Wrapper.Hangfire.Instrumentation.xml"/>
742+
</Component>
731743
</ComponentGroup>
732744

733745
<!-- Extensions XSD-->
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFrameworks>net462;netstandard2.0</TargetFrameworks>
4+
<AssemblyName>NewRelic.Providers.Wrapper.Hangfire</AssemblyName>
5+
<RootNamespace>NewRelic.Providers.Wrapper.Hangfire</RootNamespace>
6+
<Description>Hangfire Wrapper Provider for New Relic .NET Agent</Description>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<Content Include="Instrumentation.xml">
11+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12+
</Content>
13+
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\..\..\NewRelic.Agent.Extensions\NewRelic.Agent.Extensions.csproj" />
17+
</ItemGroup>
18+
</Project>

0 commit comments

Comments
 (0)