Skip to content

Commit 718ddaf

Browse files
authored
Merge branch 'main' into main
2 parents ad73d00 + 3339c59 commit 718ddaf

File tree

316 files changed

+1790
-664
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

316 files changed

+1790
-664
lines changed

.github/workflows/fossa.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: FOSSA scanning
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
fossa:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
16+
17+
- uses: fossas/fossa-action@93a52ecf7c3ac7eb40f5de77fd69b1a19524de94 # v1.5.0
18+
with:
19+
api-key: ${{secrets.FOSSA_API_KEY}}
20+
team: OpenTelemetry

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[submodule "content-modules/opentelemetry-specification"]
99
path = content-modules/opentelemetry-specification
1010
url = https://github.com/open-telemetry/opentelemetry-specification.git
11-
spec-pin = v1.41.0
11+
spec-pin = v1.42.0
1212
[submodule "content-modules/community"]
1313
path = content-modules/community
1414
url = https://github.com/open-telemetry/community

.markdownlint.json

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"emphasis-style": false,
3+
"first-line-h1": false,
34
"line-length": false,
45
"link-fragments": false,
56
"list-marker-space": false,

content/en/_includes/_index.md

-5
This file was deleted.

content/en/_includes/page-not-translated-msg.md

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
title: # bogus entry for markdownlint
32
---
43

54
<i class="fa-solid fa-circle-info" style="margin-left: -1.5rem"></i> You are

content/en/blog/2022/go-web-app-instrumentation/index.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ Here’s what the setup looks like:
183183
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
184184
)
185185

186-
func JaegerTraceProvider()(*sdktrace.TracerProvider, error) {
186+
func JaegerTracerProvider()(*sdktrace.TracerProvider, error) {
187187
exp, err: = jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint("http://localhost:14268/api/traces")))
188188
if err != nil {
189189
return nil, err
@@ -201,11 +201,11 @@ Here’s what the setup looks like:
201201
```
202202

203203
4. Go back to the main.go file and modify our code to use the
204-
JaegerTraceProvider function we just created
204+
JaegerTracerProvider function we just created
205205

206206
```go
207207
func main() {
208-
tp, tpErr: = tracing.JaegerTraceProvider()
208+
tp, tpErr: = tracing.JaegerTracerProvider()
209209
if tpErr != nil {
210210
log.Fatal(tpErr)
211211
}
@@ -322,7 +322,7 @@ Here’s what the setup looks like:
322322

323323
func main() {
324324
//Export traces to Jaeger
325-
tp, tpErr: = tracing.JaegerTraceProvider()
325+
tp, tpErr: = tracing.JaegerTracerProvider()
326326
if tpErr != nil {
327327
log.Fatal(tpErr)
328328
}

content/en/blog/2025/otel-demo-2.md

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: Announcing the OpenTelemetry Demo 2.0
3+
linkTitle: OTel Demo 2.0
4+
date: 2025-02-21
5+
author: >
6+
[Juliano Costa](https://github.com/julianocosta89) (Datadog)
7+
sig: OpenTelemetry Demo
8+
cSpell:ignore: Abhishek Veeramalla's
9+
---
10+
11+
We're thrilled to announce that OpenTelemetry Demo 2.0 is here! We've been busy
12+
behind the scenes, polishing up the demo to make it more complete, robust, and
13+
user-friendly. We believe these exciting features and improvements deserve a
14+
major release!
15+
16+
But before we jump in, let's take a look at some of the project stats.
17+
18+
## Statistics
19+
20+
With a total of 140 contributors, the OpenTelemetry Demo has been starred
21+
**2048** times. On October 26, 2022 &mdash; two days after General Availability
22+
&mdash; we had a record 40 stars in a single day. If you use the Demo, consider
23+
leaving us a star to help promote the project.
24+
25+
There are a total of 1.8K forks of the Demo. Notably, [Abhishek Veeramalla's
26+
fork][1] stands out with 142 stars and has been forked 425 times.
27+
28+
The Demo containers have been pulled over **12 million times** (11.8M times from
29+
`ghcr.io` plus 433K times from `hub.docker`).
30+
31+
The OpenTelemetry Demo includes the following CNCF projects:
32+
33+
- [OpenTelemetry](/), of course
34+
- [Envoy][2]
35+
- [OpenFeature/Flagd][3]
36+
- [Jaeger][4]
37+
- [Prometheus][5]
38+
- [Valkey][6]
39+
40+
## What's new in 2.0?
41+
42+
This release is packed with exciting upgrades and changes. The following list is
43+
a quick rundown of the highlights:
44+
45+
- **Flagd-ui introduced**: One of our most missed features since version 1.9.0
46+
is back! You can again manage feature flags directly in the Demo. For more
47+
details, see the [Feature Flags](/docs/demo/feature-flags/) page.
48+
- **Image-provider introduced**: Since release 1.10.0, we've introduced a new
49+
service called Image Provider, which delivers static product images. This
50+
service, built on NGINX, returns images for every product and demonstrates how
51+
to instrument OpenTelemetry with an NGINX proxy using the NGINX Native
52+
OpenTelemetry module.
53+
- **Redis replaced with Valkey**: Since version 1.11.0, we've replaced the Redis
54+
service with Valkey, introducing another CNCF project to the OTel Demo.
55+
- **Build args moved to `.env` file**: If you forked the Demo and were using any
56+
custom image, keeping your fork in sync with upstream was always a hassle. To
57+
make things easier, we've moved most configurations to the `.env` file. We've
58+
also added a `_DOCKERFILE` environment variable, which allows you to specify
59+
the location of your build instructions.
60+
- **Services renamed**: If you've been using the OTel Demo since its inception,
61+
you're probably accustomed to the verbose naming of every service. For 2.0,
62+
we've streamlined things by dropping the `-service` suffix from all service
63+
names. Now, instead of `ad-service`, `cart-service`, and `checkout-service`,
64+
you'll simply see `Ad`, `Cart`, and `Checkout`.
65+
- **Accounting rewritten in .NET**: We wanted to showcase OTel's .NET
66+
auto-instrumentation in the Demo without adding an extra service. Since the
67+
Accounting service was originally written in Go—and we already had another
68+
service in that language—we decided to rewrite it in .NET. Now, the Demo
69+
features both the `Accounting` and `Cart` services, each demonstrating a
70+
different way to instrument .NET applications.
71+
- **Added exemplars**: `Cart` service now records exemplars for `GetCart` and
72+
`AddItem` operations, allowing correlation between metrics and spans. See the
73+
[Exemplars section of the Cart documentation](/docs/demo/services/cart/#exemplars)
74+
to learn more.
75+
- **React Native example app**: One of the most significant additions to this
76+
release is the brand new React Native app example. It can be built for Android
77+
or iOS (currently executable locally only). For instructions on how to run and
78+
test it, see the
79+
[React Native App documentation page](/docs/demo/services/react-native-app/).
80+
- **Span links for messaging spans**: Following OTel's recommendation to always
81+
link producer and consumer spans
82+
([Messaging spans - Trace structure](/docs/specs/semconv/messaging/messaging-spans/#trace-structure)),
83+
the Demo now demonstrates this best practice. Consumer spans for `Accounting`
84+
and `Fraud-Detection` are linked to the producer span
85+
(`Checkout/orders publish`).
86+
- **Multi-arch builds**: To ensure that a variety of users can run the Demo
87+
locally, we've introduced new `make` targets to support building multiplatform
88+
images (for both `arm64` and `amd64` architectures).
89+
- **Configured Dependabot**: We were falling behind on some dependencies, but
90+
now Dependabot is configured to keep the Demo up-to-date automatically.
91+
92+
## Current challenges
93+
94+
Of course, with great updates come a few growing pains. Here's what we're
95+
currently tackling:
96+
97+
- **Grafana dashboards**: As semantic conventions and tools evolve with new
98+
releases, ensuring that our Grafana dashboards remain fully functional is a
99+
challenge. If you're experienced with Grafana, we'd love your help!
100+
- **Dependabot PR testing**: While Dependabot helps keep all service
101+
dependencies up-to-date, we haven't yet implemented automated tests to ensure
102+
that updates don't cause crashes. This testing is still a manual process.
103+
- **Demo scalability**: Balancing the expansion of demo scenarios while keeping
104+
the Demo easily runnable locally is one of our biggest challenges. With 19
105+
different services and new ideas emerging weekly, we're continuously working
106+
to maintain this balance.
107+
108+
## What's next?
109+
110+
We're not stopping here! Here are some of the next steps we're excited about,
111+
and we'd love your help:
112+
113+
- **Bring Erlang/Elixir back**: In March 2024, we removed the initial Feature
114+
Flag service written in Elixir in favor of OpenFeature and Flagd. Since then,
115+
the Demo hasn't included a service in that language, but we're aiming to
116+
reintroduce Erlang/Elixir. Any help in this area would be much appreciated!
117+
- **Remote access for React Native app**: We plan to enable the React Native app
118+
to access a remotely running Demo, expanding its usability.
119+
- **Better automation and testing**: We're working to improve our automation and
120+
testing processes—especially for Dependabot PRs—to streamline our development
121+
workflow.
122+
123+
## Get involved!
124+
125+
Your feedback and contributions are what make this project thrive. If you're
126+
interested in helping out—whether it's polishing up the dashboards, automating
127+
tests, or bringing Erlang/Elixir back—please jump in and join the discussion on
128+
our [GitHub repository][7] / SIG meetings ([calendar-demo][8]) or hop into the
129+
[#otel-community-demo slack channel][9].
130+
131+
Thank you for your continued support, and happy demoing!
132+
133+
[1]: https://github.com/iam-veeramalla/ultimate-devops-project-demo
134+
[2]: https://www.envoyproxy.io/
135+
[3]: https://flagd.dev/
136+
[4]: https://www.jaegertracing.io/
137+
[5]: https://prometheus.io/
138+
[6]: https://valkey.io/
139+
[7]: https://github.com/open-telemetry/opentelemetry-demo
140+
[8]: https://groups.google.com/a/opentelemetry.io/g/calendar-demo-app
141+
[9]: https://cloud-native.slack.com/archives/C03B4CWV4DA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
---
2+
title: OTTL contexts just got easier with context inference
3+
linkTitle: OTTL contexts just got easier
4+
date: 2025-02-20
5+
author: '[Edmo Vamerlatti Costa](https://github.com/edmocosta) (Elastic)'
6+
issue: 6289
7+
sig: Collector SIG
8+
cSpell:ignore: OTTL Vamerlatti
9+
---
10+
11+
Selecting the right OTTL context for running statements can be challenging, even
12+
for experienced users. Choosing the correct option impacts both accuracy and
13+
efficiency, as using higher-level OTTL contexts can avoid unnecessary iterations
14+
through nested lower-level contexts.
15+
16+
To simplify this process, the OpenTelemetry community is excited to announce
17+
OTTL
18+
[context inference](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/README.md#context-inference)
19+
support for the
20+
[transform processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor).
21+
This feature removes the need for users to understand the underlying context
22+
concept of OTTL, allowing them to focus solely on their data. It also improves
23+
statement processing efficiency by automatically selecting the most appropriate
24+
OTTL context. This optimization ensures that data transformations are both
25+
accurate and performant.
26+
27+
## How does it work?
28+
29+
Starting with version `0.120.0`, the transform processor supports two new
30+
context-inferred configuration styles. The first one offers a simpler and
31+
flatter approach, while the second closely resembles the existing configuration
32+
format.
33+
34+
### Basic configuration
35+
36+
The
37+
[basic configuration](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/README.md#basic-config)
38+
style simplifies configuration by allowing users to list all statements
39+
together, without worrying about OTTL contexts or extra configuration
40+
structures. This style support statements from multiple OTTL contexts and does
41+
not require grouping them separately.
42+
43+
To illustrate this, compare the following configuration:
44+
45+
```yaml
46+
metric_statements:
47+
- context: resource
48+
statements:
49+
- keep_keys(attributes, ["host.name"])
50+
- context: metric
51+
statements:
52+
- set(description, "Sum") where type == "Sum"
53+
- convert_sum_to_gauge() where name == "system.processes.count"
54+
- context: datapoint
55+
statements:
56+
- limit(attributes, 100, ["host.name"])
57+
```
58+
59+
With the new basic configuration style, the same logic is expressed more
60+
concisely by simply providing a list of statements:
61+
62+
```yaml
63+
metric_statements:
64+
- keep_keys(resource.attributes, ["host.name"])
65+
- set(metric.description, "Sum") where metric.type == "Sum"
66+
- convert_sum_to_gauge() where metric.name == "system.processes.count"
67+
- limit(datapoint.attributes, 100, ["host.name"])
68+
```
69+
70+
This streamlined approach enhances readability and makes configuration more
71+
intuitive. To use this configuration style, all paths in the statements must be
72+
prefixed with their respective OTTL contexts. These prefixes are required for
73+
all context-inferred configurations and serve as hints for selecting the best
74+
match. It also makes statements unambiguous and portable between components
75+
using OTTL.
76+
77+
### Advanced configuration
78+
79+
The context-inferred
80+
[advanced configuration](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/transformprocessor/README.md#advanced-config)
81+
style closely resembles the existing format and allows users to leverage the
82+
benefits of context inference while providing granular control over statement
83+
configurations, such as `error_mode` and `conditions`. For example, consider the
84+
following configuration:
85+
86+
```yaml
87+
metric_statements:
88+
- context: datapoint
89+
conditions:
90+
- resource.attributes["service.name"] == "my.service"
91+
statements:
92+
- set(metric.description, "counter") where attributes["my.attr"] == "some"
93+
```
94+
95+
The above can now be written as:
96+
97+
<!-- prettier-ignore -->
98+
```yaml
99+
metric_statements:
100+
- conditions:
101+
- resource.attributes["service.name"] == "my.service"
102+
statements:
103+
- set(metric.description, "counter") where datapoint.attributes["my.attr"] == "some"
104+
```
105+
106+
In this example, the `context` value is omitted and is automatically inferred to
107+
`datapoint`, as it is the only OTTL context present in the statements that
108+
supports parsing both `datapoint` and `metric` data.
109+
110+
If we update the above configuration removing the `datapoint` usage:
111+
112+
```yaml
113+
metric_statements:
114+
- conditions:
115+
- resource.attributes["service.name"] == "my.service"
116+
statements:
117+
- set(metric.description, "counter")
118+
```
119+
120+
The context inferrer would select the `metric` OTTL context instead, since no
121+
data points are accessed. Although it would be possible to run the statements
122+
using the `datapoint` OTTL context, `metric` is the most efficient option.
123+
124+
### Which configuration style should I choose?
125+
126+
The [basic configuration](#basic-configuration) style is best suited for
127+
scenarios where simplicity and ease of use are paramount. It is ideal for simple
128+
use cases where your configuration needs are straightforward and do not require
129+
the use of additional configurations keys, allowing you to quickly set up your
130+
statements with minimal effort and without needing to understand the underlying
131+
concept of OTTL contexts.
132+
133+
The [advanced configuration](#advanced-configuration) style is more detailed and
134+
allows the use of additional configuration keys such as `error_mode` and
135+
`conditions`. It supports statements from multiple OTTL contexts. However,
136+
unlike the basic configuration style, it may require splitting them into
137+
separate configuration groups (see
138+
[advanced config](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor#advanced-config)).
139+
In terms of performance, the advanced configuration is slightly faster than the
140+
basic configuration, making it a better choice for complex scenarios or
141+
configurations with a high number of statements.
142+
143+
## Try it out
144+
145+
As we wrap up, we encourage users to explore this new functionality and take
146+
advantage of its benefits in their telemetry pipelines!
147+
148+
If you have any questions or suggestions, we’d love to hear from you! Join the
149+
conversation in the `#otel-collector` channel on the
150+
[CNCF Slack workspace](https://slack.cncf.io/).

content/en/docs/collector/_index.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Collector
33
description: Vendor-agnostic way to receive, process and export telemetry data.
44
aliases: [./about]
55
cascade:
6-
vers: 0.119.0
6+
vers: 0.120.0
77
weight: 270
88
---
99

content/en/docs/collector/building/receiver.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ touch tailtracer/factory.go
350350
```
351351

352352
Now let's follow the convention and add a function named `NewFactory()` that
353-
will be responsible to instantiate the `tailtracer` factory. Go ahead the add
353+
will be responsible to instantiate the `tailtracer` factory. Go ahead and add
354354
the following code to your `factory.go` file:
355355

356356
```go

0 commit comments

Comments
 (0)