From a99c52ea7766ac277b86e377a915ecce423da1bc Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Wed, 15 Jun 2022 11:32:49 -0600 Subject: [PATCH 1/7] Added warnings sections --- processor/transformprocessor/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index b8af883d7a53..a728cb0acace 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -1,10 +1,11 @@ # Transform Processor | Status | | -| ------------------------ | --------------------- | +|--------------------------|-----------------------| | Stability | [alpha] | | Supported pipeline types | traces, metrics, logs | | Distributions | [contrib] | +| Warnings | [Many](#warnings) | The transform processor modifies telemetry based on configuration using the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language). It takes a list of queries which are performed in the order specified in the config. @@ -135,5 +136,16 @@ All logs See [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/CONTRIBUTING.md). + +## Warnings + +The transform processor's implementation of the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language) (TQL) allows users to modify all aspects of their telemetry. Some specific risks are listed below, but this is not an exhaustive list. In general, understand your data before using the transform processor. + +- Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/bff2cc1365bb81b03f78a732dec822fff787e288/specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/bff2cc1365bb81b03f78a732dec822fff787e288/specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. + - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. +- The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. +- The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734) + [alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha [contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib From 6c31b7a2c4f4c8dd2d698103f924f1d69c6f5944 Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Wed, 15 Jun 2022 11:43:10 -0600 Subject: [PATCH 2/7] Switched links to use main --- processor/transformprocessor/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index a728cb0acace..c7215930fdde 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -141,8 +141,8 @@ See [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-collector- The transform processor's implementation of the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language) (TQL) allows users to modify all aspects of their telemetry. Some specific risks are listed below, but this is not an exhaustive list. In general, understand your data before using the transform processor. -- Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/bff2cc1365bb81b03f78a732dec822fff787e288/specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. -- Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/bff2cc1365bb81b03f78a732dec822fff787e288/specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. +- Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. - The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. - The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734) From 4a79ccd9d9bd4b260920c51048c4abe0dc8a6832 Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Thu, 16 Jun 2022 13:39:46 -0600 Subject: [PATCH 3/7] Glossary idea --- processor/transformprocessor/README.md | 29 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index c7215930fdde..011061d58f73 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -1,11 +1,11 @@ # Transform Processor -| Status | | -|--------------------------|-----------------------| -| Stability | [alpha] | -| Supported pipeline types | traces, metrics, logs | -| Distributions | [contrib] | -| Warnings | [Many](#warnings) | +| Status | | +|--------------------------|--------------------------------------------------------------| +| Stability | [alpha] | +| Supported pipeline types | traces, metrics, logs | +| Distributions | [contrib] | +| Warnings | [Identity Crisis, Unsound Transformations, Other](#warnings) | The transform processor modifies telemetry based on configuration using the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language). It takes a list of queries which are performed in the order specified in the config. @@ -141,11 +141,24 @@ See [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-collector- The transform processor's implementation of the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language) (TQL) allows users to modify all aspects of their telemetry. Some specific risks are listed below, but this is not an exhaustive list. In general, understand your data before using the transform processor. -- Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. -- Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. +- [Identity Crisis](#identity-crisis): Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- [Unsound Transformations](#unsound-transformations): Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. - The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. - The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734) + +# Standard Warnings + +## Unsound Transformations +Incorrect usage of the component may lead to telemetry data that is unsound i.e. not spec-compliant/meaningless. Example components: transform processor + +## Statefulness +The component keeps state related to telemetry data and therefore needs all data from a producer to be sent to the same Collector instance to ensure a correct behavior. Example components: cumulativetodelta processor, any exporter to a backend that does not support cumulative metrics (so e.g. Datadog's or Dynatrace) + +## Identity Crisis +The component may change the 'identity' of a metric. Example components: transform, metricstransform + + [alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha [contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib From 4440b8a7007e290aa7fde3724fa7fee4d608cab0 Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Fri, 17 Jun 2022 08:32:58 -0600 Subject: [PATCH 4/7] Added orphaned to the glossary --- processor/transformprocessor/README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index 011061d58f73..7a044653da1d 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -141,23 +141,26 @@ See [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-collector- The transform processor's implementation of the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language) (TQL) allows users to modify all aspects of their telemetry. Some specific risks are listed below, but this is not an exhaustive list. In general, understand your data before using the transform processor. -- [Identity Crisis](#identity-crisis): Transformation of metrics have the potential to affect the [identity of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations) leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- [Identity Crisis](#identity-crisis): Transformation of metrics have the potential to affect the identity of a metric leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. - [Unsound Transformations](#unsound-transformations): Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. -- The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. +- [Orphaned Telemetry](#orphaned-telemetry): The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. - The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734) # Standard Warnings ## Unsound Transformations -Incorrect usage of the component may lead to telemetry data that is unsound i.e. not spec-compliant/meaningless. Example components: transform processor +Incorrect usage of the component may lead to telemetry data that is unsound i.e. not spec-compliant/meaningless. This would most likely be caused by converting metric data types or creating new metrics from existing metrics. ## Statefulness -The component keeps state related to telemetry data and therefore needs all data from a producer to be sent to the same Collector instance to ensure a correct behavior. Example components: cumulativetodelta processor, any exporter to a backend that does not support cumulative metrics (so e.g. Datadog's or Dynatrace) +The component keeps state related to telemetry data and therefore needs all data from a producer to be sent to the same Collector instance to ensure a correct behavior. Examples of scenarios that require state would be computing/exporting delta metrics, tail-based sampling and grouping telemetry. ## Identity Crisis -The component may change the 'identity' of a metric. Example components: transform, metricstransform +The component may change the ['identity' of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations). This could be down either by changing a metrics name, removing attributes, or updating existing attribute values. Adding attributes to metrics is always safe and does not create an Identity Crisis. + +## Orphaned Telemetry +The component modifies the incoming telemetry in such a way that a span becomes orphaned, that is, it contains a `trace_id` or `parent_span_id` that do not exist. This may occur because the component can modify `span_id`, `trace_id`, or `parent_span_id` or because the component can delete telemetry. [alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha From 4cbadd1a6d3123ad85961e23589e5a92b2c08370 Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Fri, 17 Jun 2022 08:50:16 -0600 Subject: [PATCH 5/7] Update processor/transformprocessor/README.md Co-authored-by: Pablo Baeyens --- processor/transformprocessor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index 7a044653da1d..aba0453d9bc4 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -5,7 +5,7 @@ | Stability | [alpha] | | Supported pipeline types | traces, metrics, logs | | Distributions | [contrib] | -| Warnings | [Identity Crisis, Unsound Transformations, Other](#warnings) | +| Warnings | [Identity Crisis, Unsound Transformations, Orphaned Telemetry, Other](#warnings) | The transform processor modifies telemetry based on configuration using the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language). It takes a list of queries which are performed in the order specified in the config. From 0a30b117b01498a2ad20e49f39f191c5b3aa7fe8 Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Mon, 27 Jun 2022 10:39:00 -0600 Subject: [PATCH 6/7] Link to standard warnings --- processor/transformprocessor/README.md | 33 +++++++------------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index 7a044653da1d..454b88b59f79 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -1,11 +1,11 @@ # Transform Processor -| Status | | -|--------------------------|--------------------------------------------------------------| -| Stability | [alpha] | -| Supported pipeline types | traces, metrics, logs | -| Distributions | [contrib] | -| Warnings | [Identity Crisis, Unsound Transformations, Other](#warnings) | +| Status | | +|--------------------------|------------------------------------------------------------------------------------| +| Stability | [alpha] | +| Supported pipeline types | traces, metrics, logs | +| Distributions | [contrib] | +| Warnings | [Unsound Transformations, Identity Conflict, Orphaned Telemetry, Other](#warnings) | The transform processor modifies telemetry based on configuration using the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language). It takes a list of queries which are performed in the order specified in the config. @@ -141,27 +141,12 @@ See [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-collector- The transform processor's implementation of the [Telemetry Query Language](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/processing.md#telemetry-query-language) (TQL) allows users to modify all aspects of their telemetry. Some specific risks are listed below, but this is not an exhaustive list. In general, understand your data before using the transform processor. -- [Identity Crisis](#identity-crisis): Transformation of metrics have the potential to affect the identity of a metric leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. -- [Unsound Transformations](#unsound-transformations): Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. +- [Unsound Transformations](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#unsound-transformations): Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. -- [Orphaned Telemetry](#orphaned-telemetry): The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. +- [Identity Conflict](#https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#identity-conflict): Transformation of metrics have the potential to affect the identity of a metric leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- [Orphaned Telemetry](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#orphaned-telemetry): The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. - The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734) -# Standard Warnings - -## Unsound Transformations -Incorrect usage of the component may lead to telemetry data that is unsound i.e. not spec-compliant/meaningless. This would most likely be caused by converting metric data types or creating new metrics from existing metrics. - -## Statefulness -The component keeps state related to telemetry data and therefore needs all data from a producer to be sent to the same Collector instance to ensure a correct behavior. Examples of scenarios that require state would be computing/exporting delta metrics, tail-based sampling and grouping telemetry. - -## Identity Crisis -The component may change the ['identity' of a metric](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md#opentelemetry-protocol-data-model-producer-recommendations). This could be down either by changing a metrics name, removing attributes, or updating existing attribute values. Adding attributes to metrics is always safe and does not create an Identity Crisis. - -## Orphaned Telemetry -The component modifies the incoming telemetry in such a way that a span becomes orphaned, that is, it contains a `trace_id` or `parent_span_id` that do not exist. This may occur because the component can modify `span_id`, `trace_id`, or `parent_span_id` or because the component can delete telemetry. - - [alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha [contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib From 1f022ef48ae550bee09a2a81a18dc56d1049b95b Mon Sep 17 00:00:00 2001 From: Tyler Helmuth <12352919+TylerHelmuth@users.noreply.github.com> Date: Mon, 27 Jun 2022 10:46:01 -0600 Subject: [PATCH 7/7] Fix link --- processor/transformprocessor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processor/transformprocessor/README.md b/processor/transformprocessor/README.md index 66c9bba5c75d..fc77c2bca9cf 100644 --- a/processor/transformprocessor/README.md +++ b/processor/transformprocessor/README.md @@ -143,7 +143,7 @@ The transform processor's implementation of the [Telemetry Query Language](https - [Unsound Transformations](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#unsound-transformations): Several Metric-only functions allow you to transform one metric data type to another or create new metrics from an existing metrics. Transformations between metric data types are not defined in the [metrics data model](https://github.com/open-telemetry/opentelemetry-specification/blob/main//specification/metrics/data-model.md). These functions have the expectation that you understand the incoming data and know that it can be meaningfully converted to a new metric data type or can meaningfully be used to create new metrics. - Although the TQL allows the `set` function to be used with `metric.data_type`, its implementation in the transform processor is NOOP. To modify a data type you must use a function specific to that purpose. -- [Identity Conflict](#https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#identity-conflict): Transformation of metrics have the potential to affect the identity of a metric leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. +- [Identity Conflict](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#identity-conflict): Transformation of metrics have the potential to affect the identity of a metric leading to an Identity Crisis. Be especially cautious when transforming metric name and when reducing/changing existing attributes. Adding new attributes is safe. - [Orphaned Telemetry](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/standard-warnings.md#orphaned-telemetry): The processor allows you to modify `span_id`, `trace_id`, and `parent_span_id` for traces and `span_id`, and `trace_id` logs. Modifying these fields could lead to orphaned spans or logs. - The `limit` function drops attributes at random. If there are attributes that should never be dropped then this function should not be used. [#9734](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/9734)