Skip to content

Commit 8e37c6f

Browse files
committed
Added support for Excluded/Included types for App insights sampling.
1 parent 4a53f81 commit 8e37c6f

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/WebJobs.Script/Config/ApplicationInsightsLoggerOptionsSetup.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void Configure(ApplicationInsightsLoggerOptions options)
3333
// IConfiguration will cause the SnapshotConfiguration to be created and the TelemetryProcessor to be applied.
3434
_configuration.Bind(options);
3535

36-
ApplySamplingIsEnabled(options);
36+
ApplySamplingSettings(options);
3737

3838
string quickPulseKey = _environment.GetEnvironmentVariable(EnvironmentSettingNames.AppInsightsQuickPulseAuthApiKey);
3939
if (!string.IsNullOrEmpty(quickPulseKey))
@@ -42,7 +42,7 @@ public void Configure(ApplicationInsightsLoggerOptions options)
4242
}
4343
}
4444

45-
private void ApplySamplingIsEnabled(ApplicationInsightsLoggerOptions options)
45+
private void ApplySamplingSettings(ApplicationInsightsLoggerOptions options)
4646
{
4747
// Sampling settings do not have a built-in "IsEnabled" value, so we are making our own.
4848
string samplingPath = nameof(ApplicationInsightsLoggerOptions.SamplingSettings);
@@ -51,7 +51,12 @@ private void ApplySamplingIsEnabled(ApplicationInsightsLoggerOptions options)
5151
if (!samplingEnabled)
5252
{
5353
options.SamplingSettings = null;
54+
return;
5455
}
56+
57+
// Excluded/Included types must be moved from SamplingSettings to their respective properties in logger options
58+
options.SamplingExcludedTypes = _configuration.GetSection(samplingPath).GetValue<string>("ExcludedTypes", null);
59+
options.SamplingIncludedTypes = _configuration.GetSection(samplingPath).GetValue<string>("IncludedTypes", null);
5560
}
5661
}
5762
}

test/WebJobs.Script.Tests/Configuration/ApplicationInsightsLoggerOptionsSetupTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,33 @@ public void Configure_SamplingDisabled_IgnoresOtherSettings()
5252
setup.Configure(options);
5353

5454
Assert.Null(options.SamplingSettings);
55+
Assert.Null(options.SamplingExcludedTypes);
56+
Assert.Null(options.SamplingIncludedTypes);
57+
}
58+
59+
[Fact]
60+
public void Configure_SamplingExcludedIncludedTypes_AppliesSettings()
61+
{
62+
string excludedTypes = "Dependency;Event";
63+
string includedTypes = "PageView;Trace";
64+
65+
IConfiguration config = new ConfigurationBuilder()
66+
.AddInMemoryCollection(new Dictionary<string, string>
67+
{
68+
{ $"{SamplingSettings}:MaxTelemetryItemsPerSecond", "25" },
69+
{ $"{SamplingSettings}:IsEnabled", "true" },
70+
{ $"{SamplingSettings}:ExcludedTypes", excludedTypes },
71+
{ $"{SamplingSettings}:IncludedTypes", includedTypes },
72+
})
73+
.Build();
74+
75+
ApplicationInsightsLoggerOptionsSetup setup = new ApplicationInsightsLoggerOptionsSetup(new MockLoggerConfiguration(config), _environment);
76+
77+
ApplicationInsightsLoggerOptions options = new ApplicationInsightsLoggerOptions();
78+
setup.Configure(options);
79+
80+
Assert.Equal(excludedTypes, options.SamplingExcludedTypes);
81+
Assert.Equal(includedTypes, options.SamplingIncludedTypes);
5582
}
5683

5784
[Fact]

0 commit comments

Comments
 (0)