Skip to content

Commit

Permalink
Upgrade to OTel v0.116.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ptodev committed Dec 24, 2024
1 parent 2b42ec4 commit ed0b0fd
Show file tree
Hide file tree
Showing 43 changed files with 1,364 additions and 1,062 deletions.
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 support for metrics in `otelcol.exporter.loadbalancing` (@madaraszg-tulip)
Expand Down Expand Up @@ -70,6 +79,58 @@ Main (unreleased)

- Fixed an issue where the `otelcol.processor.interval` could not be used because the debug metrics were not set to default. (@wildum)

- 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

### Other changes

- Change the stability of the `livedebugging` feature from "experimental" to "generally available". (@wildum)
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,6 +73,11 @@ 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.

> **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.
Expand All @@ -81,25 +87,34 @@ The loadbalancer configures the exporter for the signal types supported by the `
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 ones under `protocol > otlp`. This is useful for temporary problems with a specific backend, like transient network issues.
* The ones top-level ones for `otelcol.exporter.loadbalancing` itself.
Those configuration options provide capability to re-route data into a new set of healthy backends.
This are 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 +169,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 +184,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

0 comments on commit ed0b0fd

Please sign in to comment.