Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge remote-tracking branch 'upstream/main' #45

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
53ad0a4
[chore]: enable bool-compare rule from testifylint (#34912)
mmorel-35 Aug 29, 2024
240ff76
[pkg/ottl] Remove tracing from OTTL (#34910)
TylerHelmuth Aug 29, 2024
29cd095
[chore]: enable len rule from testifylint (#34921)
mmorel-35 Aug 30, 2024
0ec84e6
[chore][receiver/nginx] Update README for consistency (#34923)
crobert-1 Aug 30, 2024
184e954
[processor/redaction] add support for redacting metrics and logs attr…
bacherfl Aug 30, 2024
499cfd8
[chore] Fix linter issues (#34937)
mx-psi Aug 30, 2024
903eec5
[receiver/gitproviderreceiver] rename to githubreceiver (#34731)
adrielp Aug 30, 2024
6b3237a
[chore][CODEOWNERS] Change account references to match new username (…
crobert-1 Aug 30, 2024
2d63c17
[chore] refactor filter processor test to use generated test harness …
codeboten Aug 30, 2024
ea521f7
[chore] use generated test harness for groupbyattrs processor (#34941)
codeboten Aug 30, 2024
0216163
[chore] update core to pull in telemetry settings changes (#34930)
codeboten Aug 30, 2024
90e75d3
[receiver/splunkhec] fix memory leak (#34911)
atoulme Aug 30, 2024
dbf8982
[chore] Updating @MovieStoreGuy affiliation (#34947)
MovieStoreGuy Sep 1, 2024
fd0e9ef
[chore]: Update README.md (#34725)
CharlieTLe Sep 2, 2024
33362ee
[connector/servicegraph]Fix incorrectly reversed latency settings(res…
Frapschen Sep 2, 2024
9f0cac0
[chore]: enable error-nil and nil-compare rules from testifylint (#34…
mmorel-35 Sep 2, 2024
13f0d14
[connector/count] fix typo in metric.datapoint.count (#34961)
lhns Sep 2, 2024
255020c
[chore] Upgrade arvo package (#34962)
MovieStoreGuy Sep 3, 2024
439e41e
Update module github.com/shirou/gopsutil/v4 to v4.24.8 (#34970)
renovate[bot] Sep 3, 2024
4558429
Update module github.com/ClickHouse/clickhouse-go/v2 to v2.28.2 (#34968)
renovate[bot] Sep 3, 2024
1c9e54e
Update All github.com/datadog packages to v0.56.2 (#34965)
renovate[bot] Sep 3, 2024
ad02711
Update module github.com/snowflakedb/gosnowflake to v1.11.1 (#34971)
renovate[bot] Sep 3, 2024
a967d83
[exporter/loki] Document the migration from the Loki Exporter to the …
cyrille-leclerc Sep 3, 2024
9545957
[connector/spanmetrics] Improve consistency between metrics generated…
iblancasa Sep 3, 2024
5822332
Update module google.golang.org/grpc to v1.66.0 (#34978)
renovate[bot] Sep 3, 2024
d25990b
[vcenterreceiver] Updated units on several metrics (#34946)
BominRahmani Sep 3, 2024
c6cda87
Update module github.com/SAP/go-hdb to v1.12.0 (#34973)
renovate[bot] Sep 3, 2024
b128c46
[chore][pkg/stanza] Speed up file deduplication in finder (#34888)
BinaryFissionGames Sep 3, 2024
510a413
[receiver/mysql] client, convert NULL to int64 (#34411)
knarfli Sep 3, 2024
bfdee42
[testbed] - Add scenarios to handle large files (#34417)
VihasMakwana Sep 3, 2024
640adad
Avoid rendering the whole event to get only the provider name (#34914)
pjanotti Sep 3, 2024
119ad9b
[chore] add Tyler to CODEOWNERS for githubreceiver (#34963)
adrielp Sep 3, 2024
58b5bb9
Update README.md (#34990)
gjtorikian Sep 3, 2024
f6156a9
[extension/opamp] Add support for polling interval in HTTP client (#3…
matej-g Sep 3, 2024
a77faff
[receiver/apache] Invalid endpoint should not cause panic (#34992)
pjanotti Sep 3, 2024
1ec7cfe
[chore]: enable compares and empty rules from testifylint (#34976)
mmorel-35 Sep 3, 2024
dabacbd
[receiver/githubreceiver] promote githubreceiver to alpha status (#34…
adrielp Sep 3, 2024
902756e
[connector/datadog] Improve performance in cases with many peer tags …
songy23 Sep 3, 2024
ec049ab
[chore] upgrading pulsar client v0.13.1 (#34951)
MovieStoreGuy Sep 3, 2024
a4aa4e8
[processor/interval] Update config structure for interval processor (…
ArthurSens Sep 3, 2024
d0e5eec
[extension/solarwindsapmsettingsextension] Added remaining implementa…
jerrytfleung Sep 3, 2024
5258d98
feat: Support Prometheus Created Timestamps (#34596)
ArthurSens Sep 4, 2024
3afb802
[receiver/sqlquery] support attributes for logs (#34599)
Grandys Sep 4, 2024
9be1f80
[receiver/kafkareceiver]: allow tunable fetch sizes (#34431)
cxdy Sep 4, 2024
2de5752
[exporter/splunkhec] drop empty log events (#34871)
atoulme Sep 4, 2024
a088f60
[exporter/signalfx] Fix goroutine leaks (#32781)
crobert-1 Sep 4, 2024
1ba4179
[chore] make update-otel to 48b11ba (#34956)
mx-psi Sep 4, 2024
33687ee
[chore][receiver/filelog] Change plaintext name: filelog -> file log …
crobert-1 Sep 4, 2024
9e3a845
[chore] Fix flaky test by ignoring metrics order (#35002)
djaglowski Sep 4, 2024
255aebe
fix: handle OTLPJSON unmarshal error (#34784)
rogercoll Sep 4, 2024
548d95f
[chore] Fix flaky test in filelog receiver (#35012)
djaglowski Sep 4, 2024
e393e02
Bump github.com/opencontainers/runc from 1.1.13 to 1.1.14 in /cmd/ote…
dependabot[bot] Sep 4, 2024
a0ea89c
Clarify google managed prometheus troubleshooting guide (#34986)
dashpole Sep 4, 2024
fa4cac5
Update module github.com/lestrrat-go/strftime to v1.1.0 (#34974)
renovate[bot] Sep 4, 2024
93ba625
[chore] Upgrading msgpack v4 to v5 (#35019)
MovieStoreGuy Sep 5, 2024
cb71224
[exporter/elasticsearch] Fix dynamic mapping for double values storin…
carsonip Sep 5, 2024
4c490fe
[exporter/elasticsearch] Add exponential histogram support (#34818)
carsonip Sep 5, 2024
53152f0
[processor/deltatocumulative]: drop bad samples (#34979)
sh0rez Sep 5, 2024
fa75b6e
fix: avoid using internal empty attribute.Set pointer (#34903)
rogercoll Sep 5, 2024
ceeb395
Update example in readme for convert_sum_to_gauge and convert_gauge_t…
wildum Sep 5, 2024
9a31997
[exporter/elasticsearch] Add span event to traces OTel mapping mode (…
carsonip Sep 5, 2024
a4393cb
[opampsupervisor] Add HealthCheckPort configuration parameter (#34704)
dpaasman00 Sep 5, 2024
e0e6489
[pkg/ottl]: Add Sort converter (#34283)
kaisecheng Sep 5, 2024
6e5fd62
[chore] update module github.com/google/go-github/v63 to v64 (#35016)
adrielp Sep 5, 2024
2bc5b37
Update All github.com/aws packages (#34964)
renovate[bot] Sep 5, 2024
0055e6e
[chore]: enable error-is-as rule from testifylint (#34995)
mmorel-35 Sep 5, 2024
85a2f4f
fix(deps): update module github.com/rs/cors to v1.11.1 (#34969)
renovate[bot] Sep 5, 2024
eb329f4
Update module google.golang.org/api to v0.195.0 (#34977)
renovate[bot] Sep 5, 2024
0bcac4b
[extension/healthcheckv2] Update readme to reflect current status (#3…
mwear Sep 5, 2024
562c01d
[connector/servicegraph] Fix histogram metrics miss unit (#34511)
Frapschen Sep 5, 2024
6eaf284
OTel-Arrow exporter timeout propagation (#34733)
jmacd Sep 5, 2024
9ad4ae3
[receiver/skywalking] add receiver supports version (#34916)
JaredTan95 Sep 5, 2024
52b6807
[exporter/prometheusremotewriteexporter]chore: log warning about remo…
ArthurSens Sep 5, 2024
145145c
[chore]: enable expected-actual rule from testifylint (#34998)
mmorel-35 Sep 5, 2024
a733b01
[pkg/ottl] Add `Decode` function (#33942)
bacherfl Sep 5, 2024
97533e6
[chore] Fix Supervisor test on Windows (#35035)
evan-bradley Sep 5, 2024
93a6bd9
[chore] Share encoding overrides (#35029)
TylerHelmuth Sep 5, 2024
55482cb
[chore] update logging to debug exporter (#35030)
codeboten Sep 5, 2024
7ec6396
[receiver/googlecloudmonitoringreceiver] Transform GCP Timeseries Dat…
abhishek-at-cloudwerx Sep 5, 2024
e9b835f
[receiver/sqlserver] Emit correct database name resource attribute (#…
crobert-1 Sep 6, 2024
abb7604
[exporter/elasticsearch] Workaround TSDB array dimension limitation f…
carsonip Sep 6, 2024
d5595bb
[connector/servicegraph] Extract the `getDimensionValue` function as …
JaredTan95 Sep 6, 2024
f970421
Operators with silent errors will log errors as debug and won't retur…
SamerJ Sep 6, 2024
af21ce7
[internal/otelarrow] Fix test flake (for 34719) (#34889)
jmacd Sep 6, 2024
642cc35
[pkg/ottl] Change grammar to support expressing statements context vi…
edmocosta Sep 6, 2024
25cb194
[pkg/ottl] Add support for localized time parsing into the timeutils …
edmocosta Sep 6, 2024
95ff5f2
[processor/transform] introduce aggregate_on_attribute_value function…
odubajDT Sep 6, 2024
14aa57a
[chore] go version 1.22.6 -> 1.22.7 (#35059)
crobert-1 Sep 6, 2024
8c08765
Use OTel-Arrow v0.26.0 (#35057)
jmacd Sep 6, 2024
0e2bea5
fix(deps): update module github.com/tencentcloud/tencentcloud-sdk-go/…
renovate[bot] Sep 6, 2024
237a96b
Add admission_blocked span to otel-arrow admission controller (#35031)
jmacd Sep 9, 2024
be7ddc3
[chore] Bump github.com/opencontainers/runc from 1.1.13 to 1.1.14 in …
crobert-1 Sep 9, 2024
cc5889d
[receiver/kafkareceiver] Add encoding extensions support (#33888)
thmshmm Sep 9, 2024
45ffc03
[chore] [receiver/datadog] Add support for Service Checks (#34474)
alexgreenbank Sep 9, 2024
5e26464
[receiver/datadog] Add support for sketches (#34662)
carrieedwards Sep 9, 2024
f81fd7a
Marking instanaexporter module as deprecated (#35052)
Frapschen Sep 9, 2024
248b8ec
[chore] Fix flakiness of tests on Windows requiring ports in the dyna…
pjanotti Sep 9, 2024
0ceefaa
[exporter/datadog] Use correct hostname for logs in logs agent pipeli…
liustanley Sep 9, 2024
b3e952f
[exporter/datadogexporter] Add support for custom log source (#35051)
mackjmr Sep 9, 2024
bd66ceb
[chore] Update test expectation to include processorhelper metrics (#…
djaglowski Sep 9, 2024
71ce97e
[chore] Fixing Prom Compliance tests (#35071)
MovieStoreGuy Sep 10, 2024
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
Prev Previous commit
Next Next commit
[connector/spanmetrics] Improve consistency between metrics generated…
… by spanmetricsconnector (open-telemetry#34485)

**Link to tracking Issue:** open-telemetry#33227 open-telemetry#32818

**Documentation:** added an entry to the changelog explaining the
deprecated metrics.

---------

Signed-off-by: Israel Blancas <iblancasa@gmail.com>
Signed-off-by: Juraci Paixão Kröhling <juraci@kroehling.de>
Co-authored-by: Murphy Chen <minquan.chen@daocloud.io>
Co-authored-by: Rafael Pax <rpax@users.noreply.github.com>
Co-authored-by: Juraci Paixão Kröhling <juraci@kroehling.de>
  • Loading branch information
4 people committed Sep 3, 2024
commit 9545957de6df03eb019d29e9c9a9868439cdb8b1
29 changes: 29 additions & 0 deletions .chloggen/feat_33227.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: breaking

# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
component: spanmetricsconnector

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Improve consistency between metrics generated by spanmetricsconnector. Added traces.span.metrics as default namespace

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: [33227, 32818]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext: "Default namespace for the generated metrics is traces.span.metrics now. |
The deprecated metrics are: calls, duration and events. |
The feature flag connector.spanmetrics.legacyLatencyMetricNames was added to revert the behavior."

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: [user]
4 changes: 3 additions & 1 deletion connector/spanmetricsconnector/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ The following settings can be optionally configured:
cumulative temporality to avoid memory leaks and correct metric timestamp resets.
- `aggregation_temporality` (default: `AGGREGATION_TEMPORALITY_CUMULATIVE`): Defines the aggregation temporality of the generated metrics.
One of either `AGGREGATION_TEMPORALITY_CUMULATIVE` or `AGGREGATION_TEMPORALITY_DELTA`.
- `namespace`: Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix.
- `namespace` (default: `traces.span.metrics`): Defines the namespace of the generated metrics. If `namespace` provided, generated metric name will be added `namespace.` prefix.
- `metrics_flush_interval` (default: `60s`): Defines the flush interval of the generated metrics.
- `metrics_expiration` (default: `0`): Defines the expiration time as `time.Duration`, after which, if no new spans are received, metrics will no longer be exported. Setting to `0` means the metrics will never expire (default behavior).
- `metric_timestamp_cache_size` (default `1000`): Only relevant for delta temporality span metrics. Controls the size of the cache used to keep track of a metric's TimestampUnixNano the last time it was flushed. When a metric is evicted from the cache, its next data point will indicate a "reset" in the series. Downstream components converting from delta to cumulative, like `prometheusexporter`, may handle these resets by setting cumulative counters back to 0.
Expand All @@ -122,6 +122,8 @@ The following settings can be optionally configured:
- `dimensions`: (mandatory if `enabled`) the list of the span's event attributes to add as dimensions to the events metric, which will be included _on top of_ the common and configured `dimensions` for span and resource attributes.
- `resource_metrics_key_attributes`: Filter the resource attributes used to produce the resource metrics key map hash. Use this in case changing resource attributes (e.g. process id) are breaking counter metrics.

The feature gate `connector.spanmetrics.legacyMetricNames` (disabled by default) controls the connector to use legacy metric names.

## Examples

The following is a simple example usage of the `spanmetrics` connector.
Expand Down
7 changes: 7 additions & 0 deletions connector/spanmetricsconnector/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ func TestLoadConfig(t *testing.T) {
{Name: "http.method", Default: &defaultMethod},
{Name: "http.status_code", Default: (*string)(nil)},
},
Namespace: DefaultNamespace,
DimensionsCacheSize: 1500,
ResourceMetricsCacheSize: 1600,
MetricsFlushInterval: 30 * time.Second,
Expand All @@ -70,6 +71,7 @@ func TestLoadConfig(t *testing.T) {
{
id: component.NewIDWithName(metadata.Type, "exponential_histogram"),
expected: &Config{
Namespace: DefaultNamespace,
AggregationTemporality: cumulative,
DimensionsCacheSize: defaultDimensionsCacheSize,
ResourceMetricsCacheSize: defaultResourceMetricsCacheSize,
Expand Down Expand Up @@ -103,6 +105,7 @@ func TestLoadConfig(t *testing.T) {
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Exemplars: ExemplarsConfig{Enabled: true},
Namespace: DefaultNamespace,
},
},
{
Expand All @@ -114,6 +117,7 @@ func TestLoadConfig(t *testing.T) {
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Exemplars: ExemplarsConfig{Enabled: true, MaxPerDataPoint: &defaultMaxPerDatapoint},
Namespace: DefaultNamespace,
},
},
{
Expand All @@ -125,6 +129,7 @@ func TestLoadConfig(t *testing.T) {
ResourceMetricsKeyAttributes: []string{"service.name", "telemetry.sdk.language", "telemetry.sdk.name"},
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Namespace: DefaultNamespace,
},
},
{
Expand All @@ -136,6 +141,7 @@ func TestLoadConfig(t *testing.T) {
ResourceMetricsCacheSize: defaultResourceMetricsCacheSize,
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Namespace: DefaultNamespace,
},
},
{
Expand All @@ -146,6 +152,7 @@ func TestLoadConfig(t *testing.T) {
ResourceMetricsCacheSize: defaultResourceMetricsCacheSize,
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Namespace: DefaultNamespace,
},
extraAssertions: func(config *Config) {
assert.Equal(t, defaultDeltaTimestampCacheSize, config.GetDeltaTimestampCacheSize())
Expand Down
12 changes: 9 additions & 3 deletions connector/spanmetricsconnector/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,22 +295,28 @@ func (p *connectorImp) buildMetrics() pmetric.Metrics {
return startTime
}

metricsNamespace := p.config.Namespace
if legacyMetricNamesFeatureGate.IsEnabled() && metricsNamespace == DefaultNamespace {
metricsNamespace = ""
}

sums := rawMetrics.sums
metric := sm.Metrics().AppendEmpty()
metric.SetName(buildMetricName(p.config.Namespace, metricNameCalls))
metric.SetName(buildMetricName(metricsNamespace, metricNameCalls))
sums.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality())

if !p.config.Histogram.Disable {
histograms := rawMetrics.histograms
metric = sm.Metrics().AppendEmpty()
metric.SetName(buildMetricName(p.config.Namespace, metricNameDuration))
metric.SetName(buildMetricName(metricsNamespace, metricNameDuration))
metric.SetUnit(p.config.Histogram.Unit.String())
histograms.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality())
}

events := rawMetrics.events
if p.events.Enabled {
metric = sm.Metrics().AppendEmpty()
metric.SetName(buildMetricName(p.config.Namespace, metricNameEvents))
metric.SetName(buildMetricName(metricsNamespace, metricNameEvents))
events.BuildMetrics(metric, startTimeGenerator, timestamp, p.config.GetAggregationTemporality())
}

Expand Down
102 changes: 65 additions & 37 deletions connector/spanmetricsconnector/connector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"go.opentelemetry.io/collector/connector/connectortest"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/consumer/consumertest"
"go.opentelemetry.io/collector/featuregate"
"go.opentelemetry.io/collector/pdata/pcommon"
"go.opentelemetry.io/collector/pdata/pmetric"
"go.opentelemetry.io/collector/pdata/ptrace"
Expand Down Expand Up @@ -1053,53 +1054,80 @@ func BenchmarkConnectorConsumeTraces(b *testing.B) {
}

func TestExcludeDimensionsConsumeTraces(t *testing.T) {
excludeDimensions := []string{"span.kind", "span.name", "totallyWrongNameDoesNotAffectAnything"}
p, err := newConnectorImp(stringp("defaultNullValue"), explicitHistogramsConfig, disabledExemplarsConfig, disabledEventsConfig, cumulative, 0, []string{}, 1000, clockwork.NewFakeClock(), excludeDimensions...)
require.NoError(t, err)
traces := buildSampleTrace()

// Test
ctx := metadata.NewIncomingContext(context.Background(), nil)
testcases := []struct {
dsc string
featureGateEnabled bool
}{
{
dsc: fmt.Sprintf("%s enabled", legacyMetricNamesFeatureGateID),
featureGateEnabled: true,
},
{
dsc: fmt.Sprintf("%s disabled", legacyMetricNamesFeatureGateID),
featureGateEnabled: false,
},
}

err = p.ConsumeTraces(ctx, traces)
require.NoError(t, err)
metrics := p.buildMetrics()
excludeDimensions := []string{"span.kind", "span.name", "totallyWrongNameDoesNotAffectAnything"}
for _, tc := range testcases {
tc := tc
t.Run(tc.dsc, func(t *testing.T) {
// Set feature gate value
previousValue := legacyMetricNamesFeatureGate.IsEnabled()
require.NoError(t, featuregate.GlobalRegistry().Set(legacyMetricNamesFeatureGate.ID(), tc.featureGateEnabled))
defer func() {
require.NoError(t, featuregate.GlobalRegistry().Set(legacyMetricNamesFeatureGate.ID(), previousValue))
}()

p, err := newConnectorImp(stringp("defaultNullValue"), explicitHistogramsConfig, disabledExemplarsConfig, disabledEventsConfig, cumulative, 0, []string{}, 1000, clockwork.NewFakeClock(), excludeDimensions...)
require.NoError(t, err)
traces := buildSampleTrace()

for i := 0; i < metrics.ResourceMetrics().Len(); i++ {
rm := metrics.ResourceMetrics().At(i)
ism := rm.ScopeMetrics()
// Checking all metrics, naming notice: ilmC/mC - C here is for Counter.
for ilmC := 0; ilmC < ism.Len(); ilmC++ {
m := ism.At(ilmC).Metrics()
for mC := 0; mC < m.Len(); mC++ {
metric := m.At(mC)
// We check only sum and histogram metrics here, because for now only they are present in this module.
ctx := metadata.NewIncomingContext(context.Background(), nil)

switch metric.Type() {
case pmetric.MetricTypeExponentialHistogram, pmetric.MetricTypeHistogram:
{
dp := metric.Histogram().DataPoints()
for dpi := 0; dpi < dp.Len(); dpi++ {
for attributeKey := range dp.At(dpi).Attributes().AsRaw() {
assert.NotContains(t, excludeDimensions, attributeKey)
}
err = p.ConsumeTraces(ctx, traces)
require.NoError(t, err)
metrics := p.buildMetrics()

}
}
case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge, pmetric.MetricTypeSum, pmetric.MetricTypeSummary:
{
dp := metric.Sum().DataPoints()
for dpi := 0; dpi < dp.Len(); dpi++ {
for attributeKey := range dp.At(dpi).Attributes().AsRaw() {
assert.NotContains(t, excludeDimensions, attributeKey)
for i := 0; i < metrics.ResourceMetrics().Len(); i++ {
rm := metrics.ResourceMetrics().At(i)
ism := rm.ScopeMetrics()
// Checking all metrics, naming notice: ilmC/mC - C here is for Counter.
for ilmC := 0; ilmC < ism.Len(); ilmC++ {
m := ism.At(ilmC).Metrics()
for mC := 0; mC < m.Len(); mC++ {
metric := m.At(mC)
// We check only sum and histogram metrics here, because for now only they are present in this module.

switch metric.Type() {
case pmetric.MetricTypeExponentialHistogram, pmetric.MetricTypeHistogram:
{
dp := metric.Histogram().DataPoints()
for dpi := 0; dpi < dp.Len(); dpi++ {
for attributeKey := range dp.At(dpi).Attributes().AsRaw() {
assert.NotContains(t, excludeDimensions, attributeKey)
}

}
}
case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge, pmetric.MetricTypeSum, pmetric.MetricTypeSummary:
{
dp := metric.Sum().DataPoints()
for dpi := 0; dpi < dp.Len(); dpi++ {
for attributeKey := range dp.At(dpi).Attributes().AsRaw() {
assert.NotContains(t, excludeDimensions, attributeKey)
}
}
}

}
}

}
}

}
}

})
}

}
Expand Down
19 changes: 19 additions & 0 deletions connector/spanmetricsconnector/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,28 @@ import (
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/connector"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/featuregate"

"github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metadata"
)

const (
DefaultNamespace = "traces.span.metrics"
legacyMetricNamesFeatureGateID = "connector.spanmetrics.legacyMetricNames"
)

var legacyMetricNamesFeatureGate *featuregate.Gate

func init() {
// TODO: Remove this feature gate when the legacy metric names are removed.
legacyMetricNamesFeatureGate = featuregate.GlobalRegistry().MustRegister(
legacyMetricNamesFeatureGateID,
featuregate.StageAlpha, // Alpha because we want it disabled by default.
featuregate.WithRegisterDescription("When enabled, connector uses legacy metric names."),
featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227"),
)
}

// NewFactory creates a factory for the spanmetrics connector.
func NewFactory() connector.Factory {
return connector.NewFactory(
Expand All @@ -33,6 +51,7 @@ func createDefaultConfig() component.Config {
ResourceMetricsCacheSize: defaultResourceMetricsCacheSize,
MetricsFlushInterval: 60 * time.Second,
Histogram: HistogramConfig{Disable: false, Unit: defaultUnit},
Namespace: DefaultNamespace,
}
}

Expand Down
2 changes: 2 additions & 0 deletions connector/spanmetricsconnector/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ require (
go.opentelemetry.io/collector/connector v0.108.2-0.20240829190554-7da6b618a7ee
go.opentelemetry.io/collector/consumer v0.108.2-0.20240829190554-7da6b618a7ee
go.opentelemetry.io/collector/consumer/consumertest v0.108.2-0.20240829190554-7da6b618a7ee
go.opentelemetry.io/collector/featuregate v1.14.2-0.20240829190554-7da6b618a7ee
go.opentelemetry.io/collector/pdata v1.14.2-0.20240829190554-7da6b618a7ee
go.opentelemetry.io/collector/semconv v0.108.2-0.20240829190554-7da6b618a7ee
go.uber.org/goleak v1.3.0
Expand All @@ -31,6 +32,7 @@ require (
github.com/go-viper/mapstructure/v2 v2.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/knadh/koanf/maps v0.1.1 // indirect
Expand Down
4 changes: 4 additions & 0 deletions connector/spanmetricsconnector/go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.