Skip to content

Commit 69b1388

Browse files
authored
Merge pull request #547 from aws-otel/rapphil-add-processors-v0.29.0
Prepare release notes for ADOT Collector v0.29.0
2 parents 9e6285f + aafc4e0 commit 69b1388

File tree

5 files changed

+192
-0
lines changed

5 files changed

+192
-0
lines changed

src/config/sideBarData.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export const sideBarData = [
108108
{label: "Kafka Receiver/Expoter", link: "/docs/components/kafka-receiver-exporter"},
109109
{label: "Logging Exporter", link: "/docs/components/misc-exporters#logging-exporter"},
110110
{label: "OTLP Exporters", link: "/docs/components/otlp-exporter"},
111+
{label: "Processors", link: "/docs/components/processors"},
111112
{label: "Prometheus Exporters", link: "/docs/components/prometheus-exporters"},
112113
{label: "StatsD Receiver", link: "/docs/components/statsd-receiver"},
113114
{label: "X-Ray Exporter", link: "/docs/getting-started/x-ray#configuring-the-aws-x-ray-exporter"},

src/content/BlogPosts/blogPosts.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ description:
66
path: /blog
77

88
blogs:
9+
- title: "AWS Distro for OpenTelemetry v0.29.0 is now available"
10+
author: "Raphael Silva"
11+
date: "15-May-2023"
12+
body:
13+
"AWS Distro for OpenTelemetry v0.29.0 is now available. You can download the latest AWS Distro for OpenTelemetry Collector image
14+
from the Amazon Elastic Container Registry (Amazon ECR) Public Gallery."
15+
link: "/docs/ReleaseBlogs/aws-distro-for-opentelemetry-collector-v0.29.0"
916
- title: "AWS Distro for OpenTelemetry Lambda Layers are now available with ADOT Collector v0.28.0"
1017
author: "Pavan Sai Vasireddy"
1118
date: "25-April-2023"
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: 'AWS Distro for OpenTelemetry v0.29.0'
3+
description:
4+
This blog post is the release announcement for ADOT Collector v0.29.0
5+
---
6+
7+
import SectionSeparator from "components/MdxSectionSeparator/sectionSeparator.jsx"
8+
9+
<SectionSeparator />
10+
11+
[AWS Distro for OpenTelemetry (ADOT)](https://aws-otel.github.io/) Collector v0.29.0 is now available.
12+
You can download the latest [ADOT Collector image](https://gallery.ecr.aws/aws-observability/aws-otel-collector) from the
13+
[Amazon Elastic Container Registry (Amazon ECR)](https://aws.amazon.com/ecr/) Public Gallery.
14+
15+
<SectionSeparator />
16+
17+
**Upstream changelog**
18+
19+
* [OpenTelemetry Collector v0.75.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.75.0)
20+
* [OpenTelemetry Collector v0.76.1](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.76.1)
21+
* [OpenTelemetry Collector Contrib v0.75.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.75.0)
22+
* [OpenTelemetry Collector Contrib v0.76.3](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.76.3)
23+
24+
**Release Highlights**
25+
26+
* Update notices for prometheus receiver [\#2053](https://github.com/aws-observability/aws-otel-collector/pull/2053) ([bryan-aguilar](https://github.com/bryan-aguilar))
27+
* Add Group by Trace and Tail Sampling processors [\#2052](https://github.com/aws-observability/aws-otel-collector/pull/2052) ([rapphil](https://github.com/rapphil))
28+
* Update to use public ecr rather than dockerhub in vended templates. [\#2045](https://github.com/aws-observability/aws-otel-collector/pull/2045) ([bryan-aguilar](https://github.com/bryan-aguilar))
29+
* Disable pkg.translator.prometheus.NormalizeName feature gate by default [\#2044](https://github.com/aws-observability/aws-otel-collector/pull/2044) ([bryan-aguilar](https://github.com/bryan-aguilar))
30+
* Deprecate lambdacomponents module [\#1981](https://github.com/aws-observability/aws-otel-collector/pull/1981) ([bryan-aguilar](https://github.com/bryan-aguilar))
31+
32+
**IMPORTANT:**
33+
34+
* [There are upstream breaking changes in prometheus related components](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.76.3) that affects metric names. The ADOT collector will adopt the upstream behaviour starting v0.31.0. For more details and testing instructions please refer to issue [#2043](https://github.com/aws-observability/aws-otel-collector/issues/2043).
35+
* The `aws.ecs.service.name` property is being set to `ServiceName` metadata in the case a collector with `awsecscontainermetricsreceiver` is running in ECS on EC2. For ECS on Fargate, `aws.ecs.service.name` is an empty string. Previously this value was always set to `"undefined"` for both EC2 and Fargate compute types. [\#19744](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/19744) ([erichsueh3](https://github.com/erichsueh3))
36+
37+
38+
Detailed release notes are on [GitHub](https://github.com/aws-observability/aws-otel-collector/releases).
39+
All code changes are upstream in the respective OpenTelemetry project components.
40+
41+
**Download**
42+
43+
Detailed technical documentation is available on the [ADOT developer site](https://aws-otel.github.io/),
44+
and you can [download the distribution](https://aws-otel.github.io/download) from
45+
[GitHub](https://github.com/aws-observability/aws-otel-collector/releases/tag/v0.29.0).
46+
You can also download the latest [ADOT Collector image](https://gallery.ecr.aws/aws-observability/aws-otel-collector)
47+
from the [Amazon Elastic Container Registry (Amazon ECR)](https://aws.amazon.com/ecr/) Public Gallery.
48+
49+
To learn more about how to use AWS Distro for OpenTelemetry (ADOT) to collect data for your observability solution,
50+
check out the hands-on [AWS Observability workshop](https://observability.workshop.aws/en/adot.html).
51+
Please file an [issue](https://github.com/aws-observability/aws-otel-community/issues) if you have any
52+
questions about the distribution, features, or its components.
53+
54+
We also welcome you to participate in the [OpenTelemetry project](https://github.com/open-telemetry).
55+
The project was [approved for incubation](https://www.cncf.io/blog/2021/08/26/opentelemetry-becomes-a-cncf-incubating-project/) status
56+
in August 2021 by the Cloud Native Computing Foundation Technical Oversight Committee (CNCF TOC). Learn more about
57+
[AWS Distro for OpenTelemetry](https://aws.amazon.com/blogs/opensource/category/management-tools/aws-distro-for-opentelemetry/) on the
58+
[AWS Open Source Blog](https://aws.amazon.com/blogs/opensource/category/management-tools/aws-distro-for-opentelemetry/), where we announced
59+
the distribution’s [general availability for tracing](https://aws.amazon.com/blogs/opensource/aws-distro-for-opentelemetry-is-now-ga-for-tracing/) in September 2021
60+
and the distribution's [general availability for metrics](https://aws.amazon.com/blogs/opensource/aws-distro-for-opentelemetry-is-now-generally-available-for-metrics/) in May 2022.

src/content/Downloads/downloads.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
- version: 'AWS Distro for OpenTelemetry Collector Version 0.29.0'
2+
releaseDate: 'May-15-2023'
3+
license: 'Apache-2.0'
4+
releaseNotesLink: 'https://github.com/aws-observability/aws-otel-collector/releases/tag/v0.29.0'
5+
documentationLink: 'https://github.com/aws-observability/aws-otel-collector/blob/v0.29.0/README.md'
6+
downloadLink: 'https://gallery.ecr.aws/aws-observability/aws-otel-collector'
17
- version: 'AWS Distro for OpenTelemetry Collector Version 0.28.0'
28
releaseDate: 'April-07-2023'
39
license: 'Apache-2.0'

src/docs/components/processors.mdx

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
title: 'Processors'
3+
description: |
4+
Processors pre-process the data collected by the receivers before they are exported by exporters. Processors can modify, batch or
5+
filter the data flowing through the pipeline.
6+
path: '/docs/components/processors'
7+
---
8+
9+
import SectionSeparator from "components/MdxSectionSeparator/sectionSeparator.jsx"
10+
11+
Processors are used in several stages of an OpenTelemetry collector pipeline. They are used to pre-process the data being passed in the pipeline. In a processor the data can be modified, batched, filtered or sampled. The
12+
ADOT collector supports a selected list of processors.
13+
14+
<SectionSeparator />
15+
16+
## Processors supported by ADOT collector
17+
18+
The ADOT collector supports the following processors:
19+
20+
* [Attributes processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/attributesprocessor#attributes-processor)
21+
* [Batch processor](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor#batch-processor)
22+
* [Delta to Rate processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/deltatorateprocessor#delta-to-rate-processor)
23+
* [Filter processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/filterprocessor#filter-processor)
24+
* [Group by Trace processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/groupbytraceprocessor/README.md)
25+
* [Memory Limiter processor](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterprocessor#memory-limiter-processor)
26+
* [Metrics Generation processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricsgenerationprocessor#metrics-generation-processor)
27+
* [Metrics Transform processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/metricstransformprocessor#metrics-transform-processor)
28+
* [Probabilistic Sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/probabilisticsamplerprocessor#probabilistic-sampling-processor)
29+
* [Resource Detection processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor#resource-detection-processor)
30+
* [Resource processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourceprocessor#resource-processor)
31+
* [Span processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/spanprocessor#span-processor)
32+
* [Tail Sampling processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor/README.md)
33+
34+
## Notes on Group by Trace and Tail Sampling processors
35+
36+
In order to achieve the desired results when using the Tail Sampling and Group by Trace processors, **do not use a Batch processor before these components in a pipeline**. Using a Batch processor before these components might separate spans belonging to a same trace. It is important to pay attention to this detail because these components will try to group all the spans belonging to a trace. In the case of the Tail Sampling processor this will allow for a sampling decision to affect all spans of a trace, creating a full picture of the trace in case it is sampled. A Batch processor immediately after these components does not cause any problems and is recommended to properly pre-process data for subsequent exporters.
37+
38+
Also, you need to make sure that all the spans for a trace are processed in the same collector instances. This is specially important for a collector running in gateway mode.
39+
40+
Besides that, you have to tune the `wait_duration` parameter of the Group by Trace processor and `decision_wait` parameter of the Tail Sampling processor to be greater than or equal to the maximum expected latency of a trace in your system. Also, be sure to include a grace period for network latency between an application and collector. Again, this will guarantee that spans of a same trace are processed in the same batch.
41+
42+
Finally to really limit the number of traces that should be kept in memory, we recommend that you use the Group by Trace processor before the Tail Sampling processor. The reason why is because the Group by Trace processor implements a limit for the number of traces to be kept in memory while this is not fully implemented in the Tail Sampling processor.
43+
44+
The Group by Trace processor will drop the oldest trace in case the `num_traces` limit is exceeded. `wait_duration` and `num_traces` should be scaled to consider the expected traffic in the monitored applications.
45+
46+
### Examples
47+
48+
If the maximum expected latency for a request in your application is 10s and the maximum traffic in number of requests per second that your application can have is 1000 requests per second, `wait_duration` should be set to 10s and `num_traces` should be set to at least 10000 (10 * 1000 requests per second). It is highly recommended that you monitor the `otelcol_processor_groupbytrace_traces_evicted` metric from the collector [self telemetry](https://opentelemetry.io/docs/collector/configuration/#service). If the value in the metric is greater than zero, that means that the collector is receiving more traffic than it can handle and you should increase the `num_traces` accordingly.
49+
50+
51+
Example from the description above:
52+
```yaml
53+
processors:
54+
groupbytrace:
55+
wait_duration: 10s
56+
num_traces: 20000 # Double the max expected traffic (2 * 10 * 1000 requests per second)
57+
tail_sampling:
58+
decision_wait: 1s # This value should be smaller than wait_duration
59+
policies:
60+
- ..... # Applicable policies
61+
batch/tracesampling:
62+
timeout: 0s # No need to wait more since this will happen in previous processors
63+
send_batch_max_size: 8196 # This will still allow us to limit the size of the batches sent to subsequent exporters
64+
65+
service:
66+
pipelines:
67+
traces/tailsampling:
68+
receivers: [otlp]
69+
processors: [groupbytrace, tail_sampling, batch/tracesampling]
70+
exporters: [awsxray]
71+
72+
```
73+
74+
The Tail Sampling processor has the functionality to combine sampling policies. For example, to sample traces from a specific path in case of errors you could use the following configuration:
75+
76+
```yaml
77+
processors:
78+
tail_sampling:
79+
decision_wait: 1s
80+
policies:
81+
- name: and-policy
82+
type: and
83+
and:
84+
and_sub_policy:
85+
- name: path-policy
86+
type: string_attribute
87+
string_attribute:
88+
key: http.url
89+
values: ["\/users"]
90+
enabled_regex_matching: true
91+
- name: error-policy
92+
type: status_code
93+
status_code:
94+
status_codes: ["ERROR", "UNSET"]
95+
```
96+
97+
In the next example we will sample 20% of the spans that present an error:
98+
99+
```yaml
100+
processors:
101+
tail_sampling:
102+
decision_wait: 1s
103+
policies:
104+
- name: and-policy
105+
type: and
106+
and:
107+
and_sub_policy:
108+
- name: error-policy
109+
type: status_code
110+
status_code:
111+
status_codes: ["ERROR", "UNSET"]
112+
- name: probabilistic-policy
113+
type: probabilistic
114+
probabilistic:
115+
sampling_percentage: 20
116+
```
117+
118+
To see the full set of policy options available to the tail sampling processor please refer to it's [README](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor/README.md).

0 commit comments

Comments
 (0)