Skip to content

[scraper/scraperhelper] Add scraper ID to error logs#14461

Merged
mx-psi merged 12 commits into
open-telemetry:mainfrom
osullivandonal:add-scraperID-to-error-logs
Jan 26, 2026
Merged

[scraper/scraperhelper] Add scraper ID to error logs#14461
mx-psi merged 12 commits into
open-telemetry:mainfrom
osullivandonal:add-scraperID-to-error-logs

Conversation

@osullivandonal
Copy link
Copy Markdown
Contributor

@osullivandonal osullivandonal commented Jan 21, 2026

Description

This PR adds the scraperID to the error logs for scrapers (metrics, logs, and profiles). Why is this important?

Currently if an error occurs in any of the scrapers in hostmetricsreceiver/internal/scraper/... there is no info about the which scraper errored in the logs:

2026-01-21T10:42:42.830Z	error	scraperhelper@v0.144.0/obs_metrics.go:61	Error scraping metrics	{"resource": {"service.instance.id": "63071771-056d-40ca-83e3-585dc1a00d57", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "error": "forced test error for scraper identification"}

The update in this PR add's the scraper ID (In this case the memory scraper errored) to the logs which then gives us:

2026-01-21T10:23:52.759Z	error	scraperhelper/obs_metrics.go:62	Error scraping metrics	{"resource": {"service.instance.id": "7137f19d-706f-4095-8367-0d68b2732402", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "scraper": "memory", "error": "forced test error for scraper identification"}

Link to tracking issue

Fixes Issue in collector-contrib.

Testing

Metrics scrapers: Locally tested with collector-contrib by updating the mod file...
Logs scrapers: The same pattern was applied. Logs scrapers (MySQL, PostgreSQL, Oracle, SQL Server receivers) require database connections for integration testing.
Profiles scrapers (xscraperhelper): The same pattern was applied. Note: There are currently no profiles scrapers in collector-contrib to test against.

Metrics scraper local test: Locally this was updated and included in the collector-contrib via updating the mod file. An error was forced in the hostmetricsreceiver/internal/scraper/... both memory and cpu, we can now see which scraper component had an error:

2026-01-21T11:51:34.176Z	error	scraperhelper/obs_metrics.go:61	Error scraping metrics	{"resource": {"service.instance.id": "e6832705-bc54-43dd-9b1f-0c06d58b7ead", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "scraper": "memory", "error": "forced test error for scraper identification"}
go.opentelemetry.io/collector/scraper/scraperhelper.wrapObsMetrics.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/obs_metrics.go:61
go.opentelemetry.io/collector/scraper.ScrapeMetricsFunc.ScrapeMetrics
	/home/dos/go/pkg/mod/go.opentelemetry.io/collector/scraper@v0.144.0/metrics.go:24
go.opentelemetry.io/collector/scraper/scraperhelper.scrapeMetrics
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:167
go.opentelemetry.io/collector/scraper/scraperhelper.NewMetricsController.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:139
go.opentelemetry.io/collector/scraper/scraperhelper/internal/controller.(*Controller[...]).startScraping.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/internal/controller/controller.go:118
2026-01-21T11:51:34.177Z	error	scraperhelper/obs_metrics.go:61	Error scraping metrics	{"resource": {"service.instance.id": "e6832705-bc54-43dd-9b1f-0c06d58b7ead", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "scraper": "cpu", "error": "forced test error for scraper identification"}
go.opentelemetry.io/collector/scraper/scraperhelper.wrapObsMetrics.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/obs_metrics.go:61
go.opentelemetry.io/collector/scraper.ScrapeMetricsFunc.ScrapeMetrics
	/home/dos/go/pkg/mod/go.opentelemetry.io/collector/scraper@v0.144.0/metrics.go:24
go.opentelemetry.io/collector/scraper/scraperhelper.scrapeMetrics
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:167
go.opentelemetry.io/collector/scraper/scraperhelper.NewMetricsController.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:139
go.opentelemetry.io/collector/scraper/scraperhelper/internal/controller.(*Controller[...]).startScraping.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/internal/controller/controller.go:118
2026-01-21T11:51:34.199Z	info	Metrics	{"resource": {"service.instance.id": "e6832705-bc54-43dd-9b1f-0c06d58b7ead", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "debug", "otelcol.component.kind": "exporter", "otelcol.signal": "metrics", "resource metrics": 1, "metrics": 1, "data points": 1}
2026-01-21T11:51:34.199Z	info	ResourceMetrics #0
Resource SchemaURL: https://opentelemetry.io/schemas/1.9.0

Closes open-telemetry/opentelemetry-collector-contrib#35814

This supliments the error logs for scrapers with the scraperID that
failed. Currently when the scraper experiences an error there is no
information in the error logs which tells the user what scraper errored.
This fix adds the scraper id, for example if the memory scraper errors
the logs now have "scraper": "memory".
Here we also provide the scraperID to the obs logs and xscraperhelper
obs profile, tests have also been added
@osullivandonal osullivandonal requested a review from a team as a code owner January 21, 2026 14:28
@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.84%. Comparing base (55399d4) to head (abc7c74).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #14461      +/-   ##
==========================================
- Coverage   91.85%   91.84%   -0.01%     
==========================================
  Files         677      677              
  Lines       42680    42683       +3     
==========================================
  Hits        39203    39203              
- Misses       2423     2425       +2     
- Partials     1054     1055       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dmathieu
Copy link
Copy Markdown
Member

I wondered whether we could have a shared context, so we don't have to repeat the attribute every time.
But to do that, we'd have to pass a logger around, or duplicate TelemetryConfig, neither of which seem very good.

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Jan 21, 2026

Merging this PR will not alter performance

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

✅ 61 untouched benchmarks
⏩ 20 skipped benchmarks1


Comparing osullivandonal:add-scraperID-to-error-logs (abc7c74) with main (55399d4)

Open in CodSpeed

Footnotes

  1. 20 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@osullivandonal
Copy link
Copy Markdown
Contributor Author

I wondered whether we could have a shared context, so we don't have to repeat the attribute every time. But to do that, we'd have to pass a logger around, or duplicate TelemetryConfig, neither of which seem very good.

We could also set the logger with scraperID in GetSettings in scraper/internal/controller/controller.go

Something like:

func GetSettings(sType component.Type, rSet receiver.Settings) scraper.Settings {
	id := component.NewID(sType)
	telemetry := rSet.TelemetrySettings
	telemetry.Logger = telemetry.Logger.With(zap.String("scraper", id.String()))
	return scraper.Settings{
		ID:                id,
		TelemetrySettings: telemetry,
		BuildInfo:         rSet.BuildInfo,
	}
}

Pros:

  • Single place to set scraperID in logs
  • All the logs for the scraper will get the scraperID
  • Can remove changes from obs_metrics.go, obs_logs.go, and obs_profiles.go.

Cons:

  • All Logs will get the scraper field now, not just Error.

@jade-guiton-dd
Copy link
Copy Markdown
Contributor

I don't really see a downside to tagging non-error logs as well. Adding the tag in GetSettings makes sense to me.

This allows us to inject the scraperID to all logs in the scrapers
metrics, logs and profiles. We can make the change once and not have
todo it in multiple places. Tests have also been updated
@osullivandonal
Copy link
Copy Markdown
Contributor Author

I don't really see a downside to tagging non-error logs as well. Adding the tag in GetSettings makes sense to me.

Sounds good, I have updated GetSettings to inject the ScraperID, and removed the duplication from obs_metrics, obs_logs, obs_profiles. Retested locally and it looks good:

e.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "scraper": "cpu", "error": "forced test error for scraper identification"}
go.opentelemetry.io/collector/scraper/scraperhelper.wrapObsMetrics.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/obs_metrics.go:61
go.opentelemetry.io/collector/scraper.ScrapeMetricsFunc.ScrapeMetrics
	/home/dos/go/pkg/mod/go.opentelemetry.io/collector/scraper@v0.144.0/metrics.go:24
go.opentelemetry.io/collector/scraper/scraperhelper.scrapeMetrics
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:167
go.opentelemetry.io/collector/scraper/scraperhelper.NewMetricsController.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:139
go.opentelemetry.io/collector/scraper/scraperhelper/internal/controller.(*Controller[...]).startScraping.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/internal/controller/controller.go:115
2026-01-22T09:29:42.659Z	error	scraperhelper/obs_metrics.go:61	Error scraping metrics	{"resource": {"service.instance.id": "4cff5cdf-e7de-47ae-9286-2f0eba636655", "service.name": "otelcontribcol", "service.version": "0.144.0-dev"}, "otelcol.component.id": "hostmetrics", "otelcol.component.kind": "receiver", "otelcol.signal": "metrics", "scraper": "memory", "error": "forced test error for scraper identification"}
go.opentelemetry.io/collector/scraper/scraperhelper.wrapObsMetrics.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/obs_metrics.go:61
go.opentelemetry.io/collector/scraper.ScrapeMetricsFunc.ScrapeMetrics
	/home/dos/go/pkg/mod/go.opentelemetry.io/collector/scraper@v0.144.0/metrics.go:24
go.opentelemetry.io/collector/scraper/scraperhelper.scrapeMetrics
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:167
go.opentelemetry.io/collector/scraper/scraperhelper.NewMetricsController.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/controller.go:139
go.opentelemetry.io/collector/scraper/scraperhelper/internal/controller.(*Controller[...]).startScraping.func1
	/home/dos/Documents/opentelemetry-collector/scraper/scraperhelper/internal/controller/controller.go:115

Comment thread .chloggen/add-scraperID-to-error-logs.yaml Outdated
Comment thread scraper/scraperhelper/xscraperhelper/obs_profiles_test.go Outdated
Comment thread scraper/scraperhelper/internal/controller/controller_test.go Outdated
Comment thread .chloggen/add-scraperID-to-error-logs.yaml Outdated
@jade-guiton-dd jade-guiton-dd added the ready-to-merge Code review completed; ready to merge by maintainers label Jan 22, 2026
@mx-psi mx-psi added this pull request to the merge queue Jan 26, 2026
Merged via the queue into open-telemetry:main with commit 85daf49 Jan 26, 2026
62 checks passed
@osullivandonal osullivandonal deleted the add-scraperID-to-error-logs branch January 27, 2026 10:10
TimoBehrendt pushed a commit to TimoBehrendt/tracebasedlogsampler that referenced this pull request Mar 19, 2026
…ocessortest to v0.147.0 (#38)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [go.opentelemetry.io/collector/processor/processortest](https://github.com/open-telemetry/opentelemetry-collector) | `v0.144.0` → `v0.147.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fcollector%2fprocessor%2fprocessortest/v0.147.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fcollector%2fprocessor%2fprocessortest/v0.144.0/v0.147.0?slim=true) |

---

### Release Notes

<details>
<summary>open-telemetry/opentelemetry-collector (go.opentelemetry.io/collector/processor/processortest)</summary>

### [`v0.147.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1530v01470)

[Compare Source](open-telemetry/opentelemetry-collector@v0.146.1...v0.147.0)

##### 💡 Enhancements 💡

- `exporter/debug`: Output bucket counts for exponential histogram data points in normal verbosity. ([#&#8203;10463](open-telemetry/opentelemetry-collector#10463))
- `pkg/exporterhelper`: Add `metadata_keys` configuration to `sending_queue.batch.partition` to partition batches by client metadata ([#&#8203;14139](open-telemetry/opentelemetry-collector#14139))
  The `metadata_keys` configuration option is now available in the `sending_queue.batch.partition` section for all exporters.
  When specified, batches are partitioned based on the values of the listed metadata keys, allowing separate batching per metadata partition. This feature
  is automatically configured when using `exporterhelper.WithQueue()`.

##### 🧰 Bug fixes 🧰

- `cmd/builder`: Fix duplicate error output when CLI command execution fails in the builder tool. ([#&#8203;14436](open-telemetry/opentelemetry-collector#14436))

- `cmd/mdatagen`: Fix duplicate error output when CLI command execution fails in the mdatagen tool. ([#&#8203;14436](open-telemetry/opentelemetry-collector#14436))

- `cmd/mdatagen`: Fix semconv URL validation for metrics with underscores in their names ([#&#8203;14583](open-telemetry/opentelemetry-collector#14583))
  Metrics like `system.disk.io_time` now correctly validate against semantic convention URLs containing underscores in the anchor tag.

- `extension/memory_limiter`: Use ChainUnaryInterceptor instead of UnaryInterceptor to allow multiple interceptors. ([#&#8203;14634](open-telemetry/opentelemetry-collector#14634))
  If multiple extensions that use the UnaryInterceptor are set the binary panics at start time.

- `extension/memory_limiter`: Add support for streaming services. ([#&#8203;14634](open-telemetry/opentelemetry-collector#14634))

- `pkg/config/configmiddleware`: Add context.Context to HTTP middleware interface constructors. ([#&#8203;14523](open-telemetry/opentelemetry-collector#14523))
  This is a breaking API change for components that implement or use extensionmiddleware.

- `pkg/confmap`: Fix another issue where configs could fail to decode when using interpolated values in string fields. ([#&#8203;14034](open-telemetry/opentelemetry-collector#14034))
  For example, a resource attribute can be set via an environment variable to a string that is parseable as a number, e.g. `1234`.

  (A similar bug was fixed in a previous release: that one was triggered when the field was nested in a struct,
  whereas this one is triggered when the field internally has type "pointer to string" rather than "string".)

- `pkg/otelcol`: The featuregate subcommand now rejects extra positional arguments instead of silently ignoring them. ([#&#8203;14554](open-telemetry/opentelemetry-collector#14554))

- `pkg/queuebatch`: Fix data race in partition\_batcher where resetTimer() was called outside mutex, causing concurrent timer.Reset() calls and unpredictable batch flush timing under load. ([#&#8203;14491](open-telemetry/opentelemetry-collector#14491))

- `pkg/scraperhelper`: Log scrapers now emit log-appropriate receiver telemetry ([#&#8203;14654](open-telemetry/opentelemetry-collector#14654))
  Log scrapers previously emitted the same receiver telemetry as metric scrapers,
  such as the otelcol\_receiver\_accepted\_metric\_points metric (instead of otelcol\_receiver\_accepted\_log\_records),
  or spans named receiver/myreceiver/MetricsReceived (instead of receiver/myreceiver/LogsReceived).

  This did not affect scraper-specific spans and metrics.

- `processor/batch`: Fixes a bug where the batch processor would not copy `SchemaUrl` metadata from resource and scope containers during partial batch splits. ([#&#8203;12279](open-telemetry/opentelemetry-collector#12279), [#&#8203;14620](open-telemetry/opentelemetry-collector#14620))

<!-- previous-version -->

### [`v0.146.1`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1520v01461)

[Compare Source](open-telemetry/opentelemetry-collector@v0.146.0...v0.146.1)

<!-- previous-version -->

### [`v0.146.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v01460)

[Compare Source](open-telemetry/opentelemetry-collector@v0.145.0...v0.146.0)

##### 🛑 Breaking changes 🛑

- `all`: Increase minimum Go version to 1.25 ([#&#8203;14567](open-telemetry/opentelemetry-collector#14567))

##### 🚩 Deprecations 🚩

- `pdata/pprofile`: Declare removed aggregation elements as deprecated. ([#&#8203;14528](open-telemetry/opentelemetry-collector#14528))

##### 💡 Enhancements 💡

- `all`: Add detailed failure attributes to exporter send\_failed metrics at detailed telemetry level. ([#&#8203;13956](open-telemetry/opentelemetry-collector#13956))
  The `otelcol_exporter_send_failed_{spans,metric_points,log_records}` metrics now include
  failure attributes when telemetry level is Detailed: `error.type` (OpenTelemetry semantic convention
  describing the error class) and `error.permanent` (indicates if error is permanent/non-retryable).
  The `error.type` attribute captures gRPC status codes (e.g., "Unavailable", "ResourceExhausted"),
  standard Go context errors (e.g., "canceled", "deadline\_exceeded"),
  and collector-specific errors (e.g., "shutdown").
  This enables better alerting and debugging by providing standardized error classification.

- `cmd/builder`: Introduce new experimental `init` subcommand ([#&#8203;14530](open-telemetry/opentelemetry-collector#14530))
  The new `init` subcommand initializes a new custom collector

- `cmd/builder`: Add "telemetry" field to allow configuring telemetry providers ([#&#8203;14575](open-telemetry/opentelemetry-collector#14575))
  Most users should not need to use this, this field should only be set if you
  intend to provide your own OpenTelemetry SDK.

- `cmd/mdatagen`: Introduce additional metadata (the version since the deprecation started, and the deprecation reason) for deprecated metrics. ([#&#8203;14113](open-telemetry/opentelemetry-collector#14113))

- `cmd/mdatagen`: Add optional `relationships` field to entity schema in metadata.yaml ([#&#8203;14284](open-telemetry/opentelemetry-collector#14284))

- `exporter/debug`: Add `output_paths` configuration option to control output destination when `use_internal_logger` is false. ([#&#8203;10472](open-telemetry/opentelemetry-collector#10472))
  When `use_internal_logger` is set to `false`, the debug exporter now supports configuring the output destination via the `output_paths` option.
  This allows users to send debug exporter output to `stdout`, `stderr`, or a file path.
  The default value is `["stdout"]` to maintain backward compatibility.

- `pkg/confmap`: Add experimental `ToStringMapRaw` function to decode `confmap.Conf` into a string map without losing internal types ([#&#8203;14480](open-telemetry/opentelemetry-collector#14480))
  This method exposes the internal structure of a `confmap.Conf` which may change at any time without prior notice

##### 🧰 Bug fixes 🧰

- `cmd/mdatagen`: Reset aggDataPoints during metric init to avoid index out of range panic across emit cycles when reaggregation is enabled. ([#&#8203;14569](open-telemetry/opentelemetry-collector#14569))
- `cmd/mdatagen`: Fix panic when mdatagen is run without arguments. ([#&#8203;14506](open-telemetry/opentelemetry-collector#14506))
- `pdata/pprofile`: Fix off-by-one issue in dictionary lookups. ([#&#8203;14534](open-telemetry/opentelemetry-collector#14534))
- `pkg/config/confighttp`: Fix high cardinality span name from request method from confighttp server internal telemetry ([#&#8203;14516](open-telemetry/opentelemetry-collector#14516))
  Follow spec to bound request method cardinality.
- `pkg/otelcol`: Ignore component aliases in the `otelcol components` command ([#&#8203;14492](open-telemetry/opentelemetry-collector#14492))
- `pkg/otelcol`: Order providers and converters in alphabetical order in the `components` subcommand. ([#&#8203;14476](open-telemetry/opentelemetry-collector#14476))

<!-- previous-version -->

### [`v0.145.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1510v01450)

[Compare Source](open-telemetry/opentelemetry-collector@v0.144.0...v0.145.0)

##### 💡 Enhancements 💡

- `pkg/scraperhelper`: ScraperID has been added to the logs for metrics, logs, and profiles ([#&#8203;14461](open-telemetry/opentelemetry-collector#14461))

##### 🧰 Bug fixes 🧰

- `exporter/otlp_grpc`: Fix the OTLP exporter balancer to use round\_robin by default, as intended. ([#&#8203;14090](open-telemetry/opentelemetry-collector#14090))

- `pkg/config/configoptional`: Fix `Unmarshal` methods not being called when config is wrapped inside `Optional` ([#&#8203;14500](open-telemetry/opentelemetry-collector#14500))
  This bug notably manifested in the fact that the `sending_queue::batch::sizer` config for exporters
  stopped defaulting to `sending_queue::sizer`, which sometimes caused the wrong units to be used
  when configuring `sending_queue::batch::min_size` and `max_size`.

  As part of the fix, `xconfmap` exposes a new `xconfmap.WithForceUnmarshaler` option, to be used in the `Unmarshal` methods
  of wrapper types like `configoptional.Optional` to make sure the `Unmarshal` method of the inner type is called.

  The default behavior remains that calling `conf.Unmarshal` on the `confmap.Conf` passed as argument to an `Unmarshal`
  method will skip any top-level `Unmarshal` methods to avoid infinite recursion in standard use cases.

- `pkg/confmap`: Fix an issue where configs could fail to decode when using interpolated values in string fields. ([#&#8203;14413](open-telemetry/opentelemetry-collector#14413))
  For example, a header can be set via an environment variable to a string that is parseable as a number, e.g. `1234`

- `pkg/service`: Don't error on startup when process metrics are enabled on unsupported OSes (e.g. AIX) ([#&#8203;14307](open-telemetry/opentelemetry-collector#14307))

<!-- previous-version -->

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/tracebasedlogsampler/pulls/38
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
TimoBehrendt pushed a commit to TimoBehrendt/tracebasedlogsampler that referenced this pull request Mar 26, 2026
…1.54.0 (#33)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [go.opentelemetry.io/collector/confmap](https://github.com/open-telemetry/opentelemetry-collector) | `v1.50.0` → `v1.54.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/go.opentelemetry.io%2fcollector%2fconfmap/v1.54.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.opentelemetry.io%2fcollector%2fconfmap/v1.50.0/v1.54.0?slim=true) |

---

### Release Notes

<details>
<summary>open-telemetry/opentelemetry-collector (go.opentelemetry.io/collector/confmap)</summary>

### [`v1.54.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1540v01480)

##### ❗ Known Issues ❗

- `service`: The collector's internal Prometheus metrics endpoint (`:8888`) now emits OTel service labels with underscore
  names (`service_name`, `service_instance_id`, `service_version`) instead of dot-notation names (`service.name`,
  `service.instance.id`, `service.version`). Users scraping this endpoint with the Prometheus receiver will see these renamed
  labels in resource and datapoint attributes. As a workaround, add the following `metric_relabel_configs` to your scrape
  config in prometheus receiver:
  ```yaml
  metric_relabel_configs:
    - source_labels: [service_name]
      target_label: service.name
    - source_labels: [service_instance_id]
      target_label: service.instance.id
    - source_labels: [service_version]
      target_label: service.version
    - regex: service_name|service_instance_id|service_version
      action: labeldrop
  ```
  See [#&#8203;14814](open-telemetry/opentelemetry-collector#14814) for details and updates.

##### 🛑 Breaking changes 🛑

- `all`: Change metric units to be singular to match OTel specification, e.g. `{requests}` -> `{request}` ([#&#8203;14753](open-telemetry/opentelemetry-collector#14753))

##### 💡 Enhancements 💡

- `cmd/mdatagen`: Add deprecated\_type field to allow specifying an alias for component types. ([#&#8203;14718](open-telemetry/opentelemetry-collector#14718))
- `cmd/mdatagen`: Generate entity-scoped MetricsBuilder API that enforces entity-metric associations at compile time ([#&#8203;14659](open-telemetry/opentelemetry-collector#14659))
- `cmd/mdatagen`: Skip generating reaggregation config options for metrics that have no aggregatable attributes. ([#&#8203;14689](open-telemetry/opentelemetry-collector#14689))
- `pkg/service`: The internal status reporter no longer drops repeated Ok and RecoverableError statuses ([#&#8203;14282](open-telemetry/opentelemetry-collector#14282))
  Status events can now carry metadata and there's value in allowing them to be emitted despite the status value itself
  not changing.

##### 🧰 Bug fixes 🧰

- `cmd/builder`: Add `.exe` to output binary names when building for Windows targets. ([#&#8203;12591](open-telemetry/opentelemetry-collector#12591))

- `exporter/debug`: Add printing of metric metadata in detailed verbosity. ([#&#8203;14667](open-telemetry/opentelemetry-collector#14667))

- `exporter/otlp_grpc`: Prevent nil pointer panic when push methods are called before the OTLP exporter initializes its gRPC clients. ([#&#8203;14663](open-telemetry/opentelemetry-collector#14663))
  When the sending queue and retry are disabled, calling ConsumeTraces,
  ConsumeMetrics, ConsumeLogs, or ConsumeProfiles before the OTLP exporter
  initializes its gRPC clients could cause a nil pointer dereference panic.
  The push methods now return an error instead of panicking.

- `exporter/otlp_http`: Show the actual destination URL in error messages when request URL is modified by middleware. ([#&#8203;14673](open-telemetry/opentelemetry-collector#14673))
  Unwraps the `*url.Error` returned by `http.Client.Do()` to prevent misleading error logs when a middleware extension dynamically updates the endpoint.

- `pdata/pprofile`: Switch the dictionary of dictionary tables entries only once when merging profiles ([#&#8203;14709](open-telemetry/opentelemetry-collector#14709))
  For dictionary table data, we used to switch their dictionaries when doing
  the switch for the data that uses them.
  However, when an entry is associated with multiple other data (several
  samples can use the same stack), we would have been switching the
  dictionaries of the entry multiple times.

  We now switch dictionaries for dictionary table data only once, before
  switching the resource profiles.

<!-- previous-version -->

### [`v1.53.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1530v01470)

##### 💡 Enhancements 💡

- `exporter/debug`: Output bucket counts for exponential histogram data points in normal verbosity. ([#&#8203;10463](open-telemetry/opentelemetry-collector#10463))
- `pkg/exporterhelper`: Add `metadata_keys` configuration to `sending_queue.batch.partition` to partition batches by client metadata ([#&#8203;14139](open-telemetry/opentelemetry-collector#14139))
  The `metadata_keys` configuration option is now available in the `sending_queue.batch.partition` section for all exporters.
  When specified, batches are partitioned based on the values of the listed metadata keys, allowing separate batching per metadata partition. This feature
  is automatically configured when using `exporterhelper.WithQueue()`.

##### 🧰 Bug fixes 🧰

- `cmd/builder`: Fix duplicate error output when CLI command execution fails in the builder tool. ([#&#8203;14436](open-telemetry/opentelemetry-collector#14436))

- `cmd/mdatagen`: Fix duplicate error output when CLI command execution fails in the mdatagen tool. ([#&#8203;14436](open-telemetry/opentelemetry-collector#14436))

- `cmd/mdatagen`: Fix semconv URL validation for metrics with underscores in their names ([#&#8203;14583](open-telemetry/opentelemetry-collector#14583))
  Metrics like `system.disk.io_time` now correctly validate against semantic convention URLs containing underscores in the anchor tag.

- `extension/memory_limiter`: Use ChainUnaryInterceptor instead of UnaryInterceptor to allow multiple interceptors. ([#&#8203;14634](open-telemetry/opentelemetry-collector#14634))
  If multiple extensions that use the UnaryInterceptor are set the binary panics at start time.

- `extension/memory_limiter`: Add support for streaming services. ([#&#8203;14634](open-telemetry/opentelemetry-collector#14634))

- `pkg/config/configmiddleware`: Add context.Context to HTTP middleware interface constructors. ([#&#8203;14523](open-telemetry/opentelemetry-collector#14523))
  This is a breaking API change for components that implement or use extensionmiddleware.

- `pkg/confmap`: Fix another issue where configs could fail to decode when using interpolated values in string fields. ([#&#8203;14034](open-telemetry/opentelemetry-collector#14034))
  For example, a resource attribute can be set via an environment variable to a string that is parseable as a number, e.g. `1234`.

  (A similar bug was fixed in a previous release: that one was triggered when the field was nested in a struct,
  whereas this one is triggered when the field internally has type "pointer to string" rather than "string".)

- `pkg/otelcol`: The featuregate subcommand now rejects extra positional arguments instead of silently ignoring them. ([#&#8203;14554](open-telemetry/opentelemetry-collector#14554))

- `pkg/queuebatch`: Fix data race in partition\_batcher where resetTimer() was called outside mutex, causing concurrent timer.Reset() calls and unpredictable batch flush timing under load. ([#&#8203;14491](open-telemetry/opentelemetry-collector#14491))

- `pkg/scraperhelper`: Log scrapers now emit log-appropriate receiver telemetry ([#&#8203;14654](open-telemetry/opentelemetry-collector#14654))
  Log scrapers previously emitted the same receiver telemetry as metric scrapers,
  such as the otelcol\_receiver\_accepted\_metric\_points metric (instead of otelcol\_receiver\_accepted\_log\_records),
  or spans named receiver/myreceiver/MetricsReceived (instead of receiver/myreceiver/LogsReceived).

  This did not affect scraper-specific spans and metrics.

- `processor/batch`: Fixes a bug where the batch processor would not copy `SchemaUrl` metadata from resource and scope containers during partial batch splits. ([#&#8203;12279](open-telemetry/opentelemetry-collector#12279), [#&#8203;14620](open-telemetry/opentelemetry-collector#14620))

<!-- previous-version -->

### [`v1.52.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1520v01461)

<!-- previous-version -->

### [`v1.51.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1510v01450)

##### 💡 Enhancements 💡

- `pkg/scraperhelper`: ScraperID has been added to the logs for metrics, logs, and profiles ([#&#8203;14461](open-telemetry/opentelemetry-collector#14461))

##### 🧰 Bug fixes 🧰

- `exporter/otlp_grpc`: Fix the OTLP exporter balancer to use round\_robin by default, as intended. ([#&#8203;14090](open-telemetry/opentelemetry-collector#14090))

- `pkg/config/configoptional`: Fix `Unmarshal` methods not being called when config is wrapped inside `Optional` ([#&#8203;14500](open-telemetry/opentelemetry-collector#14500))
  This bug notably manifested in the fact that the `sending_queue::batch::sizer` config for exporters
  stopped defaulting to `sending_queue::sizer`, which sometimes caused the wrong units to be used
  when configuring `sending_queue::batch::min_size` and `max_size`.

  As part of the fix, `xconfmap` exposes a new `xconfmap.WithForceUnmarshaler` option, to be used in the `Unmarshal` methods
  of wrapper types like `configoptional.Optional` to make sure the `Unmarshal` method of the inner type is called.

  The default behavior remains that calling `conf.Unmarshal` on the `confmap.Conf` passed as argument to an `Unmarshal`
  method will skip any top-level `Unmarshal` methods to avoid infinite recursion in standard use cases.

- `pkg/confmap`: Fix an issue where configs could fail to decode when using interpolated values in string fields. ([#&#8203;14413](open-telemetry/opentelemetry-collector#14413))
  For example, a header can be set via an environment variable to a string that is parseable as a number, e.g. `1234`

- `pkg/service`: Don't error on startup when process metrics are enabled on unsupported OSes (e.g. AIX) ([#&#8203;14307](open-telemetry/opentelemetry-collector#14307))

<!-- previous-version -->

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/tracebasedlogsampler/pulls/33
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Code review completed; ready to merge by maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[receiver/hostmetrics] should report scraper that failed in case of error

4 participants