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

Upgrade to OTel v0.116.0 #2314

Merged
merged 28 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
520634c
Upgrade to OTel v0.116.0
ptodev Dec 24, 2024
5e40807
Fix link in otelcol.processor.k8sattributes docs
ptodev Dec 30, 2024
1037d7e
Update to a forked Beyla.
ptodev Dec 30, 2024
8da35d2
Register feature gate in the non-test package.
ptodev Jan 1, 2025
9f310e2
Set a default ReporterPeriod in otelcol.exporter.datadog
ptodev Jan 1, 2025
5600096
Update docs/sources/reference/components/otelcol/otelcol.exporter.loa…
wildum Jan 7, 2025
0703332
Update docs/sources/reference/components/otelcol/otelcol.exporter.loa…
wildum Jan 7, 2025
17f40ca
Update docs/sources/reference/components/otelcol/otelcol.exporter.loa…
wildum Jan 7, 2025
4f12048
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 7, 2025
ee5245f
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 7, 2025
fba7c55
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 7, 2025
f9149b0
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 7, 2025
f2cb019
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 7, 2025
53b31a3
Update docs/sources/reference/components/otelcol/otelcol.processor.sp…
wildum Jan 7, 2025
c0775c2
Update docs/sources/reference/components/otelcol/otelcol.processor.sp…
wildum Jan 7, 2025
a74b835
Update docs/sources/reference/components/otelcol/otelcol.processor.sp…
wildum Jan 7, 2025
7ef21be
Update docs/sources/reference/components/otelcol/otelcol.processor.ta…
wildum Jan 7, 2025
19f89fb
Update docs/sources/reference/components/otelcol/otelcol.processor.ta…
wildum Jan 7, 2025
9b8cd4c
Update docs/sources/reference/components/otelcol/otelcol.processor.ta…
wildum Jan 7, 2025
de7dde2
Update docs/sources/reference/components/otelcol/otelcol.processor.ta…
wildum Jan 7, 2025
ff66ce0
update deprecated statement doc in k8sattribute processor
wildum Jan 7, 2025
ae4d9f9
update release-notes
wildum Jan 7, 2025
e41f185
Update docs/sources/reference/components/otelcol/otelcol.processor.k8…
wildum Jan 8, 2025
3565f7e
upgrade Beyla
wildum Jan 8, 2025
4c51cd4
fix attribute block in processor span doc
wildum Jan 8, 2025
2dfa42e
fix beyla version
wildum Jan 8, 2025
63a58fc
update beyla tests
wildum Jan 8, 2025
adceefa
Update docs/sources/release-notes.md
wildum Jan 8, 2025
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
61 changes: 61 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ internal API changes are not present.
Main (unreleased)
-----------------

### Breaking changes

- Upgrade to OpenTelemetry Collector v0.116.0:
- `otelcol.processor.tailsampling`: Change decision precedence when using `and_sub_policy` and `invert_match`.
For more information, see the [release notes for Alloy 1.6][release-notes-alloy-1_6].

[#33671]: https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/33671
[release-notes-alloy-1_6]: https://grafana.com/docs/alloy/latest/release-notes/#v16

### Features

- Add `otelcol.receiver.syslog` component to receive otel logs in syslog format (@dehaansa)
Expand Down Expand Up @@ -84,6 +93,58 @@ Main (unreleased)

- Use Go 1.23.3 for builds. (@mattdurham)

- Upgrade to OpenTelemetry Collector v0.116.0:
- `otelcol.receiver.datadog`: Return a json reponse instead of "OK" when a trace is received with a newer protocol version.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/35705
- `otelcol.receiver.datadog`: Changes response message for `/api/v1/check_run` 202 response to be JSON and on par with Datadog API spec
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36029
- `otelcol.receiver.solace`: The Solace receiver may unexpectedly terminate on reporting traces when used with a memory limiter processor and under high load.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/35958
- `otelcol.receiver.solace`: Support converting the new `Move to Dead Message Queue` and new `Delete` spans generated by Solace Event Broker to OTLP.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36071
- `otelcol.exporter.datadog`: Stop prefixing `http_server_duration`, `http_server_request_size` and `http_server_response_size` with `otelcol`.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36265
These metrics can be from SDKs rather than collector. Stop prefixing them to be consistent with
https://opentelemetry.io/docs/collector/internal-telemetry/#lists-of-internal-metrics
- `otelcol.receiver.datadog`: Add json handling for the `api/v2/series` endpoint in the datadogreceiver.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36218
- `otelcol.processor.span`: Add a new `keep_original_name` configuration argument
to keep the original span name when extracting attributes from the span name.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36397
- `pkg/ottl`: Respect the `depth` option when flattening slices using `flatten`.
The `depth` option is also now required to be at least `1`.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36198
- `otelcol.exporter.loadbalancing`: Shutdown exporters during collector shutdown. This fixes a memory leak.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36024
- `otelcol.processor.k8sattributes`: New `wait_for_metadata` and `wait_for_metadata_timeout` configuration arguments,
which block the processor startup until metadata is received from Kubernetes.
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/32556
- `otelcol.processor.k8sattributes`: Enable the `k8sattr.fieldExtractConfigRegex.disallow` for all Alloy instances,
to retain the behavior of `regex` argument in the `annotation` and `label` blocks.
When the feature gate is "deprecated" in the upstream Collector, Alloy users will need to use the transform processor instead.
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/25128
- `otelcol.receiver.vcenter`: The existing code did not honor TLS settings beyond 'insecure'.
All TLS client config should now be honored.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36482
- `otelcol.receiver.opencensus`: Do not report error message when OpenCensus receiver is shutdown cleanly.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36622
- `otelcol.processor.k8sattributes`: Fixed parsing of k8s image names to support images with tags and digests.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36145
- `otelcol.exporter.loadbalancing`: Adding sending_queue, retry_on_failure and timeout settings to loadbalancing exporter configuration.
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/35378
- `otelcol.exporter.loadbalancing`: The k8sresolver was triggering exporter churn in the way the change event was handled.
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/35658
- `otelcol.processor.k8sattributes`: Override extracted k8s attributes if original value has been empty.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36466
- `otelcol.exporter.awss3`: Upgrading to adopt aws sdk v2.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36698
- `pkg/ottl`: GetXML Converter now supports selecting text, CDATA, and attribute (value) content.
- `otelcol.exporter.loadbalancing`: Adds a an optional `return_hostnames` configuration argument to the k8s resolver.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/35411
- `otelcol.exporter.kafka`, `otelcol.receiver.kafka`: Add a new `AWS_MSK_IAM_OAUTHBEARER` mechanism.
This mechanism use the AWS MSK IAM SASL Signer for Go https://github.com/aws/aws-msk-iam-sasl-signer-go.
https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/32500

v1.5.1
-----------------

Expand Down
2 changes: 1 addition & 1 deletion docs/sources/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Grafana Alloy is a a vendor-neutral distribution of the OTel Collec
weight: 350
cascade:
ALLOY_RELEASE: v1.6.0
OTEL_VERSION: v0.112.0
OTEL_VERSION: v0.116.0
PROM_WIN_EXP_VERSION: v0.27.3
SNMP_VERSION: v0.26.0
FULL_PRODUCT_NAME: Grafana Alloy
Expand Down
2 changes: 1 addition & 1 deletion docs/sources/_index.md.t
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Grafana Alloy is a a vendor-neutral distribution of the OTel Collec
weight: 350
cascade:
ALLOY_RELEASE: $ALLOY_VERSION
OTEL_VERSION: v0.112.0
OTEL_VERSION: v0.116.0
PROM_WIN_EXP_VERSION: v0.27.3
SNMP_VERSION: v0.26.0
FULL_PRODUCT_NAME: Grafana Alloy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ otelcol.exporter.loadbalancing "LABEL" {

`otelcol.exporter.loadbalancing` supports the following arguments:

Name | Type | Description | Default | Required
--------------|----------|--------------------------------------|-------------|---------
`routing_key` | `string` | Routing strategy for load balancing. | `"traceID"` | no
Name | Type | Description | Default | Required
--------------|------------|------------------------------------------------------------------------------------|-------------|---------
`routing_key` | `string` | Routing strategy for load balancing. | `"traceID"` | no
`timeout` | `duration` | Time to wait before marking a request to the `otlp > protocol` exporter as failed. | `"0s"` | no

The `routing_key` attribute determines how to route signals across endpoints. Its value could be one of the following:
- `"service"`: spans, logs, and metrics with the same `service.name` will be exported to the same backend.
Expand All @@ -72,34 +73,52 @@ for metric collection. Otherwise, metrics for the same services would be sent to

The loadbalancer configures the exporter for the signal types supported by the `routing_key`.

The `timeout` argument is similar to the top-level `queue` and `retry` [blocks][] for `otelcol.exporter.loadbalancing` itself.
It helps to re-route data into a new set of healthy backends.
This is especially useful for highly elastic environments like Kubernetes,
where the list of resolved endpoints changes frequently due to deployments and scaling events.

[blocks]: #blocks

> **EXPERIMENTAL**: Metrics support in `otelcol.exporter.loadbalancing` is an [experimental][] feature.
> Experimental features are subject to frequent breaking changes, and may be removed with no equivalent replacement.
> The `stability.level` flag must be set to `experimental` to use the feature.
wildum marked this conversation as resolved.
Show resolved Hide resolved

[experimental]: https://grafana.com/docs/release-life-cycle/

## Blocks

The following blocks are supported inside the definition of
`otelcol.exporter.loadbalancing`:

Hierarchy | Block | Description | Required
-------------------------------------|-------------------|----------------------------------------------------------------------------|---------
resolver | [resolver][] | Configures discovering the endpoints to export to. | yes
resolver > static | [static][] | Static list of endpoints to export to. | no
resolver > dns | [dns][] | DNS-sourced list of endpoints to export to. | no
resolver > kubernetes | [kubernetes][] | Kubernetes-sourced list of endpoints to export to. | no
resolver > aws_cloud_map | [aws_cloud_map][] | AWS CloudMap-sourced list of endpoints to export to. | no
protocol | [protocol][] | Protocol settings. Only OTLP is supported at the moment. | no
protocol > otlp | [otlp][] | Configures an OTLP exporter. | no
protocol > otlp > client | [client][] | Configures the exporter gRPC client. | no
protocol > otlp > client > tls | [tls][] | Configures TLS for the gRPC client. | no
protocol > otlp > client > keepalive | [keepalive][] | Configures keepalive settings for the gRPC client. | no
protocol > otlp > queue | [queue][] | Configures batching of data before sending. | no
protocol > otlp > retry | [retry][] | Configures retry mechanism for failed requests. | no
debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no
Hierarchy | Block | Description | Required
-------------------------------------|-------------------|-----------------------------------------------------------------------------------|---------
resolver | [resolver][] | Configures discovering the endpoints to export to. | yes
resolver > static | [static][] | Static list of endpoints to export to. | no
resolver > dns | [dns][] | DNS-sourced list of endpoints to export to. | no
resolver > kubernetes | [kubernetes][] | Kubernetes-sourced list of endpoints to export to. | no
resolver > aws_cloud_map | [aws_cloud_map][] | AWS CloudMap-sourced list of endpoints to export to. | no
protocol | [protocol][] | Protocol settings. Only OTLP is supported at the moment. | no
protocol > otlp | [otlp][] | Configures an OTLP exporter. | no
protocol > otlp > client | [client][] | Configures the exporter gRPC client. | no
protocol > otlp > client > tls | [tls][] | Configures TLS for the gRPC client. | no
protocol > otlp > client > keepalive | [keepalive][] | Configures keepalive settings for the gRPC client. | no
protocol > otlp > queue | [queue][] | Configures batching of data before sending. | no
protocol > otlp > retry | [retry][] | Configures retry mechanism for failed requests. | no
queue | [queue][] | Configures batching of data before sending to the `otlp > protocol` exporter. | no
retry | [retry][] | Configures retry mechanism for failed requests to the `otlp > protocol` exporter. | no
debug_metrics | [debug_metrics][] | Configures the metrics that this component generates to monitor its state. | no

The `>` symbol indicates deeper levels of nesting. For example, `resolver > static`
refers to a `static` block defined inside a `resolver` block.

There are two types of [queue][] and [retry][] blocks:
* The queue and retry blocks under `protocol > otlp`. This is useful for temporary problems with a specific backend, like transient network issues.
* The top-level queue and retry blocks for `otelcol.exporter.loadbalancing`.
Those configuration options provide capability to re-route data into a new set of healthy backends.
This is useful for highly elastic environments like Kubernetes,
where the list of resolved endpoints changes frequently due to deployments and scaling events.

[resolver]: #resolver-block
[static]: #static-block
[dns]: #dns-block
Expand Down Expand Up @@ -154,11 +173,12 @@ The `kubernetes` resolver has a much faster response time than the `dns` resolve

The following arguments are supported:

Name | Type | Description | Default | Required
----------|----------------|-------------------------------------------------------------|----------|---------
`service` | `string` | Kubernetes service to resolve. | | yes
`ports` | `list(number)` | Ports to use with the IP addresses resolved from `service`. | `[4317]` | no
`timeout` | `duration` | Resolver timeout. | `"1s"` | no
Name | Type | Description | Default | Required
-------------------|----------------|-------------------------------------------------------------|----------|---------
`service` | `string` | Kubernetes service to resolve. | | yes
`ports` | `list(number)` | Ports to use with the IP addresses resolved from `service`. | `[4317]` | no
`timeout` | `duration` | Resolver timeout. | `"1s"` | no
`return_hostnames` | `bool` | Return hostnames instead of IPs. | `false` | no

If no namespace is specified inside `service`, an attempt will be made to infer the namespace for this {{< param "PRODUCT_NAME" >}}.
If this fails, the `default` namespace will be used.
Expand All @@ -168,6 +188,10 @@ Each of the ports listed in `ports` will be used with each of the IPs resolved f
The "get", "list", and "watch" [roles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-example)
must be granted in Kubernetes for the resolver to work.

`return_hostnames` is useful in certain situations like using Istio in sidecar mode.
To use this feature, the `service` argument must be a headless `Service`, pointing at a `StatefulSet`.
Also, the `service` argument must be what is specified under `.spec.serviceName` in the `StatefulSet`.

### aws_cloud_map block

The `aws_cloud_map` block allows users to use `otelcol.exporter.loadbalancing` when using ECS over EKS in an AWS infrastructure.
Expand Down
Loading
Loading