diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index cb2e5f264d7..d2b7d2a1047 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Fix instrument naming enforcement implementation to match the spec. + ([#3821](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3821)) + * Added support for loading environment variables from `IConfiguration` when using the `MetricReaderOptions` & `BatchExportActivityProcessorOptions` classes. diff --git a/src/OpenTelemetry/Metrics/Builder/MeterProviderBuilderSdk.cs b/src/OpenTelemetry/Metrics/Builder/MeterProviderBuilderSdk.cs index 641b4957242..b8db1029f74 100644 --- a/src/OpenTelemetry/Metrics/Builder/MeterProviderBuilderSdk.cs +++ b/src/OpenTelemetry/Metrics/Builder/MeterProviderBuilderSdk.cs @@ -24,7 +24,7 @@ namespace OpenTelemetry.Metrics internal sealed class MeterProviderBuilderSdk : MeterProviderBuilderBase { private static readonly Regex InstrumentNameRegex = new( - @"^[a-zA-Z][-.\w]{0,62}$", RegexOptions.IgnoreCase | RegexOptions.Compiled); + @"^[a-z][a-z0-9-._]{0,62}$", RegexOptions.IgnoreCase | RegexOptions.Compiled); public MeterProviderBuilderSdk() { diff --git a/test/OpenTelemetry.Tests/Metrics/MetricTestData.cs b/test/OpenTelemetry.Tests/Metrics/MetricTestData.cs index c4b8fdf944a..4ba399bed4e 100644 --- a/test/OpenTelemetry.Tests/Metrics/MetricTestData.cs +++ b/test/OpenTelemetry.Tests/Metrics/MetricTestData.cs @@ -28,6 +28,7 @@ public static IEnumerable InvalidInstrumentNames new object[] { "1first-char-not-alphabetic" }, new object[] { "invalid+separator" }, new object[] { new string('m', 64) }, + new object[] { "a\xb5" }, // `\xb5` is the Micro character }; public static IEnumerable ValidInstrumentNames @@ -39,6 +40,7 @@ public static IEnumerable ValidInstrumentNames new object[] { "my.metric" }, new object[] { "my_metric2" }, new object[] { new string('m', 63) }, + new object[] { "CaSe-InSeNsItIvE" }, }; public static IEnumerable InvalidHistogramBoundaries