Skip to content

Commit d636f15

Browse files
committed
docs(obi): update zero-code docs for v0.8.0
1 parent da51d8e commit d636f15

7 files changed

Lines changed: 116 additions & 70 deletions

File tree

content/en/docs/zero-code/obi/_index.md

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@ OBI offers the following features:
4040
- **Visibility into encrypted communications**: Capture transactions over
4141
TLS/SSL without decryption
4242
- **Context propagation**: Propagate trace context across services automatically
43-
- **Protocol support**: HTTP/S, gRPC, gRPC-Web, MQTT, Memcached, and more
43+
- **Protocol support**: HTTP/S, gRPC, gRPC-Web, JSON-RPC, MQTT, Memcached, and
44+
more
4445
- **Database instrumentation**: PostgreSQL (including pgx driver), MySQL,
4546
MongoDB, Redis, Couchbase (N1QL/SQL++ and KV protocol)
46-
- **GenAI instrumentation**: Trace and metrics for OpenAI and Anthropic Claude
47-
API calls with automatic payload extraction
47+
- **GenAI instrumentation**: Trace and metrics for OpenAI, Anthropic Claude,
48+
Google AI Studio (Gemini), and AWS Bedrock API calls with automatic payload
49+
extraction
4850
- **Low cardinality metrics**: Prometheus-compatible metrics with low
4951
cardinality for cost reduction
5052
- **Network observability**: Capture network flows between services with
@@ -54,36 +56,32 @@ OBI offers the following features:
5456
- **Collector integration**: Run OBI as an OpenTelemetry Collector receiver
5557
component
5658

57-
## Recent highlights (v0.7.0)
58-
59-
OBI v0.7.0 introduces several significant improvements:
60-
61-
- **StatsO11y**: New statistical metrics pipeline for host-level network
62-
statistics, starting with TCP RTT metrics
63-
- **Expanded protocol coverage**: Added Memcached protocol tracing support
64-
- **Enhanced GenAI instrumentation**: Added support for Anthropic Claude with
65-
automatic payload extraction
66-
- **Python asyncio improvements**: Added context propagation support for Python
67-
asyncio workloads using `uvloop`
68-
- **New example scenario**: Added an NGINX example covering direct routing,
69-
reverse proxying, and route-based telemetry across Docker, Kubernetes, and
70-
standalone deployments
71-
- **Prometheus exemplars**: Support for exemplars in metrics export for better
72-
correlation with traces
73-
- **New span types**: SQL instrumentation now emits server spans for database
74-
calls
75-
- **Operational controls**: Added configurable `log_format` and Kubernetes API
76-
reconnect interval settings
77-
- **Network diagnostics**: Added `obi_bpf_network_ignored_packets_total` for
78-
troubleshooting dropped network packets
79-
- **Release artifacts**: CycloneDX SBOMs now included in release packages for
80-
supply chain security
59+
## Recent highlights (v0.8.0)
60+
61+
OBI v0.8.0 expands protocol coverage, payload extraction, and deployment
62+
documentation:
63+
64+
- **Generic Go tracing improvements**: Added generic Go protocol support,
65+
including context propagation for generic requests
66+
- **Expanded protocol coverage**: Added JSON-RPC support across all languages
67+
- **Deeper HTTP payload extraction**: Added full HTTP body extraction, with
68+
bounded decompression for response bodies
69+
- **Broader GenAI coverage**: Added Google AI Studio (Gemini) and AWS Bedrock
70+
payload extraction, and fixed Vertex AI Gemini support
71+
- **Named CIDR labels**: Network metrics can now label configured CIDR ranges
72+
with human-readable names
73+
- **New example scenario**: Added an Apache HTTP Server example alongside the
74+
existing NGINX walkthroughs
75+
- **Support documentation**: Added a project support matrix for release
76+
artifacts and supported environments
8177

8278
For a complete list of changes and upgrade notes, see the
83-
[release notes](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases/tag/v0.7.0).
79+
[release notes](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases/tag/v0.8.0).
8480

85-
If you want to explore the new NGINX example, see the
86-
[example walkthrough](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/v0.7.0/examples/nginx).
81+
If you want to explore the upstream examples, see the
82+
[NGINX walkthrough](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/v0.8.0/examples/nginx)
83+
and the
84+
[Apache walkthrough](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/v0.8.0/examples/apache).
8785

8886
## Requirements
8987

content/en/docs/zero-code/obi/configure/export-data.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ The list of instrumentation areas OBI can collect data from:
158158
- `mqtt`: MQTT publish/subscribe message metrics (MQTT 3.1.1 and 5.0)
159159
- `couchbase`: Couchbase N1QL/SQL++ query metrics and KV (Key-Value) protocol
160160
metrics based on memcached protocol
161-
- `genai`: GenAI client metrics (OpenAI and Anthropic)
161+
- `genai`: GenAI client metrics (OpenAI, Anthropic, Gemini, and AWS Bedrock)
162162
- `gpu`: GPU performance metrics
163163
- `mongo`: MongoDB client call metrics
164164
- `dns`: DNS query metrics
@@ -218,7 +218,7 @@ The list of instrumentation areas OBI can collect data from:
218218
- `mqtt`: MQTT publish/subscribe message traces (MQTT 3.1.1 and 5.0)
219219
- `couchbase`: Couchbase N1QL/SQL++ query traces and KV (Key-Value) protocol
220220
traces, with query text and operation details
221-
- `genai`: GenAI client traces (OpenAI and Anthropic)
221+
- `genai`: GenAI client traces (OpenAI, Anthropic, Gemini, and AWS Bedrock)
222222
- `gpu`: GPU performance traces
223223
- `mongo`: MongoDB client call traces
224224
- `dns`: DNS query traces
@@ -472,7 +472,7 @@ The list of instrumentation areas OBI can collection data from:
472472
- `kafka`: Kafka client/server message queue metrics
473473
- `mqtt`: MQTT publish/subscribe message metrics
474474
- `couchbase`: Couchbase N1QL/SQL++ query metrics and KV protocol metrics
475-
- `genai`: GenAI client metrics (OpenAI and Anthropic)
475+
- `genai`: GenAI client metrics (OpenAI, Anthropic, Gemini, and AWS Bedrock)
476476

477477
For example, setting the `instrumentations` option to: `http,grpc` enables the
478478
collection of `HTTP/HTTPS/HTTP2` and `gRPC` application metrics, and disables

content/en/docs/zero-code/obi/configure/metrics-traces-attributes.md

Lines changed: 53 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ YAML section: `ebpf`
8282
You can configure the component under the `ebpf` section of your YAML
8383
configuration or via environment variables.
8484

85-
| YAML<br>environment variable | Description | Type | Default |
86-
| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- |
87-
| `context_propagation`<br>`OTEL_EBPF_BPF_CONTEXT_PROPAGATION` | Controls trace context propagation method. Accepted: `all`, `headers`, `ip`, `disabled`. For more information, refer to the [context propagation section](#context-propagation). | string | disabled |
88-
| `track_request_headers`<br>`OTEL_EBPF_BPF_TRACK_REQUEST_HEADERS` | Track incoming `Traceparent` headers for trace spans. For more information, refer to the [track request headers section](#track-request-headers). | boolean | false |
85+
| YAML<br>environment variable | Description | Type | Default |
86+
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- |
87+
| `context_propagation`<br>`OTEL_EBPF_BPF_CONTEXT_PROPAGATION` | Controls trace context propagation method. Accepted: `all`, `headers`, `tcp`, `headers,tcp`, `disabled`. For more information, refer to the [context propagation section](#context-propagation). | string | disabled |
88+
| `track_request_headers`<br>`OTEL_EBPF_BPF_TRACK_REQUEST_HEADERS` | Track incoming `Traceparent` headers for trace spans. For more information, refer to the [track request headers section](#track-request-headers). | boolean | false |
8989

9090
### Context propagation
9191

@@ -102,17 +102,21 @@ that also use TC must chain correctly with OBI. For more information about
102102
chaining programs, see the
103103
[Cilium compatibility documentation](../../cilium-compatibility/).
104104

105-
You can disable the TCP/IP level encoding and TC programs by setting
106-
`context_propagation="headers"`. This context propagation is fully compatible
107-
with any OpenTelemetry distributed tracing library.
105+
You can disable the TCP-level propagation and Linux Traffic Control programs by
106+
setting `context_propagation="headers"`. This mode is fully compatible with any
107+
OpenTelemetry distributed tracing library.
108108

109109
Context propagation values:
110110

111-
- `all`: Enable both HTTP and IP options context propagation
111+
- `all`: Enable both HTTP header and TCP context propagation
112112
- `headers`: Enable context propagation via the HTTP headers only
113-
- `ip`: Enable context propagation via the IP options field only
113+
- `tcp`: Enable context propagation via the TCP packet path only
114+
- `headers,tcp`: Enable both methods explicitly
114115
- `disabled`: Disable trace context propagation
115116

117+
`http` is accepted as an alias for `headers`, but `headers` is the preferred
118+
name in examples and configuration.
119+
116120
To use this option in containerized environments (Kubernetes and Docker), you
117121
must:
118122

@@ -121,7 +125,7 @@ must:
121125
path
122126
- Grant the `CAP_NET_ADMIN` capability to the OBI container
123127

124-
gRPC and HTTP/2 are not supported.
128+
gRPC and HTTP/2 are not supported for this network-level mode.
125129

126130
For an example of how to configure distributed traces in Kubernetes, see our
127131
[Distributed traces with OBI](../../distributed-traces/) guide.
@@ -154,22 +158,22 @@ because it can create false positives, for example, if an application sends SQL
154158
text for logging through a TCP connection. Currently, OBI natively supports the
155159
PostgreSQL and MySQL binary protocols.
156160

157-
### HTTP header enrichment for spans
161+
### HTTP header and body enrichment for spans
158162

159-
OBI can attach selected HTTP headers to spans through the
160-
`ebpf.payload_extraction.http.enrichment` configuration section. This is useful
161-
when you want to carry business or routing headers into traces without manually
162-
instrumenting the application.
163+
OBI can attach selected HTTP headers and selected HTTP body fields to spans
164+
through the `ebpf.payload_extraction.http.enrichment` configuration section.
165+
This is useful when you want to carry business or routing headers into traces
166+
without manually instrumenting the application.
163167

164168
The enrichment engine is rule-based:
165169

166-
- Set `enabled: true` to activate HTTP header enrichment.
167-
- Use `policy.default_action` to define whether unmatched headers are included
168-
or excluded. The default is `exclude`.
169-
- Use `policy.match_order` to control rule evaluation. The default is
170-
`first_match_wins`.
171-
- Use `obfuscate` rules to redact sensitive values while still exposing the
172-
header key on the span.
170+
- Set `enabled: true` to activate HTTP header and body enrichment.
171+
- Use `policy.default_action.headers` and `policy.default_action.body` to define
172+
whether unmatched headers or body content are included or excluded. The
173+
default for both is `exclude`.
174+
- Use `obfuscate` rules to redact sensitive header values or JSON body fields
175+
before they are attached to spans.
176+
- Rules are evaluated in order.
173177

174178
For example:
175179

@@ -182,8 +186,9 @@ ebpf:
182186
enrichment:
183187
enabled: true
184188
policy:
185-
default_action: exclude
186-
match_order: first_match_wins
189+
default_action:
190+
headers: exclude
191+
body: exclude
187192
obfuscation_string: '***'
188193
rules:
189194
- action: obfuscate
@@ -202,17 +207,36 @@ ebpf:
202207
- X-Custom-*
203208
- X-Dice-Roll
204209
case_sensitive: false
210+
- action: include
211+
type: body
212+
scope: request
213+
match:
214+
methods: [POST]
215+
url_path_patterns:
216+
- /v1/chat/completions
217+
- action: obfuscate
218+
type: body
219+
scope: request
220+
match:
221+
methods: [POST]
222+
url_path_patterns:
223+
- /v1/chat/completions
224+
obfuscation_json_paths:
225+
- $.messages[*].content
205226
```
206227

207-
The following environment variables control the policy defaults:
228+
The following environment variables control the global enrichment behavior:
208229

209230
- `OTEL_EBPF_HTTP_ENRICHMENT_ENABLED`
210-
- `OTEL_EBPF_HTTP_ENRICHMENT_DEFAULT_ACTION`
211-
- `OTEL_EBPF_HTTP_ENRICHMENT_MATCH_ORDER`
212231
- `OTEL_EBPF_HTTP_ENRICHMENT_OBFUSCATION_STRING`
213232

214-
Rules themselves are configured in YAML. If you expect large headers, increase
215-
`ebpf.buffer_sizes.http` so OBI can capture the relevant values.
233+
Rules themselves are configured in YAML. Header rules use `match.patterns` and
234+
optional `case_sensitive`. Body rules use `match.url_path_patterns`,
235+
`match.methods`, and `match.obfuscation_json_paths`.
236+
237+
Body extraction requires HTTP payload capture. Increase `ebpf.buffer_sizes.http`
238+
so OBI can capture the request or response bytes you want to enrich. The limit
239+
applies independently to requests and responses.
216240

217241
## Instance ID decoration
218242

content/en/docs/zero-code/obi/distributed-traces.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ from OpenTelemetry SDK instrumented services still works.
7272
7373
gRPC and HTTP/2 are not supported at the moment.
7474
75+
If you need finer control, `context_propagation` also accepts `headers`, `tcp`,
76+
and `headers,tcp`. `http` is accepted as an alias for `headers`.
77+
7578
This type of context propagation works for any programming language and doesn't
7679
require that OBI runs in `privileged` mode or has `CAP_SYS_ADMIN` granted. For
7780
more details, see the

content/en/docs/zero-code/obi/network/config.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ socket filter to capture the network events. This mode doesn't conflict with
8080
Cilium CNI or other eBPF programs, which use the Linux Traffic Control egress
8181
and ingress filters.
8282

83-
| YAML | Environment variable | Type | Default |
84-
| ------- | ------------------------- | -------- | ------- |
85-
| `cidrs` | `OTEL_EBPF_NETWORK_CIDRS` | []string | (empty) |
83+
| YAML | Environment variable | Type | Default |
84+
| ------- | ------------------------- | ------------------------------------------ | ------- |
85+
| `cidrs` | `OTEL_EBPF_NETWORK_CIDRS` | list of CIDR strings or named CIDR objects | (empty) |
8686

8787
CIDRs list, to be set as the `src.cidr` and `dst.cidr` attribute with the entry
8888
that matches the `src.address` and `dst.address` respectively.
@@ -93,8 +93,17 @@ address matches multiple CIDR definitions, the flow is decorated with the
9393
narrowest CIDR. As a result, you can safely add a `0.0.0.0/0` entry to group all
9494
the traffic that does not match any of the other CIDRs.
9595

96-
If you set this property via environment variable each entry must be separated
97-
by a comma, for example:
96+
In YAML, each entry can be either a plain CIDR string or an object with `cidr`
97+
and `name` fields. If you set this property via environment variable, each entry
98+
must be separated by a comma, for example:
99+
100+
```yaml
101+
network:
102+
cidrs:
103+
- cidr: 10.0.0.0/8
104+
name: cluster-internal
105+
- 192.168.0.0/16
106+
```
98107

99108
```sh
100109
OTEL_EBPF_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16

content/en/docs/zero-code/obi/setup/docker.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ You can verify the signature of the container image using the following
4444
commands:
4545

4646
```sh
47-
export VERSION=v0.7.0
47+
export VERSION=v0.8.0
4848

4949
# Verify a release image from Docker Hub
5050
cosign verify --certificate-identity-regexp 'https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/' --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' otel/ebpf-instrument:${VERSION}
@@ -80,7 +80,7 @@ don't have one, you can use this
8080
[simple blog engine service written in Go](https://macias.info):
8181

8282
```sh
83-
export VERSION=v0.7.0
83+
export VERSION=v0.8.0
8484
docker run -p 18443:8443 --name goblog mariomac/goblog:dev
8585
```
8686

content/en/docs/zero-code/obi/trace-log-correlation.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ weight: 35
55
description:
66
Learn how OBI correlates application logs with distributed traces for faster
77
debugging and troubleshooting.
8-
cSpell:ignore: BPFFS ringbuffer
8+
cSpell:ignore: BPFFS PYTHONUNBUFFERED ringbuffer
99
---
1010

1111
OpenTelemetry eBPF Instrumentation (OBI) correlates application logs with
@@ -119,6 +119,18 @@ and `span_id` fields into JSON log objects:
119119
Plain text logs are passed through unchanged and are **not enriched** with trace
120120
context.
121121

122+
### Runtime buffering limitations
123+
124+
The log enricher only sees trace context when the log write happens on the
125+
request-handling thread. Runtimes that buffer stdout asynchronously can break
126+
this assumption.
127+
128+
- Python in Docker commonly needs `PYTHONUNBUFFERED=1`
129+
- .NET `Console.Out` is buffered by default when stdout is a pipe; use a
130+
`StreamWriter` with `AutoFlush = true`
131+
- ASP.NET Core's default `Microsoft.Extensions.Logging.AddConsole()` pipeline is
132+
not compatible because it writes from a background thread
133+
122134
### 2. Trace export and log enrichment enabled
123135

124136
Traces must be exported and log enrichment enabled:

0 commit comments

Comments
 (0)