Skip to content

Commit 6218541

Browse files
authored
Merge branch 'main' into MongoDB-3.5
2 parents 634870f + caec3cd commit 6218541

File tree

7 files changed

+53
-2
lines changed

7 files changed

+53
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ This component adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.h
2020
- Automatically set the `service.instance.id` resource attribute if not provided.
2121
- Support for [CoreWCF.Primitives](https://www.nuget.org/packages/CoreWCF.Primitives/)
2222
traces instrumentation for versions `1.8.0`+.
23+
- Support for `temporality_preference` in file-based configuration
24+
for Console Metric Exporter.
2325
- Support for [MongoDB.Driver](https://www.nuget.org/packages/MongoDB.Driver/)
2426
traces instrumentation for versions `3.5.0`+.
2527

docs/file-based-configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ meter_provider:
264264
exporter:
265265
# Configure exporter to be console.
266266
console:
267+
# Configure temporality preference.
268+
# Values include: cumulative, delta.
269+
# If omitted or null, cumulative is used.
270+
temporality_preference: cumulative
267271

268272
# Pull reader for Prometheus
269273
- pull:

src/OpenTelemetry.AutoInstrumentation/Configurations/EnvironmentConfigurationMetricHelper.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ private static MeterProviderBuilder SetExporter(this MeterProviderBuilder builde
139139
}
140140
else if (exporter.Console != null)
141141
{
142-
builder = Wrappers.AddConsoleExporter(builder, pluginManager);
142+
builder = Wrappers.AddConsoleExporter(builder, pluginManager, exporter.Console);
143143
}
144144
}
145145

@@ -249,6 +249,17 @@ public static MeterProviderBuilder AddConsoleExporter(MeterProviderBuilder build
249249
});
250250
}
251251

252+
[MethodImpl(MethodImplOptions.NoInlining)]
253+
public static MeterProviderBuilder AddConsoleExporter(MeterProviderBuilder builder, PluginManager pluginManager, ConsoleExporterConfig consoleExporterConfig)
254+
{
255+
return builder.AddConsoleExporter((consoleExporterOptions, metricReaderOptions) =>
256+
{
257+
metricReaderOptions.TemporalityPreference = consoleExporterConfig.GetTemporalityPreference();
258+
pluginManager.ConfigureMetricsOptions(consoleExporterOptions);
259+
pluginManager.ConfigureMetricsOptions(metricReaderOptions);
260+
});
261+
}
262+
252263
[MethodImpl(MethodImplOptions.NoInlining)]
253264
public static MeterProviderBuilder AddPrometheusHttpListener(MeterProviderBuilder builder, PluginManager pluginManager)
254265
{
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
using OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration.Parser;
5+
using OpenTelemetry.Metrics;
6+
using Vendors.YamlDotNet.Serialization;
7+
8+
namespace OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration;
9+
10+
[EmptyObjectOnEmptyYaml]
11+
internal class ConsoleExporterConfig
12+
{
13+
/// <summary>
14+
/// Gets or sets the temporality preference for the exporter.
15+
/// Values include: cumulative, delta.
16+
/// If omitted or null, cumulative is used.
17+
/// </summary>
18+
[YamlMember(Alias = "temporality_preference")]
19+
public string? TemporalityPreference { get; set; }
20+
21+
public MetricReaderTemporalityPreference GetTemporalityPreference()
22+
{
23+
return TemporalityPreference switch
24+
{
25+
"cumulative" => MetricReaderTemporalityPreference.Cumulative,
26+
"delta" => MetricReaderTemporalityPreference.Delta,
27+
_ => MetricReaderTemporalityPreference.Cumulative
28+
};
29+
}
30+
}

src/OpenTelemetry.AutoInstrumentation/Configurations/FileBasedConfiguration/MetricPeriodicExporterConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
using OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration.Parser;
5+
using OpenTelemetry.Metrics;
46
using Vendors.YamlDotNet.Serialization;
57

68
namespace OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration;
@@ -23,5 +25,5 @@ internal class MetricPeriodicExporterConfig
2325
/// Gets or sets the console exporter configuration.
2426
/// </summary>
2527
[YamlMember(Alias = "console")]
26-
public object? Console { get; set; }
28+
public ConsoleExporterConfig? Console { get; set; }
2729
}

test/OpenTelemetry.AutoInstrumentation.Tests/Configurations/FileBased/Files/TestMetricsFile.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ meter_provider:
1717
- periodic:
1818
exporter:
1919
console:
20+
temporality_preference: delta
2021
- pull:
2122
exporter:
2223
prometheus:

test/OpenTelemetry.AutoInstrumentation.Tests/Configurations/FileBased/Parser/ParserMetricsTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public void Parse_FullConfigYaml_ShouldPopulateModelCorrectly()
4444
Assert.NotNull(consoleReader);
4545
Assert.NotNull(consoleReader.Exporter);
4646
Assert.NotNull(consoleReader.Exporter!.Console);
47+
Assert.Equal("delta", consoleReader.Exporter.Console.TemporalityPreference);
4748

4849
var prometheusReader = config.MeterProvider.Readers[3].Pull;
4950
Assert.NotNull(prometheusReader);

0 commit comments

Comments
 (0)