1ebf154690e172548c8bc36fca3b53c622bdd83b
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.56.0` → `v1.58.0` |  |  | --- ### Release Notes <details> <summary>open-telemetry/opentelemetry-collector (go.opentelemetry.io/collector/confmap)</summary> ### [`v1.58.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1580v01520) ##### 💡 Enhancements 💡 - `pkg/exporterhelper`: Add `otelcol_exporter_in_flight_requests` metric to track the number of export requests currently in-flight per exporter. ([#​15009](https://github.com/open-telemetry/opentelemetry-collector/issues/15009)) This UpDownCounter increments in startOp and decrements in endOp, allowing operators to monitor concurrent export activity and detect when an exporter is saturating its worker pool. ##### 🧰 Bug fixes 🧰 - `pkg/confighttp`: Close the original request body after reading block-format `Content-Encoding: snappy` requests. ([#​15262](https://github.com/open-telemetry/opentelemetry-collector/issues/15262)) - `pkg/confighttp`: Recover from panics in decompression libraries, return HTTP 400 instead of 500. ([#​13228](https://github.com/open-telemetry/opentelemetry-collector/issues/13228)) - `pkg/confighttp`: Enforce `max_request_body_size` on `Content-Encoding: snappy` requests before the decoded buffer is allocated. ([#​15252](https://github.com/open-telemetry/opentelemetry-collector/issues/15252)) - `pkg/otelcol`: Stop emitting verbose gRPC transport messages at WARN during normal client disconnect. ([#​5169](https://github.com/open-telemetry/opentelemetry-collector/issues/5169)) grpc-go gates chatty per-RPC notices (e.g. "HandleStreams failed to read frame: connection reset by peer") behind `LoggerV2.V(2)`. zapgrpc.Logger.V conflates grpclog verbosity with zap severity, so V(2) returns true whenever WARN is enabled and these messages emit at WARN. Wrap the installed grpclog.LoggerV2 with a corrected V() that compares against a fixed verbosity threshold, matching grpclog's intended semantics. See [uber-go/zap#1544](https://github.com/uber-go/zap/issues/1544). - `pkg/pdata`: `pcommon.Value.AsString` no longer HTML-escapes `<`, `>`, and `&` inside `ValueTypeMap` and `ValueTypeSlice` values, matching the behavior already used for `ValueTypeStr`. ([#​14662](https://github.com/open-telemetry/opentelemetry-collector/issues/14662)) - `pkg/service`: Fix Prometheus config defaults mismatch when host is explicitly set in telemetry configuration. ([#​13867](https://github.com/open-telemetry/opentelemetry-collector/issues/13867)) When users explicitly configured the telemetry metrics section (e.g. to change the host), the Prometheus exporter boolean fields (WithoutScopeInfo, WithoutUnits, WithoutTypeSuffix) defaulted to nil/false instead of true, causing metric name format changes compared to the implicit default configuration. This fix applies the correct defaults during config unmarshaling. - `pkg/service`: Return noop tracer provider when no trace processors are defined ([#​15135](https://github.com/open-telemetry/opentelemetry-collector/issues/15135)) <!-- previous-version --> ### [`v1.57.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1570v01510) ##### 🛑 Breaking changes 🛑 - `cmd/builder`: In the generated Collector source, the `replace` statements in the Go module will now use relative paths by default. ([#​15097](https://github.com/open-telemetry/opentelemetry-collector/issues/15097)) We expect that this will not break existing use-cases where the generated collector is only used in an interim manner for builds. It enables the possibility of tracking the generated Collector code as a longer living artifact, allowing it to be run on any machine (whereas absolute paths will be different depending on the machine the Collector source is generated on.) We have added `dist::use_absolute_replace_paths` to go back to the absolute path behaviour in the case where there is an unforeseen use-case that requires absolute paths. - `pkg/confighttp`: Stabilize framedSnappy feature gate. ([#​15096](https://github.com/open-telemetry/opentelemetry-collector/issues/15096)) ##### 💡 Enhancements 💡 - `all`: Add declarative schema support for service telemetry resource configuration. ([#​14411](https://github.com/open-telemetry/opentelemetry-collector/issues/14411)) The `service::telemetry::resource` configuration now accepts the declarative schema with explicit name/value pairs: ```yaml service: telemetry: resource: schema_url: https://opentelemetry.io/schemas/1.38.0 attributes: - name: service.name value: my-collector - name: host.name value: collector-host ``` The legacy inline attribute map format is still supported for backward compatibility: ```yaml service: telemetry: resource: service.name: my-collector host.name: collector-host ``` Note: `resource.detectors` is accepted for forward compatibility but is not yet applied by the collector. - `exporter/otlp_grpc`: Added the `server.address` and `url.path` attributes to metrics generated by the otlp exporter. ([#​14998](https://github.com/open-telemetry/opentelemetry-collector/issues/14998)) - `exporter/otlp_http`: Added the `server.address` and `url.path` attributes to metrics generated by the otlp\_http exporter. ([#​14998](https://github.com/open-telemetry/opentelemetry-collector/issues/14998)) - `pkg/config/configgrpc`: Add `UserAgent` field to `ClientConfig` to allow overriding the default gRPC user-agent string. ([#​14686](https://github.com/open-telemetry/opentelemetry-collector/issues/14686)) The otlp gRPC exporter was unconditionally setting the User-Agent via grpc.WithUserAgent() at dial time, which takes precedence over per-call metadata, causing any user-configured User-Agent to be silently discarded. A dedicated `UserAgent` field has been added to `ClientConfig` which, when set, is used in the dial option directly instead of the default BuildInfo-derived string. - `pkg/config/configgrpc`: Accept gRPC resolver scheme URIs in client endpoint (e.g. passthrough:///host:port) to allow control over name resolution ([#​14990](https://github.com/open-telemetry/opentelemetry-collector/issues/14990)) After the migration to grpc.NewClient, some gRPC client components such as the OTLP exporter experienced connection issues in dual-stack DNS environments. This can now be fixed by using the passthrough:/// gRPC resolver scheme in the endpoint field. - `pkg/config/confignet`: Add support for Windows Named Pipe (npipe) transport ([#​15085](https://github.com/open-telemetry/opentelemetry-collector/issues/15085)) - `pkg/service`: Emit a warning when using the old v0.2.0 declarative config format ([#​15088](https://github.com/open-telemetry/opentelemetry-collector/issues/15088)) ##### 🧰 Bug fixes 🧰 - `pkg/otelcol`: Print components exactly once in the `otelcol components` command ([#​14682](https://github.com/open-telemetry/opentelemetry-collector/issues/14682)) This resolves an issue where aliased components were skipped. - `pkg/otelcol`: Synchronize Collector Run and Shutdown lifecycles so that Shutdown blocks until Run completes all cleanup. ([#​4947](https://github.com/open-telemetry/opentelemetry-collector/issues/4947)) Shutdown now blocks until Run finishes cleanup, matching http.Server semantics. If Shutdown is called before Run, the next Run call returns nil after cleaning up the config provider. - `pkg/pdata`: Use spec-compliant string representation for NaN, Infinity, and -Infinity in Value.AsString(). ([#​14487](https://github.com/open-telemetry/opentelemetry-collector/issues/14487)) - `pkg/pprofile`: Fix data corruption of resource and scope attributes after marshal-unmarshal-merge round-trip. ([#​15084](https://github.com/open-telemetry/opentelemetry-collector/issues/15084)) - `pkg/service`: Non-string resource attributes in telemetry configuration now return an error instead of panicking ([#​15171](https://github.com/open-telemetry/opentelemetry-collector/issues/15171)) - `pkg/xscraperhelper`: fix the merge of profiles in the profiling scraper helpers ([#​14790](https://github.com/open-telemetry/opentelemetry-collector/issues/14790)) - `receiver/otlp`: Fix profiles receiver reporting its samples as spans ([#​15089](https://github.com/open-telemetry/opentelemetry-collector/issues/15089)) <!-- 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/60 Reviewed-by: t.behrendt <t.behrendt@noreply.localhost> Co-authored-by: Renovate Bot <renovate@t00n.de> Co-committed-by: Renovate Bot <renovate@t00n.de>
Trace-based Log Sampler
This processor is used to sample logs based on the sampling decision of the trace they correlate to.
How It Works
When a trace is sampled, the processor caches its traceId.
Logs are then filtered:
- If a log references a known sampled
traceId, it is beimg forwarded. - If a log references an unknown or unsampled
traceId, it is buffered for a certain amount of time. After the buffer time expires, thetraceIdis checked again. If it exists, the log is forwarded. If not, it is discarded.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
| buffer_duration_traces | duration | 180s | The duration for which traceIds are being remembered. The timer starts when the first trace or span of one traceId is received. |
| buffer_duration_logs | duration | 90s | The duration for which logs are being buffered for, before being re-evaluated. If your pipeline includes e.g. a tailbasedsampler processor, set this to above it's collection time. This ensures that logs "wait" until the traces have been processed |
Example Configuration
The followinh config is an example configuration for the processor. It is configured to buffer traceIds for 180 seconds and logs for 90 seconds.
Note that both a traces and logs pipeline is required and both have to use the same instance of the processor.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
exporters:
otlp:
endpoint: 0.0.0.0:4317
processors:
logtracesampler:
buffer_duration_traces: 180s
buffer_duration_logs: 90s
service:
pipelines:
traces:
receivers: [otlp]
processors: [logtracesampler]
exporters: [otlp]
logs:
receivers: [otlp]
processors: [logtracesampler]
exporters: [otlp]
Building
When building a custom collector you can add this processor to the mainfest like the following (refer to Building a custom collector for more information):
processors:
- gomod: gitea.t000-n.de/t.behrendt/tracebasedlogsampler v0.0.0
Languages
Go
99.7%
Makefile
0.3%