Skip to content

[IA] Update Assisted and Automatic Instrumentation #7157

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

Open
wants to merge 42 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
dc47ad7
[IA] Update Assisted and Automatic Instrumentation
svrnm Jun 20, 2025
a62c519
Apply suggestions from code review
svrnm Jun 23, 2025
35b639c
Update content/en/docs/concepts/instrumentation/assisted.md
svrnm Jun 23, 2025
7f159ca
Update content/en/docs/automatic/_index.md
theletterf Jun 23, 2025
060b9fc
Apply suggestions from code review
svrnm Jun 27, 2025
a819b4c
Add Coroot to vendors.yaml (#7158)
CorootTeam Jun 21, 2025
6cded10
Fix TypeError in Python getting-started.md (#7163)
jl-martins Jun 23, 2025
7ee6f29
python: update getting-started with logs (#7174)
emdneto Jun 23, 2025
d5670a4
Auto-update registry versions (29403e1c27e18385d54cabde9845e14c4ee993…
opentelemetrybot Jun 24, 2025
4da5ac7
Update minimum Ruby version (#7175)
kaylareopelle Jun 24, 2025
cea043e
Bump textlint from 14.8.4 to 15.0.1 (#7169)
dependabot[bot] Jun 24, 2025
b91f8b5
[zh] Add contributing/sig-practices.md (#7166)
windsonsea Jun 24, 2025
3dd105a
[zh] Add contributing/blog.md (#7165)
windsonsea Jun 24, 2025
1aea998
[zh] Add contributing/development.md (#7154)
windsonsea Jun 24, 2025
22fe1e1
[zh] Localize content/zh/docs/languages/_includes/*.md (#7168)
Rinai-R Jun 24, 2025
07ccc8a
Bump prettier from 3.5.3 to 3.6.0 (#7170)
dependabot[bot] Jun 24, 2025
383cb43
Update community members (#7179)
opentelemetrybot Jun 24, 2025
3bc69a3
[zh] Add contributing/pr-checks.md (#7177)
windsonsea Jun 24, 2025
cd76ecf
Make PowerShell 5.1 usage more prominent (#7140)
martincostello Jun 24, 2025
4d9663f
[Collector] Add icons to converters, extensions and providers (#7185)
julianocosta89 Jun 25, 2025
ae716d5
[pt] Localize api.md (#7186)
Vinaum8 Jun 25, 2025
d26dbf0
[zh] Localize content/zh/docs/languages/go/{api,examples,libraries,re…
Rinai-R Jun 25, 2025
76a5ddd
Update community members (#7188)
opentelemetrybot Jun 25, 2025
d20e60e
Auto-update registry versions (53488f6d7c61f557f05a6cf4cbe28d92973afb…
opentelemetrybot Jun 25, 2025
faa3d00
Add PowerShell uninstallation instructions (#7190)
martincostello Jun 25, 2025
b72d3e4
Add missing backtick (#7198)
austindrenski Jun 26, 2025
632a53b
Auto-update registry versions (5ec52943340a46dcc7e7e930d55b43396d4c10…
opentelemetrybot Jun 26, 2025
eaae4f3
[zh] Add demo/architecture.md (#7187)
windsonsea Jun 26, 2025
1dbc62a
[bn] Localization of content/en/docs/concepts/signals/_index.md (#7148)
sajibAdhi Jun 26, 2025
4f08a15
Add definitions of observability backend and frontend to glossary (#7…
vitorvasc Jun 26, 2025
5ffe713
[Go] Bump semconv to v1.34.0 (#7197)
pellared Jun 26, 2025
bfe87ef
[docs][collector] Adjust code indentation for receive example (#7204)
benjaminguttmann-avtq Jun 26, 2025
4aca793
Link to OTEL_ environment variables in .NET zero-code documentation (…
martincostello Jun 26, 2025
1ae1e9f
Auto-update registry versions (d79aec422888319f412b815cb95fc796438c4e…
opentelemetrybot Jun 27, 2025
31f3083
Update community members (#7208)
opentelemetrybot Jun 27, 2025
a9020c1
[pt] feat: add doc br pull request content/pt/docs/contributing/pull-…
EzzioMoreira Jun 27, 2025
0483410
docs: Update otel-diagram.svg as requested (#6973)
leandrocaracciolo Jun 27, 2025
0bf0937
Update community member listings (#7205)
opentelemetrybot Jun 27, 2025
1350760
[zh] Add contributing/pull-requests.md (#7178)
windsonsea Jun 27, 2025
c502e66
Merge branch 'main' into ia-change-assisted-and-automatic
svrnm Jun 27, 2025
adce3dc
Add X-Frame-Options options. (#7176)
jsuereth Jun 27, 2025
45f0b36
Merge branch 'main' into ia-change-assisted-and-automatic
svrnm Jun 27, 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
17 changes: 17 additions & 0 deletions content/en/docs/automatic/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Automatic & Assisted Instrumentation
aliases: [/docs/zero-code]
redirects:
- { from: /docs/instrumentation/*, to: ':splat' } # Only for `en`
- { from: 'net/*', to: 'dotnet/:splat' }
weight: 260
---

Besides **code-based** instrumentation using the
[language-specific APIs and SDKs](/docs/languages/) the OpenTelemetry project
provides a set of solutions for **automatic** (or **zero-code**) and
**assisted** instrumentation.

You can learn about the difference between code-based, automatic and assisted instrumentation, and about their
different use cases on the
[concept page about Instrumentation](/concepts/instrumentation/).
12 changes: 12 additions & 0 deletions content/en/docs/automatic/injector.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OpenTelemetry Injector
linkTitle: Injector
description:
Injects OpenTelemetry Auto Instrumentation into applications to capture and
report traces, logs and metrics.
weight: 20
---

The OpenTelemetry Injector is currently under development. You can learn more
about it in the
[opentelemetry-injector repository](https://github.com/open-telemetry/opentelemetry-injector/).
4 changes: 4 additions & 0 deletions content/en/docs/automatic/languages/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: Language specific
weight: 10
---
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: .NET zero-code instrumentation
title: .NET automatic instrumentation
description: Send traces and metrics from .NET applications and services.
linkTitle: .NET
aliases: [net]
Expand Down
4 changes: 4 additions & 0 deletions content/en/docs/automatic/languages/go/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: Go automatic and assisted instrumentation
linkTitle: Go
---
14 changes: 14 additions & 0 deletions content/en/docs/automatic/languages/go/automatic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: Go automatic instrumentation using eBPF
linkTitle: Automatic using eBPF
weight: 16
alias: [go]
---

Automatic instrumentation for Go provides a way to instrument any Go application
and capture telemetry data from many popular libraries and frameworks without
any code changes.

This project is currently work in progress and you can visit the
[opentelemetry-go-instrumentation repository](https://github.com/open-telemetry/opentelemetry-go-instrumentation/)
to learn more.
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
title: Go zero-code instrumentation
linkTitle: Go
title: Go compile-time instrumentation
linkTitle: Go compile-time
weight: 16
alias: [go]
---

Zero-code instrumentation for Go provides a way to instrument any Go application
Expand Down
16 changes: 16 additions & 0 deletions content/en/docs/automatic/languages/java/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: Java automatic and assisted instrumentation
linkTitle: Java
aliases:
- /docs/java/automatic_instrumentation
- /docs/languages/java/automatic_instrumentation
cascade:
vers:
instrumentation: 2.16.0
otel: 1.51.0
---

Common options for automatic and assisted instrumentation with Java are the Java
agent JAR, Spring Boot Starter, and the Quarkus OpenTelemetry Extension. To
learn how to manually instrument your service or app code, see
[Manual instrumentation](/docs/languages/java/instrumentation/).
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
title: Java Agent
linkTitle: Agent
aliases:
- /docs/java/automatic_instrumentation
- /docs/languages/java/automatic_instrumentation
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: JavaScript zero-code instrumentation
title: JavaScript automatic instrumentation
linkTitle: JavaScript
description:
Capture telemetry from your application with zero source code modifications
aliases: [/docs/languages/js/automatic]
---

Zero-code instrumentation for JavaScript provides a way to instrument any
Automatic instrumentation for JavaScript provides a way to instrument any
Node.js application and capture telemetry data from many popular libraries and
frameworks without any code changes.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: PHP zero-code instrumentation
title: PHP automatic instrumentation
linkTitle: PHP
weight: 30
aliases: [/docs/languages/php/automatic]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Python zero-code instrumentation
title: Python agent
linkTitle: Python
weight: 30
aliases: [/docs/languages/python/automatic]
Expand Down
12 changes: 12 additions & 0 deletions content/en/docs/automatic/obi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OpenTelemetry eBPF Instrumentation
linkTitle: eBPF Instrumentation
description:
A lightweight and efficient way to collect telemetry data using eBPF for
user-space applications.
weight: 30
---

The OpenTelemetry eBPF Instrumentation, or OBI, is currently under
development. You can learn more about it in the
[opentelemetry-ebpf-instrumentation repository](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/).
12 changes: 12 additions & 0 deletions content/en/docs/automatic/platform-specific.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: Platform specific Automatic & assisted instrumentation
linkTitle: Platform specific
weight: 15
---

OpenTelemetry is available for a variety of platforms and environments, ensuring
seamless observability in hybrid systems. Solutions for these provide platform
specific automatic and assisted instrumentation:

- [Injecting Automatic Instrumentation using the OpenTelemetry Operator for Kubernetes](/docs/platforms/kubernetes/operator/automatic/)
- [Automatically instrument your Lambdas with OpenTelemetry](lambda-auto-instrument/)
12 changes: 12 additions & 0 deletions content/en/docs/automatic/profiler.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OpenTelemetry eBPF Profiler
linkTitle: Profiler
description:
A whole-system, cross-language profiler for Linux through eBPF, implementing the
profiling signal.
weight: 40
---

The OpenTelemetry eBPF Profiler is currently under development. You can learn
more about it in the
[opentelemetry-ebpf-profiler repository](https://github.com/open-telemetry/opentelemetry-ebpf-profiler/).
4 changes: 4 additions & 0 deletions content/en/docs/concepts/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,10 @@ Responsible for creating [Spans](#span). See [Tracer].

See [Distributed Tracing](#distributed-tracing).

### Zero-Code Instrumentation

See [Automatic Instrumentation](#automatic-instrumentation).

### zPages

An in-process alternative to external exporters. When included, they collect and
Expand Down
44 changes: 36 additions & 8 deletions content/en/docs/concepts/instrumentation/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,52 @@ For a system to be [observable], it must be **instrumented**: that is, code from
the system's components must emit [signals], such as [traces], [metrics], and
[logs].

Using OpenTelemetry, you can instrument your code in two primary ways:
Using OpenTelemetry, you can instrument your code in three primary ways:

1. [Code-based solutions](code-based/) via official
[APIs and SDKs for most languages](/docs/languages/)
2. [Zero-code solutions](zero-code/)
2. [Assisted solutions](assisted/)
3. [Automatic solutions](automatic/) (or **Zero-Code solutions**)

**Code-based** solutions allow you to get deeper insight and rich telemetry from
your application itself. They let you use the OpenTelemetry API to generate
telemetry from your application, which acts as an essential complement to the
telemetry generated by zero-code solutions.

**Zero-code** solutions are great for getting started, or when you can't modify
the application you need to get telemetry out of. They provide rich telemetry
from libraries you use and/or the environment your application runs in. Another
way to think of it is that they provide information about what's happening _at
the edges_ of your application.
**Assisted** solutions sit between code-based and automatic solutions. They can
be provided through language specific convenience packages, or through
compile-time instrumentations. Different to automatic/zero-code solutions they
require some configuration or code changes.

You can use both solutions simultaneously.
**Automatic** (or **Zero-Code**) solutions are great for getting started, or
when you can't modify the application you need to get telemetry out of. They
provide rich telemetry from libraries you use and/or the environment your
application runs in. Another way to think of it is that they provide information
about what's happening _at the edges_ of your application.

You can use all solutions simultaneously.

{{% alert title="Note" %}}

Which solution is right for you, depends on your role and requirements. While
**automatic** and **assisted** are great to add Observability to your
application quickly, they are not able to provide deep code-specific telemetry,
which can be accomplished with **code-based** instrumentation.

Additionally, there is no clear boundary between the three solutions presented
above:

- [Language specific implementations of the API & SDK](/docs/languages) often
provide convenience functions, which can assist and automate instrumentation
for a developer.
- An [instrumentation library](/docs/concepts/libraries) is a _code-based_
instrumentation by the library author, but can be consumed with _zero code
changes_ by the consumer of the library.
- Compile-time instrumentation is _automatic_ in the sense that a developer does
not need to touch their code, yet it's different from runtime instrumentation,
which can be used by Ops without support from a developer.

{{% /alert %}}

## Additional OpenTelemetry Benefits

Expand Down
27 changes: 27 additions & 0 deletions content/en/docs/concepts/instrumentation/assisted.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: Assisted
description: >-
Learn about ways to simplify the process of instrumenting your code.
weight: 30
---

Different to
[Automatic Instrumentation](/docs/concepts/instrumentation/automatic/) an
**Assisted Instrumentation** requires configuration or code changes, yet they
provide a convenient way to quickly add OpenTelemetry to your application.

An example for a technology that assists instrumentation are
[**Instrumentation Libraries**](/docs/concepts/instrumentation/libaries), which
are added by a developer to their application to extract telemetry from their
dependencies. By using them, they are no longer required to write a wrapper
themselves. Although they are an intermediate solution, until the libraries
provide out of the box support for OpenTelemetry.

Another example are language or framework specific packages, that simplify the
setup and usage of OpenTelemetry:

- For Spring Boot you can use the **Spring Boot Starter**, which will allow you
to instrument **Spring Boot Native images** and has less overhead compared to
the Java agent.
- For Go you can use the **compile-time** instrumentation, which will inject
OpenTelemetry instrumentation while your application is built.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Zero-code
title: Automatic
description: >-
Learn how to add observability to an application without the need to write
code
weight: 10
aliases: [automatic]
aliases: [zero-code]
---

As [ops](/docs/getting-started/ops/) you might want to add observability to one
Expand All @@ -13,25 +13,25 @@ quickly gain some observability for a service without having to use the
OpenTelemetry API & SDK for
[code-based instrumentation](/docs/concepts/instrumentation/code-based).

![Zero Code](./zero-code.svg)
![Automatic Solutions bundle SDK, Instrumentation Libraries and Exporters for you and inject them into the application](./automatic.svg)

Zero-code instrumentation adds the OpenTelemetry API and SDK capabilities to
your application typically as an agent or agent-like installation. The specific
mechanisms involved may differ by language, ranging from bytecode manipulation,
monkey patching, or eBPF to inject calls to the OpenTelemetry API and SDK into
your application.
**Automatic instrumentation** (or **Zero-Code Instrumentation**) adds the
OpenTelemetry API and SDK capabilities to your application typically as an agent
or agent-like installation. The specific mechanisms involved may differ by
language, ranging from bytecode manipulation, monkey patching, or eBPF to inject
calls to the OpenTelemetry API and SDK into your application.

Typically, zero-code instrumentation adds instrumentation for the libraries
Typically, automatic instrumentation adds instrumentation for the libraries
you're using. This means that requests and responses, database calls, message
queue calls, and so forth are what are instrumented. Your application's code,
however, is not typically instrumented. To instrument your code, you'll need to
use [code-based instrumentation](/docs/concepts/instrumentation/code-based).

Additionally, zero-code instrumentation lets you configure the
Additionally, automatic instrumentation lets you configure the
[Instrumentation Libraries](/docs/concepts/instrumentation/libraries) and
[exporters](/docs/concepts/components/#exporters) loaded.

You can configure zero-code instrumentation through environment variables and
You can configure automatic instrumentation through environment variables and
other language-specific mechanisms, such as system properties or arguments
passed to initialization methods. To get started, you only need a service name
configured so that you can identify the service in the observability backend of
Expand All @@ -44,11 +44,6 @@ Other configuration options are available, including:
- Propagator configuration
- Resource configuration

Automatic instrumentation is available for the following languages:

- [.NET](/docs/zero-code/dotnet/)
- [Go](/docs/zero-code/go)
- [Java](/docs/zero-code/java/)
- [JavaScript](/docs/zero-code/js/)
- [PHP](/docs/zero-code/php/)
- [Python](/docs/zero-code/python/)
The OpenTelemetry project provides Automatic Instrumentation solutions for many
technologies, you can learn more about these on the page
[Automatic & Assisted Instrumentation](/automatic)
17 changes: 0 additions & 17 deletions content/en/docs/zero-code/_index.md

This file was deleted.

16 changes: 0 additions & 16 deletions content/en/docs/zero-code/java/_index.md

This file was deleted.

Loading
Loading