Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ This component adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.h
for zero-config auto-injection.
- Support for file-based configuration of the IL rewrite for
SqlClient instrumentation setting
- Support for `temporality_preference` in file-based configuration
for Console Metric Exporter.

### Changed

Expand Down
4 changes: 4 additions & 0 deletions docs/file-based-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,10 @@ meter_provider:
exporter:
# Configure exporter to be console.
console:
# Configure temporality preference.
# Values include: cumulative, delta.
# If omitted or null, cumulative is used.
temporality_preference: cumulative

# Pull reader for Prometheus
- pull:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ private static MeterProviderBuilder SetExporter(this MeterProviderBuilder builde
}
else if (exporter.Console != null)
{
builder = Wrappers.AddConsoleExporter(builder, pluginManager);
builder = Wrappers.AddConsoleExporter(builder, pluginManager, exporter.Console);
}
}

Expand Down Expand Up @@ -249,6 +249,17 @@ public static MeterProviderBuilder AddConsoleExporter(MeterProviderBuilder build
});
}

[MethodImpl(MethodImplOptions.NoInlining)]
public static MeterProviderBuilder AddConsoleExporter(MeterProviderBuilder builder, PluginManager pluginManager, ConsoleExporterConfig consoleExporterConfig)
{
return builder.AddConsoleExporter((consoleExporterOptions, metricReaderOptions) =>
{
metricReaderOptions.TemporalityPreference = consoleExporterConfig.GetTemporalityPreference();
pluginManager.ConfigureMetricsOptions(consoleExporterOptions);
pluginManager.ConfigureMetricsOptions(metricReaderOptions);
});
}

[MethodImpl(MethodImplOptions.NoInlining)]
public static MeterProviderBuilder AddPrometheusHttpListener(MeterProviderBuilder builder, PluginManager pluginManager)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

using OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration.Parser;
using OpenTelemetry.Metrics;
using Vendors.YamlDotNet.Serialization;

namespace OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration;

[EmptyObjectOnEmptyYaml]
internal class ConsoleExporterConfig
{
/// <summary>
/// Gets or sets the temporality preference for the exporter.
/// Values include: cumulative, delta.
/// If omitted or null, cumulative is used.
/// </summary>
[YamlMember(Alias = "temporality_preference")]
public string? TemporalityPreference { get; set; }

public MetricReaderTemporalityPreference GetTemporalityPreference()
{
return TemporalityPreference switch
{
"cumulative" => MetricReaderTemporalityPreference.Cumulative,
"delta" => MetricReaderTemporalityPreference.Delta,
_ => MetricReaderTemporalityPreference.Cumulative
};
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

using OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration.Parser;
using OpenTelemetry.Metrics;
using Vendors.YamlDotNet.Serialization;

namespace OpenTelemetry.AutoInstrumentation.Configurations.FileBasedConfiguration;
Expand All @@ -23,5 +25,5 @@ internal class MetricPeriodicExporterConfig
/// Gets or sets the console exporter configuration.
/// </summary>
[YamlMember(Alias = "console")]
public object? Console { get; set; }
public ConsoleExporterConfig? Console { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ meter_provider:
- periodic:
exporter:
console:
temporality_preference: delta
- pull:
exporter:
prometheus:
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public void Parse_FullConfigYaml_ShouldPopulateModelCorrectly()
Assert.NotNull(consoleReader);
Assert.NotNull(consoleReader.Exporter);
Assert.NotNull(consoleReader.Exporter!.Console);
Assert.Equal("delta", consoleReader.Exporter.Console.TemporalityPreference);

var prometheusReader = config.MeterProvider.Readers[3].Pull;
Assert.NotNull(prometheusReader);
Expand Down
Loading