diff --git a/.chloggen/config.yaml b/.chloggen/config.yaml index 798961a12bb36..7a2c1ada839a7 100644 --- a/.chloggen/config.yaml +++ b/.chloggen/config.yaml @@ -27,7 +27,7 @@ components: - connector/servicegraph - connector/signal_to_metrics - connector/slowsql - - connector/spanmetrics + - connector/span_metrics - connector/sum - exporter/alertmanager - exporter/alibabacloud_logservice diff --git a/.chloggen/rename-spanmetrics-connector.yaml b/.chloggen/rename-spanmetrics-connector.yaml new file mode 100644 index 0000000000000..50daeb54f5f30 --- /dev/null +++ b/.chloggen/rename-spanmetrics-connector.yaml @@ -0,0 +1,5 @@ +change_type: deprecation +component: connector/span_metrics +note: Rename component type from `spanmetrics` to `span_metrics` to follow snake_case naming convention. The old name is kept as a deprecated alias. +issues: [47963] +change_logs: [user] diff --git a/connector/spanmetricsconnector/README.md b/connector/spanmetricsconnector/README.md index c0914e2850694..9af2c308339b3 100644 --- a/connector/spanmetricsconnector/README.md +++ b/connector/spanmetricsconnector/README.md @@ -22,6 +22,11 @@ [Stability Level]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#stability-levels +> **Deprecation Notice:** The component type has been renamed from `spanmetrics` to `span_metrics` +> to follow the OpenTelemetry snake_case naming convention. +> The old name `spanmetrics` still works but is deprecated and will be removed in a future release. +> Please update your configuration to use `span_metrics`. + ⚠️ Breaking Change Warning: The default duration metrics unit will change from `ms` to `s` to adhere to the OpenTelemetry semantic conventions and a feature gate `connector.spanmetrics.useSecondAsDefaultMetricsUnit` is also added. @@ -159,7 +164,7 @@ exporters: nop: connectors: - spanmetrics: + span_metrics: histogram: dimensions: - name: url.scheme @@ -195,9 +200,9 @@ service: pipelines: traces: receivers: [nop] - exporters: [spanmetrics] + exporters: [span_metrics] metrics: - receivers: [spanmetrics] + receivers: [span_metrics] exporters: [nop] ``` @@ -225,16 +230,16 @@ exporters: enabled: true connectors: - spanmetrics: + span_metrics: namespace: span.metrics service: pipelines: traces: receivers: [otlp] - exporters: [spanmetrics] + exporters: [span_metrics] metrics: - receivers: [spanmetrics] + receivers: [span_metrics] exporters: [prometheusremotewrite] ``` @@ -278,7 +283,7 @@ To reduce the risk of conflicting writes: * Add `resource_metrics_key_attributes` to your configuration. ``` connectors: - spanmetrics: + span_metrics: resource_metrics_key_attributes: - service.name - telemetry.sdk.language @@ -343,7 +348,7 @@ processors: ... connectors: - spanmetrics: + span_metrics: exporters: otlp_http/observability-backend: @@ -354,9 +359,9 @@ service: traces: receivers: [otlp] processors: [transform/sanitize_spans, ...] - exporters: [otlp_http/observability-backend, spanmetrics] + exporters: [otlp_http/observability-backend, span_metrics] metrics: - receivers: [otlp, spanmetrics] + receivers: [otlp, span_metrics] processors: [...] exporters: [otlp_http/observability-backend] # ... @@ -406,7 +411,7 @@ processors: ... connectors: - spanmetrics: + span_metrics: exporters: otlp_http/observability-backend: @@ -417,9 +422,9 @@ service: traces: receivers: [otlp] processors: [transform/sanitize_spans, ...] - exporters: [otlp_http/observability-backend, spanmetrics] + exporters: [otlp_http/observability-backend, span_metrics] metrics: - receivers: [otlp, spanmetrics] + receivers: [otlp, span_metrics] processors: [...] exporters: [otlp_http/observability-backend] # ... diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index 752e2e2126697..66ae395f17ca8 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -13,6 +13,7 @@ import ( "github.com/jonboulle/clockwork" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/connector" + "go.opentelemetry.io/collector/connector/xconnector" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pcommon" @@ -72,10 +73,11 @@ func init() { // NewFactory creates a factory for the spanmetrics connector. func NewFactory() connector.Factory { - return connector.NewFactory( + return xconnector.NewFactory( metadata.Type, createDefaultConfig, - connector.WithTracesToMetrics(createTracesToMetricsConnector, metadata.TracesToMetricsStability), + xconnector.WithTracesToMetrics(createTracesToMetricsConnector, metadata.TracesToMetricsStability), + xconnector.WithDeprecatedTypeAlias(metadata.DeprecatedType), ) } diff --git a/connector/spanmetricsconnector/generated_component_test.go b/connector/spanmetricsconnector/generated_component_test.go index 7d5f64df8ae9c..fba68923d11e9 100644 --- a/connector/spanmetricsconnector/generated_component_test.go +++ b/connector/spanmetricsconnector/generated_component_test.go @@ -17,7 +17,7 @@ import ( "go.opentelemetry.io/collector/pipeline" ) -var typ = component.MustNewType("spanmetrics") +var typ = component.MustNewType("span_metrics") func TestComponentFactoryType(t *testing.T) { require.Equal(t, typ, NewFactory().Type()) diff --git a/connector/spanmetricsconnector/go.mod b/connector/spanmetricsconnector/go.mod index 953204b52dc8f..77cfa8e5efe14 100644 --- a/connector/spanmetricsconnector/go.mod +++ b/connector/spanmetricsconnector/go.mod @@ -19,6 +19,7 @@ require ( go.opentelemetry.io/collector/confmap/xconfmap v0.150.1-0.20260424074859-d91c0edd1da5 go.opentelemetry.io/collector/connector v0.150.1-0.20260424074859-d91c0edd1da5 go.opentelemetry.io/collector/connector/connectortest v0.150.1-0.20260424074859-d91c0edd1da5 + go.opentelemetry.io/collector/connector/xconnector v0.150.1-0.20260424074859-d91c0edd1da5 go.opentelemetry.io/collector/consumer v1.56.1-0.20260424074859-d91c0edd1da5 go.opentelemetry.io/collector/consumer/consumertest v0.150.1-0.20260424074859-d91c0edd1da5 go.opentelemetry.io/collector/featuregate v1.56.1-0.20260424074859-d91c0edd1da5 @@ -48,7 +49,6 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/pmezard/go-difflib v1.0.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.150.1-0.20260424074859-d91c0edd1da5 // indirect go.opentelemetry.io/collector/consumer/xconsumer v0.150.1-0.20260424074859-d91c0edd1da5 // indirect go.opentelemetry.io/collector/internal/componentalias v0.150.1-0.20260424074859-d91c0edd1da5 // indirect go.opentelemetry.io/collector/internal/fanoutconsumer v0.150.1-0.20260424074859-d91c0edd1da5 // indirect diff --git a/connector/spanmetricsconnector/internal/metadata/generated_status.go b/connector/spanmetricsconnector/internal/metadata/generated_status.go index da8ace98ebc83..670d401a6f314 100644 --- a/connector/spanmetricsconnector/internal/metadata/generated_status.go +++ b/connector/spanmetricsconnector/internal/metadata/generated_status.go @@ -1,7 +1,7 @@ // Code generated by mdatagen. DO NOT EDIT. // Package metadata contains the autogenerated telemetry and -// build information for the connector/spanmetrics component. +// build information for the connector/span_metrics component. package metadata import ( @@ -9,8 +9,9 @@ import ( ) var ( - Type = component.MustNewType("spanmetrics") - ScopeName = "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector" + Type = component.MustNewType("span_metrics") + DeprecatedType = component.MustNewType("spanmetrics") + ScopeName = "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector" ) const ( diff --git a/connector/spanmetricsconnector/metadata.yaml b/connector/spanmetricsconnector/metadata.yaml index b896204f2ac95..e3e708bcb2e31 100644 --- a/connector/spanmetricsconnector/metadata.yaml +++ b/connector/spanmetricsconnector/metadata.yaml @@ -1,4 +1,5 @@ -type: spanmetrics +type: span_metrics +deprecated_type: spanmetrics display_name: Span Metrics Connector status: diff --git a/connector/spanmetricsconnector/testdata/config.yaml b/connector/spanmetricsconnector/testdata/config.yaml index d313f90b2f7b4..7e925fd82d923 100644 --- a/connector/spanmetricsconnector/testdata/config.yaml +++ b/connector/spanmetricsconnector/testdata/config.yaml @@ -1,13 +1,13 @@ # default configuration -spanmetrics/default: +span_metrics/default: # default configuration with explicit buckets histogram -spanmetrics/default_explicit_histogram: +span_metrics/default_explicit_histogram: histogram: explicit: # configuration with all possible parameters -spanmetrics/full: +span_metrics/full: histogram: unit: "s" explicit: @@ -40,56 +40,56 @@ spanmetrics/full: metrics_flush_interval: 30s # default configuration with exponential buckets histogram -spanmetrics/exponential_histogram: +span_metrics/exponential_histogram: histogram: exponential: max_size: 10 # invalid histogram configuration -spanmetrics/exponential_and_explicit_histogram: +span_metrics/exponential_and_explicit_histogram: histogram: exponential: max_size: 10 explicit: buckets: [ 10ms, 100ms, 250ms ] -spanmetrics/invalid_histogram_unit: +span_metrics/invalid_histogram_unit: histogram: unit: "h" -spanmetrics/invalid_metrics_expiration: +span_metrics/invalid_metrics_expiration: metrics_expiration: -20s # exemplars enabled -spanmetrics/exemplars_enabled: +span_metrics/exemplars_enabled: exemplars: enabled: true # exemplars enabled with max per datapoint configured -spanmetrics/exemplars_enabled_with_max_per_datapoint: +span_metrics/exemplars_enabled_with_max_per_datapoint: exemplars: enabled: true max_per_data_point: 10 # resource metrics key attributes filter -spanmetrics/resource_metrics_key_attributes: +span_metrics/resource_metrics_key_attributes: resource_metrics_key_attributes: - service.name - telemetry.sdk.language - telemetry.sdk.name -spanmetrics/custom_delta_timestamp_cache_size: +span_metrics/custom_delta_timestamp_cache_size: aggregation_temporality: "AGGREGATION_TEMPORALITY_DELTA" metric_timestamp_cache_size: 123 -spanmetrics/invalid_delta_timestamp_cache_size: +span_metrics/invalid_delta_timestamp_cache_size: aggregation_temporality: "AGGREGATION_TEMPORALITY_DELTA" metric_timestamp_cache_size: 0 -spanmetrics/default_delta_timestamp_cache_size: +span_metrics/default_delta_timestamp_cache_size: aggregation_temporality: "AGGREGATION_TEMPORALITY_DELTA" -spanmetrics/separate_calls_and_duration_dimensions: +span_metrics/separate_calls_and_duration_dimensions: histogram: dimensions: - name: http.status_code diff --git a/reports/distributions/contrib.yaml b/reports/distributions/contrib.yaml index 2fe3a7c1f955e..0d789e9854acc 100644 --- a/reports/distributions/contrib.yaml +++ b/reports/distributions/contrib.yaml @@ -13,7 +13,7 @@ components: - routing - servicegraph - signal_to_metrics - - spanmetrics + - span_metrics - sum exporter: - alibabacloud_logservice