Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ddd2994

Browse files
committedMar 24, 2025·
Merge branch 'main' into php_features
2 parents 1a4bb79 + a7151e6 commit ddd2994

29 files changed

+1128
-188
lines changed
 
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Check generated markdown
2+
3+
on:
4+
pull_request:
5+
types:
6+
- opened
7+
- synchronize
8+
paths:
9+
- 'docs/**'
10+
11+
jobs:
12+
check-generated-markdown:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
- name: Set up Python
18+
uses: actions/setup-python@v5
19+
with:
20+
python-version: '3.10'
21+
- name: Install dependencies
22+
run: |
23+
cd docs/gen_edot_col_components
24+
python -m pip install --upgrade pip
25+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
26+
- name: Check Markdown Generation
27+
run: |
28+
cd docs
29+
make check-md-gen

‎.github/workflows/check-links.yml

+21-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
name: Check links in docs pages
1+
name: check-links
22

33
on:
44
pull_request:
55
types:
66
- opened
77
- synchronize
8-
paths:
9-
- 'docs/**'
108

119
jobs:
12-
# Build job
13-
build:
10+
check-links:
1411
runs-on: ubuntu-latest
12+
if: needs.changed-files.outputs.docs_changed == 'true'
1513
steps:
1614
- name: Checkout
1715
uses: actions/checkout@v4
@@ -30,3 +28,21 @@ jobs:
3028
run: |
3129
cd docs
3230
make check-links
31+
32+
# This job detects if any files changed in a given path
33+
changed-files:
34+
runs-on: ubuntu-latest
35+
outputs:
36+
docs_changed: ${{ steps.filter.outputs.docs_changed }}
37+
steps:
38+
- uses: actions/checkout@v4
39+
40+
- uses: dorny/paths-filter@v3
41+
id: filter
42+
with:
43+
filters: |
44+
docs:
45+
- 'docs/**'
46+
47+
- name: Set output
48+
run: echo "docs_changed=${{ steps.filter.outputs.docs }}" >> $GITHUB_OUTPUT

‎.github/workflows/check-md-generation.yml

-30
This file was deleted.

‎.gitignore

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ docs/vendor
66
docs/Gemfile.lock
77

88
# Mac OS
9-
**/.DS_Store
9+
**/.DS_Store
10+
11+
# Python
12+
13+
__pycache__

‎docs/_edot-collector/components.md

+34-34
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,43 @@ The EDOT Collector comes with embedded Collector components from the [OTel Colle
1616
| Component | GitHub Repo | Version |
1717
|:---|:---|:---|
1818
|***Receivers***|||
19-
| [filelogreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
20-
| [hostmetricsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
21-
| [httpcheckreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/httpcheckreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
22-
| [jaegerreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/jaegerreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
23-
| [k8sclusterreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
24-
| [k8sobjectsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sobjectsreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
25-
| [kubeletstatsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/kubeletstatsreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
26-
| [otlpreceiver ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
27-
| [prometheusreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
28-
| [zipkinreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/zipkinreceiver) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
19+
| [filelogreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
20+
| [hostmetricsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
21+
| [httpcheckreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/httpcheckreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
22+
| [jaegerreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/jaegerreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
23+
| [k8sclusterreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
24+
| [k8sobjectsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sobjectsreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
25+
| [kubeletstatsreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/kubeletstatsreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
26+
| [otlpreceiver ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
27+
| [prometheusreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
28+
| [zipkinreceiver ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/zipkinreceiver) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
2929
|***Exporters***|||
30-
| [debugexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/debugexporter) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
31-
| [elasticsearchexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/elasticsearchexporter) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
32-
| [fileexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/fileexporter) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
33-
| [loadbalancingexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/loadbalancingexporter) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
34-
| [otlpexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
35-
| [otlphttpexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
30+
| [debugexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/debugexporter) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
31+
| [elasticsearchexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/elasticsearchexporter) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
32+
| [fileexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/fileexporter) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
33+
| [loadbalancingexporter ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/loadbalancingexporter) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
34+
| [otlpexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
35+
| [otlphttpexporter ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
3636
|***Processors***|||
37-
| [attributesprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/attributesprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
38-
| [batchprocessor ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
39-
| [elasticinframetricsprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elasticinframetricsprocessor) | [Elastic](https://github.com/elastic/opentelemetry-collector-components) | v0.13.0 |
40-
| [elastictraceprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elastictraceprocessor) | [Elastic](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
41-
| [filterprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/filterprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
42-
| [k8sattributesprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/k8sattributesprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
43-
| [lsmintervalprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/lsmintervalprocessor) | [Elastic](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
44-
| [memorylimiterprocessor ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterprocessor) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
45-
| [resourcedetectionprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
46-
| [resourceprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourceprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
47-
| [transformprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
37+
| [attributesprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/attributesprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
38+
| [batchprocessor ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
39+
| [elasticinframetricsprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elasticinframetricsprocessor) | [Elastic Repo](https://github.com/elastic/opentelemetry-collector-components) | v0.13.0 |
40+
| [elastictraceprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elastictraceprocessor) | [Elastic Repo](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
41+
| [filterprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/filterprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
42+
| [k8sattributesprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/k8sattributesprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
43+
| [lsmintervalprocessor ](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/lsmintervalprocessor) | [Elastic Repo](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
44+
| [memorylimiterprocessor ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/memorylimiterprocessor) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
45+
| [resourcedetectionprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
46+
| [resourceprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourceprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
47+
| [transformprocessor ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
4848
|***Connectors***|||
49-
| [routingconnector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/routingconnector) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
50-
| [signaltometricsconnector ](https://github.com/elastic/opentelemetry-collector-components/tree/main/connector/signaltometricsconnector) | [Elastic](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
51-
| [spanmetricsconnector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/spanmetricsconnector) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
49+
| [routingconnector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/routingconnector) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
50+
| [signaltometricsconnector ](https://github.com/elastic/opentelemetry-collector-components/tree/main/connector/signaltometricsconnector) | [Elastic Repo](https://github.com/elastic/opentelemetry-collector-components) | v0.3.0 |
51+
| [spanmetricsconnector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/spanmetricsconnector) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
5252
|***Extensions***|||
53-
| [filestorage ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
54-
| [healthcheckextension ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/healthcheckextension) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
55-
| [memorylimiterextension ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/memorylimiterextension) | [Core](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
56-
| [pprofextension ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/pprofextension) | [Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
53+
| [filestorage ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
54+
| [healthcheckextension ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/healthcheckextension) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
55+
| [memorylimiterextension ](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/memorylimiterextension) | [OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector) | v0.119.0 |
56+
| [pprofextension ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/pprofextension) | [OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib) | v0.119.0 |
5757

5858
<!-- end:edot-collector-components-table -->

‎docs/_edot-sdks/features.yml

+42-42
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ features:
4141
min_version: 1.0
4242
Python:
4343
status: ga
44-
min_version:
44+
min_version: 1.0
4545
Android:
4646
status: ga
4747
min_version:
4848
iOS:
4949
status: ga
50-
min_version:
50+
min_version: v1.0
5151
- name: Zero-code instrumentation
5252
link: https://opentelemetry.io/docs/concepts/instrumentation/zero-code/
5353
min_stack_version:
@@ -59,19 +59,19 @@ features:
5959
status:
6060
min_version:
6161
Node.js:
62-
status:
63-
min_version:
62+
status: ga
63+
min_version: 1.0
6464
PHP:
6565
status: ga
6666
min_version: 1.0
6767
Python:
68-
status:
69-
min_version:
68+
status: ga
69+
min_version: 1.0
7070
Android:
7171
status:
7272
min_version:
7373
iOS:
74-
status:
74+
status: not-available
7575
min_version:
7676
- name: Head-based Sampling
7777
link: https://opentelemetry.io/docs/concepts/sampling/#head-sampling
@@ -84,20 +84,20 @@ features:
8484
status:
8585
min_version:
8686
Node.js:
87-
status:
88-
min_version:
87+
status: ga
88+
min_version: 1.0
8989
PHP:
9090
status: not-available
9191
min_version:
9292
Python:
93-
status:
94-
min_version:
93+
status: ga
94+
min_version: 1.0
9595
Android:
9696
status:
9797
min_version:
9898
iOS:
99-
status:
100-
min_version:
99+
status: ga
100+
min_version: v1.0
101101
- name: Baggage
102102
link: https://opentelemetry.io/docs/concepts/signals/baggage/
103103
min_stack_version:
@@ -109,20 +109,20 @@ features:
109109
status:
110110
min_version:
111111
Node.js:
112-
status:
113-
min_version:
112+
status: ga
113+
min_version: 1.0
114114
PHP:
115115
status: ga
116116
min_version: 1.0
117117
Python:
118-
status:
119-
min_version:
118+
status: ga
119+
min_version: 1.0
120120
Android:
121121
status:
122122
min_version:
123123
iOS:
124-
status:
125-
min_version:
124+
status: ga
125+
min_version: v1.0
126126
- name: Inferred Spans
127127
link: ../edot-sdks/java/features#inferred-spans
128128
min_stack_version:
@@ -158,20 +158,20 @@ features:
158158
status: ga
159159
min_version:
160160
Node.js:
161-
status: ga
162-
min_version:
161+
status: tech-preview
162+
min_version:
163163
PHP:
164164
status: ga
165165
min_version: 1.0
166166
Python:
167-
status: ga
167+
status: tech-preview
168168
min_version:
169169
Android:
170170
status:
171171
min_version:
172172
iOS:
173-
status:
174-
min_version:
173+
status: ga
174+
min_version: v1.0
175175
- name: Logs Correlation
176176
link: https://opentelemetry.io/docs/specs/otel/logs/#opentelemetry-solution
177177
is_sub_feature: true
@@ -183,20 +183,20 @@ features:
183183
status: ga
184184
min_version:
185185
Node.js:
186-
status: ga
187-
min_version:
186+
status: tech-preview
187+
min_version:
188188
PHP:
189189
status: ga
190190
min_version: 1.0
191191
Python:
192-
status: ga
192+
status: tech-preview
193193
min_version:
194194
Android:
195195
status:
196196
min_version:
197197
iOS:
198-
status:
199-
min_version:
198+
status: ga
199+
min_version: v1.0
200200
- name: Metrics Collection
201201
link: https://opentelemetry.io/docs/concepts/signals/metrics/
202202
min_stack_version:
@@ -214,13 +214,13 @@ features:
214214
min_version: 1.0
215215
Python:
216216
status: ga
217-
min_version:
217+
min_version: 1.0
218218
Android:
219219
status:
220220
min_version:
221221
iOS:
222-
status:
223-
min_version:
222+
status: tech-preview
223+
min_version: v0.7
224224
- name: Custom Metrics
225225
link:
226226
is_sub_feature: true
@@ -239,13 +239,13 @@ features:
239239
min_version: 1.0
240240
Python:
241241
status: ga
242-
min_version:
242+
min_version: 1.0
243243
Android:
244244
status:
245245
min_version:
246246
iOS:
247-
status:
248-
min_version:
247+
status: tech-preview
248+
min_version: v0.7
249249
- name: Agent Health Monitoring
250250
link:
251251
is_sub_feature: true
@@ -282,8 +282,8 @@ features:
282282
status:
283283
min_version:
284284
Node.js:
285-
status:
286-
min_version:
285+
status: tech-preview
286+
min_version:
287287
PHP:
288288
status: not-available
289289
min_version:
@@ -294,7 +294,7 @@ features:
294294
status:
295295
min_version:
296296
iOS:
297-
status:
297+
status: not-available
298298
min_version:
299299
- name: Capturing Errors / Exceptions
300300
link:
@@ -313,13 +313,13 @@ features:
313313
min_version: 1.0
314314
Python:
315315
status: ga
316-
min_version:
316+
min_version: 1.0
317317
Android:
318318
status: ga
319319
min_version:
320320
iOS:
321321
status: ga
322-
min_version:
322+
min_version: v1.0
323323
- name: Crash Reporting
324324
link:
325325
is_sub_feature: true
@@ -344,7 +344,7 @@ features:
344344
min_version:
345345
iOS:
346346
status: ga
347-
min_version:
347+
min_version: v1.0
348348
- name: Central Configuration
349349
link:
350350
min_stack_version:
@@ -368,7 +368,7 @@ features:
368368
min_version:
369369
iOS:
370370
status: not-available
371-
min_version:
371+
min_version:
372372
- name: Profiling Integration
373373
link: ../edot-sdks/java/features#elastic-universal-profiling-integration
374374
min_stack_version:

‎docs/_edot-sdks/index.md

+57-19
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,16 @@ For languages for which Elastic does not offer its own distribution, we recommen
127127
</td>
128128
<td class="s tooltip"> <!-- Python -->
129129
<div>✅</div>
130+
<div class="xs">1.0+</div>
131+
<div class="tooltiptext">'Service Map' is available in EDOT Python since version 1.0</div>
130132
</td>
131133
<td class="s tooltip"> <!-- Android -->
132134
<div>✅</div>
133135
</td>
134136
<td class="s tooltip"> <!-- iOS -->
135137
<div>✅</div>
138+
<div class="xs">v1.0+</div>
139+
<div class="tooltiptext">'Service Map' is available in EDOT iOS since version v1.0</div>
136140
</td>
137141
</tr>
138142
<!-- Feature: Zero-code instrumentation -->
@@ -145,19 +149,23 @@ For languages for which Elastic does not offer its own distribution, we recommen
145149
<div></div>
146150
</td>
147151
<td class="s tooltip"> <!-- Node.js -->
148-
<div></div>
152+
<div>✅</div>
153+
<div class="xs">1.0+</div>
154+
<div class="tooltiptext">'Zero-code instrumentation' is available in EDOT Node.js since version 1.0</div>
149155
</td>
150156
<td class="s tooltip"> <!-- PHP -->
151157
<div></div>
152158
</td>
153159
<td class="s tooltip"> <!-- Python -->
154-
<div></div>
160+
<div>✅</div>
161+
<div class="xs">1.0+</div>
162+
<div class="tooltiptext">'Zero-code instrumentation' is available in EDOT Python since version 1.0</div>
155163
</td>
156164
<td class="s tooltip"> <!-- Android -->
157165
<div></div>
158166
</td>
159167
<td class="s tooltip"> <!-- iOS -->
160-
<div></div>
168+
<div></div>
161169
</td>
162170
</tr>
163171
<!-- Feature: Head-based Sampling -->
@@ -170,19 +178,25 @@ For languages for which Elastic does not offer its own distribution, we recommen
170178
<div></div>
171179
</td>
172180
<td class="s tooltip"> <!-- Node.js -->
173-
<div></div>
181+
<div>✅</div>
182+
<div class="xs">1.0+</div>
183+
<div class="tooltiptext">'Head-based Sampling' is available in EDOT Node.js since version 1.0</div>
174184
</td>
175185
<td class="s tooltip"> <!-- PHP -->
176186
<div></div>
177187
</td>
178188
<td class="s tooltip"> <!-- Python -->
179-
<div></div>
189+
<div>✅</div>
190+
<div class="xs">1.0+</div>
191+
<div class="tooltiptext">'Head-based Sampling' is available in EDOT Python since version 1.0</div>
180192
</td>
181193
<td class="s tooltip"> <!-- Android -->
182194
<div></div>
183195
</td>
184196
<td class="s tooltip"> <!-- iOS -->
185-
<div></div>
197+
<div>✅</div>
198+
<div class="xs">v1.0+</div>
199+
<div class="tooltiptext">'Head-based Sampling' is available in EDOT iOS since version v1.0</div>
186200
</td>
187201
</tr>
188202
<!-- Feature: Baggage -->
@@ -195,19 +209,25 @@ For languages for which Elastic does not offer its own distribution, we recommen
195209
<div></div>
196210
</td>
197211
<td class="s tooltip"> <!-- Node.js -->
198-
<div></div>
212+
<div>✅</div>
213+
<div class="xs">1.0+</div>
214+
<div class="tooltiptext">'Baggage' is available in EDOT Node.js since version 1.0</div>
199215
</td>
200216
<td class="s tooltip"> <!-- PHP -->
201217
<div></div>
202218
</td>
203219
<td class="s tooltip"> <!-- Python -->
204-
<div></div>
220+
<div>✅</div>
221+
<div class="xs">1.0+</div>
222+
<div class="tooltiptext">'Baggage' is available in EDOT Python since version 1.0</div>
205223
</td>
206224
<td class="s tooltip"> <!-- Android -->
207225
<div></div>
208226
</td>
209227
<td class="s tooltip"> <!-- iOS -->
210-
<div></div>
228+
<div>✅</div>
229+
<div class="xs">v1.0+</div>
230+
<div class="tooltiptext">'Baggage' is available in EDOT iOS since version v1.0</div>
211231
</td>
212232
</tr>
213233
<!-- Feature: Inferred Spans -->
@@ -245,19 +265,21 @@ For languages for which Elastic does not offer its own distribution, we recommen
245265
<div>✅</div>
246266
</td>
247267
<td class="s tooltip"> <!-- Node.js -->
248-
<div></div>
268+
<div>𝐓</div>
249269
</td>
250270
<td class="s tooltip"> <!-- PHP -->
251271
<div>✅</div>
252272
</td>
253273
<td class="s tooltip"> <!-- Python -->
254-
<div></div>
274+
<div>𝐓</div>
255275
</td>
256276
<td class="s tooltip"> <!-- Android -->
257277
<div></div>
258278
</td>
259279
<td class="s tooltip"> <!-- iOS -->
260-
<div></div>
280+
<div>✅</div>
281+
<div class="xs">v1.0+</div>
282+
<div class="tooltiptext">'Logs Collection' is available in EDOT iOS since version v1.0</div>
261283
</td>
262284
</tr>
263285
<!-- Feature: Logs Correlation -->
@@ -270,19 +292,21 @@ For languages for which Elastic does not offer its own distribution, we recommen
270292
<div>✅</div>
271293
</td>
272294
<td class="s tooltip"> <!-- Node.js -->
273-
<div></div>
295+
<div>𝐓</div>
274296
</td>
275297
<td class="s tooltip"> <!-- PHP -->
276298
<div>✅</div>
277299
</td>
278300
<td class="s tooltip"> <!-- Python -->
279-
<div></div>
301+
<div>𝐓</div>
280302
</td>
281303
<td class="s tooltip"> <!-- Android -->
282304
<div></div>
283305
</td>
284306
<td class="s tooltip"> <!-- iOS -->
285-
<div></div>
307+
<div>✅</div>
308+
<div class="xs">v1.0+</div>
309+
<div class="tooltiptext">'Logs Correlation' is available in EDOT iOS since version v1.0</div>
286310
</td>
287311
</tr>
288312
<!-- Feature: Metrics Collection -->
@@ -302,12 +326,16 @@ For languages for which Elastic does not offer its own distribution, we recommen
302326
</td>
303327
<td class="s tooltip"> <!-- Python -->
304328
<div>✅</div>
329+
<div class="xs">1.0+</div>
330+
<div class="tooltiptext">'Metrics Collection' is available in EDOT Python since version 1.0</div>
305331
</td>
306332
<td class="s tooltip"> <!-- Android -->
307333
<div></div>
308334
</td>
309335
<td class="s tooltip"> <!-- iOS -->
310-
<div></div>
336+
<div>𝐓</div>
337+
<div class="xs">v0.7+</div>
338+
<div class="tooltiptext">'Metrics Collection' is available in EDOT iOS since version v0.7</div>
311339
</td>
312340
</tr>
313341
<!-- Feature: Custom Metrics -->
@@ -327,12 +355,16 @@ For languages for which Elastic does not offer its own distribution, we recommen
327355
</td>
328356
<td class="s tooltip"> <!-- Python -->
329357
<div>✅</div>
358+
<div class="xs">1.0+</div>
359+
<div class="tooltiptext">'Custom Metrics' is available in EDOT Python since version 1.0</div>
330360
</td>
331361
<td class="s tooltip"> <!-- Android -->
332362
<div></div>
333363
</td>
334364
<td class="s tooltip"> <!-- iOS -->
335-
<div></div>
365+
<div>𝐓</div>
366+
<div class="xs">v0.7+</div>
367+
<div class="tooltiptext">'Custom Metrics' is available in EDOT iOS since version v0.7</div>
336368
</td>
337369
</tr>
338370
<!-- Feature: Agent Health Monitoring -->
@@ -370,7 +402,7 @@ For languages for which Elastic does not offer its own distribution, we recommen
370402
<div></div>
371403
</td>
372404
<td class="s tooltip"> <!-- Node.js -->
373-
<div></div>
405+
<div>𝐓</div>
374406
</td>
375407
<td class="s tooltip"> <!-- PHP -->
376408
<div></div>
@@ -382,7 +414,7 @@ For languages for which Elastic does not offer its own distribution, we recommen
382414
<div></div>
383415
</td>
384416
<td class="s tooltip"> <!-- iOS -->
385-
<div></div>
417+
<div></div>
386418
</td>
387419
</tr>
388420
<!-- Feature: Capturing Errors / Exceptions -->
@@ -402,12 +434,16 @@ For languages for which Elastic does not offer its own distribution, we recommen
402434
</td>
403435
<td class="s tooltip"> <!-- Python -->
404436
<div>✅</div>
437+
<div class="xs">1.0+</div>
438+
<div class="tooltiptext">'Capturing Errors / Exceptions' is available in EDOT Python since version 1.0</div>
405439
</td>
406440
<td class="s tooltip"> <!-- Android -->
407441
<div>✅</div>
408442
</td>
409443
<td class="s tooltip"> <!-- iOS -->
410444
<div>✅</div>
445+
<div class="xs">v1.0+</div>
446+
<div class="tooltiptext">'Capturing Errors / Exceptions' is available in EDOT iOS since version v1.0</div>
411447
</td>
412448
</tr>
413449
<!-- Feature: Crash Reporting -->
@@ -433,6 +469,8 @@ For languages for which Elastic does not offer its own distribution, we recommen
433469
</td>
434470
<td class="s tooltip"> <!-- iOS -->
435471
<div>✅</div>
472+
<div class="xs">v1.0+</div>
473+
<div class="tooltiptext">'Crash Reporting' is available in EDOT iOS since version v1.0</div>
436474
</td>
437475
</tr>
438476
<!-- Feature: Central Configuration -->

‎docs/_edot-sdks/java/faq.md

+82-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,85 @@ parent: EDOT Java
77

88
# Frequently Asked Questions on EDOT Java
99

10-
TODO
10+
## Does agent requires access to or modification of application code ?
11+
12+
No, the agent modifies the Java application binaries in bytecode form and does not requires original code nor
13+
recompiling or re-packaging the application.
14+
15+
## How to disable the agent ?
16+
17+
There are two ways to disable the instrumentation agent:
18+
19+
- remove `-javaagent:` JVM argument
20+
- set `OTEL_JAVAAGENT_ENABLED` environment variable or `otel.javaagent.enabled` Java system property to `false`
21+
22+
In both cases you need to restart the JVM.
23+
24+
## How to partially enable or disable the agent ?
25+
26+
It is possible to partially disable the agent, or to only selectively enable a limited set of instrumentations
27+
by following instructions in the [upstream documentation](https://opentelemetry.io/docs/zero-code/java/agent/disable/).
28+
29+
## How to know if EDOT is attached to a running JVM ?
30+
31+
There are a few ways we can detect if the agent has been attached to a JVM
32+
- in JVM logs, agent startup log message (see [below](#how-to-identify-the-version-of-edot-agent-)) might be included
33+
- in JVM arguments `ps -ef|grep javaagent`
34+
- in environment variables, for example `JAVA_TOOL_OPTIONS`, for example by inspecting the output of `export|grep javaagent`
35+
36+
## How to identify the version of EDOT agent ?
37+
38+
When the agent starts, a log message in the standard error provides the agent version:
39+
```
40+
INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 1.2.3
41+
```
42+
43+
In addition, the `-javaagent:` JVM argument can provide the path to the agent file name, which _might_ also contain
44+
the agent version, for example `-javaagent:elastic-otel-javaagent-1.2.3.jar`
45+
46+
When the original agent jar file has been renamed, it is still possible to inspect the `Implementation-Version` entry in `META-INF/MANIFEST.MF` file of the agent jar,
47+
for example with `unzip -p elastic-otel-javaagent.jar META-INF/MANIFEST.MF|grep 'Implementation-Version'`
48+
49+
## What are the versions of the OpenTelemetry upstream dependencies ?
50+
51+
Because EDOT Java is a distribution of [OpenTelemetry Java instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation),
52+
it includes the following dependencies:
53+
54+
- [OpenTelemetry Java Instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)
55+
- [OpenTelemetry Java SDK](https://github.com/open-telemetry/opentelemetry-java)
56+
- [Semantic Conventions Java mappings](https://github.com/open-telemetry/semantic-conventions-java)
57+
- [OpenTelemetry Java Contrib](https://github.com/open-telemetry/opentelemetry-java-contrib)
58+
59+
The versions of those included in EDOT is usually aligned with the OpenTelemetry Java Instrumentation, for reference we
60+
provide in the [release notes](https://github.com/elastic/elastic-otel-java/releases) details of versions included in each release.
61+
62+
## When and how to update EDOT
63+
64+
The general recommendation is to update EDOT agent to the latest version when possible to benefit from:
65+
- bug fixes and technical improvements
66+
- support of new features and instrumentation
67+
- evolution of semantic conventions
68+
- frequent and regular updates usually makes reviewing and handling changes easier.
69+
70+
Updating to the latest EDOT version involves reviewing changes of the included dependencies:
71+
72+
- [OpenTelemetry Java Instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation)
73+
- [OpenTelemetry Java SDK](https://github.com/open-telemetry/opentelemetry-java)
74+
- [Semantic Conventions Java mappings](https://github.com/open-telemetry/semantic-conventions-java)
75+
- [OpenTelemetry Java Contrib](https://github.com/open-telemetry/opentelemetry-java-contrib)
76+
77+
In order to review each of those individually, you can use the [EDOT release notes](https://github.com/elastic/elastic-otel-java/releases)
78+
for links to the respective versions of each component.
79+
80+
### OpenTelemetry API/SDK update
81+
82+
In order to implement manual instrumentation, some applications use the OpenTelemetry API and/or SDK which allows them
83+
to capture custom spans, metrics or even send data without any instrumentation agent.
84+
85+
Updates of the OpenTelemetry API/SDK in the application and the EDOT Java agent can be done independently.
86+
- EDOT Java is backward-compatible with all previous versions of OpenTelemetry API/SDK
87+
- Using a more recent version of API/SDK than the one in EDOT should usually work without problem, however to ensure maximum compatibility keeping OpenTelemetry API/SDK version ≤ EDOT OpenTelemetry API/SDK version is recommended.
88+
89+
### How to update
90+
91+
Updating EDOT Java agent is done by replacing the agent binary `.jar` that has been [added during setup](./setup/).

‎docs/_edot-sdks/java/troubleshooting.md

+5-16
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,26 @@ parent: EDOT Java
99

1010
The sections below are in the order you should follow, unless you have already identified the section you need.
1111

12-
This guide assumes you have tested the other components in the route from application+agent to Elastic Observability (eg collector or APM server, Elasticsearch, and Kibana) and that the problem has been isolated to the application+agent.
12+
This guide assumes you have tested the other components in the route from application+agent to Elastic Observability (eg collector, Elasticsearch, and Kibana) and that the problem has been isolated to the application+agent.
1313

1414
## General
1515

1616
Ensure you have set a service name (eg `-Dotel.service.name=Service1` or environment variable `OTEL_SERVICE_NAME` set to `Service1`) otherwise by default the data (traces, metrics, logs) will be sent to `unknown_service_java` - you may be getting data but it may all be under that service
1717

1818
## Connectivity to endpoint
1919

20-
Check _from_ the host/VM/pod/container/image running the app, that connectivity is available to the APM server or collector. The examples here use a default URL, which you should replace with the endpoint you are using:
20+
Check _from_ the host/VM/pod/container/image running the app, that connectivity is available to the collector.
21+
22+
The examples here use a default URL `http://127.0.0.1:4318/, which you should replace with the endpoint you are using:
2123

2224
- OpenTelemetry or EDOT collector without authentication: `curl -i http://127.0.0.1:4318/v1/traces -X POST -d '{}' -H content-type:application/json`
23-
- APM server without authentication: `curl --verbose -X GET http://127.0.0.1:8200`
24-
- APM server with secret token authentication: `curl -X POST http://127.0.0.1:8200/ -H "Authorization: Bearer <secret_token>"`
25-
- APM server with API key authentication: `curl -X POST http://127.0.0.1:8200/ -H "Authorization: ApiKey <api_key>"`
25+
- OpenTelemetry or EDOT collector with API key authentication: `curl -i http://127.0.0.1:4318/v1/traces -X POST -d '{}' -H content-type:application/json -H "Authorization:ApiKey <api_key>"`
2626

2727
The collector should produce output similar to
2828
```
2929
{"partialSuccess":{}}
3030
```
3131

32-
The APM server should produce output similar to
33-
```
34-
{
35-
"build_date": "2021-12-18T19:59:06Z",
36-
"build_sha": "24fe620eeff5a19e2133c940c7e5ce1ceddb1445",
37-
"publish_ready": true,
38-
"version": "8.17.3"
39-
}
40-
```
41-
42-
4332
## Is it the agent?
4433

4534
Determine if the issue is related to the agent by

‎docs/_edot-sdks/python/configuration.md

+60-5
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,64 @@ nav_order: 2
55
parent: EDOT Python
66
---
77

8-
# Configuring the EDOT Python SDK
8+
# Configuration
99

10-
TODO:
11-
- describe the EDOT Python specific config options
12-
- describe crucial upstream options
13-
- refer to / link to the remaining upstream config options
10+
Configure the Elastic Distribution of OpenTelemetry Python (EDOT Python) to send data to Elastic.
11+
12+
<!-- ✅ How users set configuration options -->
13+
## Configuration method
14+
15+
<!-- Is this the right link to OpenTelemetry docs? -->
16+
Configuration of the OpenTelemetry SDK should be performed through the mechanisms [documented on the OpenTelemetry website](https://opentelemetry.io/docs/zero-code/python/configuration/). EDOT Python is typically configured with `OTEL_*` environment variables defined by the OpenTelemetry spec. For example:
17+
18+
```sh
19+
export OTEL_RESOURCE_ATTRIBUTES=service.name=<app-name>
20+
export OTEL_EXPORTER_OTLP_ENDPOINT=https://my-deployment.apm.us-west1.gcp.cloud.es.io
21+
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer P....l"
22+
opentelemetry-instrument <command to start your service>
23+
```
24+
25+
<!-- ✅ List all available configuration options -->
26+
## Configuration options
27+
28+
Because the Elastic Distribution of OpenTelemetry Python is an extension of OpenTelemetry Python, it supports both:
29+
30+
* [General OpenTelemetry configuration options](#opentelemetry-configuration-options)
31+
* [Specific configuration options that are _only_ available in EDOT Python](#configuration-options-that-are-only-available-in-edot-python)
32+
33+
### OpenTelemetry configuration options
34+
35+
EDOT Python supports all configuration options listed in the [OpenTelemetry General SDK Configuration documentation](https://opentelemetry.io/docs/languages/sdk-configuration/general/) and [OpenTelemetry Python](https://opentelemetry.io/docs/languages/python).
36+
37+
#### Logs
38+
39+
Instrument Python `logging` module to format and forward logs in OTLP format is disabled by default and gated under a configuration environment variable:
40+
41+
```sh
42+
export OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
43+
```
44+
45+
> [!NOTE]
46+
> Enabling this will make any call to [logging.basicConfig](https://docs.python.org/3/library/logging.html#logging.basicConfig) from your application a no-op.
47+
48+
#### Differences from OpenTelemetry Python
49+
50+
EDOT Python uses different defaults than OpenTelemetry Python for the following configuration options:
51+
52+
| Option | EDOT Python default | OpenTelemetry Python default |
53+
|---|---|---|
54+
| `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS` | `process_runtime,os,otel,telemetry_distro,service_instance,_gcp,aws_ec2,aws_ecs,aws_elastic_beanstalk,azure_app_service,azure_vm` | `otel` |
55+
| `OTEL_METRICS_EXEMPLAR_FILTER` | `always_off` | `trace_based` |
56+
| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | `DELTA` | `CUMULATIVE` |
57+
58+
> [!NOTE]
59+
> `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS` cloud resource detectors are dynamically set. When running in a Kubernetes Pod it will be set to `process_runtime,os,otel,telemetry_distro,service_instance,_gcp,aws_eks`.
60+
61+
62+
### Configuration options that are _only_ available in EDOT Python
63+
64+
`ELASTIC_OTEL_` options are specific to Elastic and will always live in EDOT Python (they will _not_ be added upstream):
65+
66+
| Option(s) | Default | Description |
67+
|---|---|---|
68+
| `ELASTIC_OTEL_SYSTEM_METRICS_ENABLED` | `false` | When sets to `true`, sends *system namespace* metrics. |

‎docs/_edot-sdks/python/index.md

+27-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,31 @@ layout: default
44
nav_order: 6
55
---
66

7-
## EDOT Python
7+
# EDOT Python
88

9-
TODO: Put some content here
9+
The [Elastic Distribution of OpenTelemetry Python (EDOT Python)](https://github.com/elastic/elastic-otel-python) is a customized version of [OpenTelemetry Python](https://opentelemetry.io/docs/languages/python).
10+
EDOT Python makes it easier to get started using OpenTelemetry in your Python applications through strictly OpenTelemetry native means, while also providing a smooth and rich out of the box experience with [Elastic Observability](https://www.elastic.co/observability). It's an explicit goal of this distribution **to avoid introducing proprietary concepts** in addition to those defined by the wider OpenTelemetry community. For any additional features introduced we aim for contributing them back to the upstream OpenTelemetry Python project.
11+
12+
With EDOT Python you have access to all the features of the OpenTelemetry Python agent plus:
13+
14+
* Access to improvements and bug fixes contributed by the Elastic team _before_ the changes are available upstream in OpenTelemetry repositories.
15+
* Access to optional features that can enhance OpenTelemetry data that is being sent to Elastic.
16+
* Elastic-specific processors that ensure optimal compatibility when exporting OpenTelemetry signal data to an Elastic backend like an Elastic Observability deployment.
17+
* Preconfigured collection of tracing and metrics signals, applying some opinionated defaults, such as which sources are collected by default.
18+
19+
**Ready to try out EDOT Python?** Follow the step-by-step instructions in [Setup](./setup/index).
20+
21+
## Compatibility matrix
22+
23+
Data can be exported in the OpenTelemetry-native [OTLP (OpenTelemetry protocol)](https://opentelemetry.io/docs/specs/otlp) format via gRPC (default)
24+
and HTTP to self-managed, Elastic Cloud Hosted or Elastic Cloud Serverless observability backends.
25+
26+
For the best (and supported) experience, we recommend exporting data from EDOT Python via the [EDOT Collector](https://elastic.github.io/opentelemetry/edot-collector/index).
27+
28+
| EDOT Python | Elastic Stack 8.x | Elastic Stack 9.x | Serverless |
29+
| ----------- | ----------------- | ----------------- | ---------- |
30+
| 1.0.0 | 8.18.0+¹ | 9.0.0+¹ | ✅ ² |
31+
32+
***1.** Via the EDOT Collector.*
33+
34+
***2.** Via the OTel-native ingest endpoint.*

‎docs/_edot-sdks/python/migration.md

+134-6
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,138 @@ nav_order: 5
55
parent: EDOT Python
66
---
77

8-
# Migrating to EDOT Python from the Elastic Python Agent
8+
# Migrating to EDOT Python from the Elastic APM Python Agent
99

10-
TODO:
11-
- migration steps
12-
- advantages of using EDOT
13-
- limitations compared to classic agents
14-
- (optional) performance comparison
10+
This guide will highlight the major differences between the [Elastic APM Python agent](https://www.elastic.co/guide/en/apm/agent/python/current/getting-started.html) and the Elastic Distribution of OpenTelemetry Python (EDOT Python).
11+
For step-by-step instructions on setting up EDOT Python refer to the [Setup](./setup/index).
12+
13+
## We are a distribution
14+
15+
As a distribution of OpenTelemetry, EDOT Python follows certain standards, but there is still some space for innovation.
16+
17+
## EDOT Python principles
18+
19+
### Bold on auto-instrumentation
20+
21+
We have chosen to make auto-instrumentation as simple as possible so you can just focus on your code; we favored an experience that requires minimal changes to your application code. The upstream OpenTelemetry configuration has more options than the distribution requires. Our default configuration is listed [here](https://github.com/elastic/elastic-otel-python?tab=readme-ov-file#configuration).
22+
23+
### Bring your own instrumentation
24+
25+
In EDOT Python we decided to not ship all the available instrumentations in order to accommodate environments where installing more packages than requested may be an issue.
26+
We provide a tool to discover available instrumentations automatically that can be added to your build workflow. See [Get started](https://github.com/elastic/elastic-otel-python/blob/main/docs/get-started.md#install-the-available-instrumentation).
27+
28+
## Performance overhead
29+
30+
Evaluate the [differences in performance overhead](./overhead) between EDOT Python and Elastic APM Python agent.
31+
32+
## Limitations
33+
34+
### Central and Dynamic configuration
35+
36+
Currently EDOT Python does not have an equivalent of the [central configuration feature](https://www.elastic.co/guide/en/observability/current/apm-agent-configuration.html) that the Elastic APM Python agent supports. When using EDOT Python, all the configurations are static and should be provided to the application with other configurations, e.g. environment variables.
37+
38+
### AWS lambda
39+
40+
At the moment, we are not building a custom lambda layer for our Python distribution. You can refer to the upstream [Lambda Auto-Instrumentation](https://opentelemetry.io/docs/faas/lambda-auto-instrument/).
41+
42+
### Missing instrumentations
43+
44+
Not all instrumentations we have in Elastic APM Python Agent have an OpenTelemetry counterpart. But we may port them if they are requested by users.
45+
46+
At the time of writing these docs, the following libraries are missing an OpenTelemetry instrumentation:
47+
- aiobotocore
48+
- aiomysql
49+
- aiopg
50+
- aioredis
51+
- Azure storage and Azure queue
52+
- Graphene
53+
- httplib2
54+
- pylibmc
55+
- pyodbc
56+
- Sanic
57+
- zlib
58+
59+
### Integration with structured logging
60+
61+
EDOT Python does not have any [structlog integration](https://www.elastic.co/guide/en/apm/agent/python/current/logs.html#structlog) at the moment.
62+
63+
### Span compression
64+
65+
EDOT Python does not implement [span compression](https://www.elastic.co/guide/en/observability/current/apm-data-model-spans.html#apm-spans-span-compression).
66+
67+
### Breakdown metrics
68+
69+
EDOT Python is not sending metrics that power the [Breakdown metrics](https://www.elastic.co/guide/en/apm/guide/current/data-model-metrics.html#_breakdown_metrics).
70+
71+
## Migration steps
72+
73+
- remove any configuration and setup code needed by Elastic APM Python Agent from your application source code.
74+
- migrate any eventual usage of Elastic APM Python Agent API for manual instrumentation with OpenTelemetry API in the application source code.
75+
- follow [setup documentation](setup/index) on how to install and configure EDOT Python
76+
77+
## Option reference
78+
79+
This list contains Elastic APM Python agent configuration options that can be migrated to EDOT Python configuration because they have an equivalent in OpenTelemetry:
80+
81+
<!-- keep these sorted -->
82+
* [api_key](#api_key)
83+
* [enabled](#enabled)
84+
* [environment](#environment)
85+
* [global_labels](#global_labels)
86+
* [metrics_interval](#metrics_interval)
87+
* [secret_token](#secret_token)
88+
* [server_url](#server_url)
89+
* [service_name](#service_name)
90+
* [service_version](#service_version)
91+
92+
### `api_key`
93+
94+
The Elastic [`api_key`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-api-key) option corresponds to the OpenTelemetry [OTEL_EXPORTER_OTLP_HEADERS](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_headers) option.
95+
96+
For example:`OTEL_EXPORTER_OTLP_HEADERS="Authorization=ApiKey an_api_key"`.
97+
98+
### `enabled`
99+
100+
The Elastic [`enabled`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-enabled) option corresponds to the OpenTelemetry [OTEL_SDK_DISABLED](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#general-sdk-configuration) option.
101+
102+
### `environment`
103+
104+
The Elastic [`environment`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-environment) option corresponds to setting the `deployment.environment.name` key in [OTEL_RESOURCE_ATTRIBUTES](https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_resource_attributes).
105+
106+
For example: `OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=testing`.
107+
108+
### `global_labels`
109+
110+
The Elastic [`global_labels`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-global_labels) option corresponds to adding `key=value` comma separated pairs in [OTEL_RESOURCE_ATTRIBUTES](https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_resource_attributes).
111+
112+
For example: `OTEL_RESOURCE_ATTRIBUTES=alice=first,bob=second`. Such labels will result in labels.key=value attributes on the server, e.g. labels.alice=first
113+
114+
### `metrics_interval`
115+
116+
The Elastic [`metrics_interval`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-metrics_interval) corresponds to the OpenTelemetry [OTEL_METRIC_EXPORT_INTERVAL](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#periodic-exporting-metricreader) option.
117+
118+
For example: `OTEL_METRIC_EXPORT_INTERVAL=30000`.
119+
120+
### `secret_token`
121+
122+
The Elastic [`secret_token`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-secret-token) option corresponds to the OpenTelemetry [OTEL_EXPORTER_OTLP_HEADERS](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_headers) option.
123+
124+
For example: `OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer an_apm_secret_token"`.
125+
126+
### `server_url`
127+
128+
The Elastic [`server_url`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-server-url) option corresponds to the OpenTelemetry [`OTEL_EXPORTER_OTLP_ENDPOINT`](https://opentelemetry.io/docs/concepts/sdk-configuration/otlp-exporter-configuration/#otel_exporter_otlp_endpoint) option.
129+
130+
### `service_name`
131+
132+
The Elastic [`service_name`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-service-name) option corresponds to the OpenTelemetry [OTEL_SERVICE_NAME](https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_service_name) option.
133+
134+
The service name value can also be set using [OTEL_RESOURCE_ATTRIBUTES](https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_resource_attributes).
135+
136+
For example: `OTEL_RESOURCE_ATTRIBUTES=service.name=myservice`. If `OTEL_SERVICE_NAME` is set, it takes precedence over the resource attribute.
137+
138+
### `service_version`
139+
140+
The Elastic [`service_version`](https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html#config-service-version) option corresponds to setting the `service.version` key in [OTEL_RESOURCE_ATTRIBUTES](https://opentelemetry.io/docs/concepts/sdk-configuration/general-sdk-configuration/#otel_resource_attributes).
141+
142+
For example: `OTEL_RESOURCE_ATTRIBUTES=service.version=1.2.3`.

‎docs/_edot-sdks/python/overhead.md

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: Performance Overhead
3+
layout: default
4+
nav_order: 8
5+
parent: EDOT Python
6+
---
7+
8+
## Performance Overhead
9+
10+
Every instrumentation agent comes with a (small) performance overhead for your application. How much really depends
11+
on your application and on the instrumentations used.
12+
13+
While we can't provide generically applicable, accurate numbers about the performance overhead, here you can find some measurement taken
14+
from a sample web application which allows to provide a comparison between agents and an order of magnitude of the effective overhead.
15+
16+
Those numbers are only provided as indicators, and you should not attempt to extrapolate them. You should however use
17+
them as a framework to evaluate and measure the overhead on your applications.
18+
19+
The following table compares the response times of a sample web application without an agent, with Elastic APM Python Agent and with EDOT Python Agent in two situations: without data loaded and serialized to measure the minimal overhead of agents and with some data loaded and then serialized to provide a more common scenario.
20+
21+
| | no agent | EDOT Python instrumentation | Elastic APM Python agent |
22+
|-----------------------------------|-----------|-----------------------------|--------------------------|
23+
| No data: Time taken for tests | 1.277 s | 2.215 s | 2.313 s |
24+
| Sample data: Time taken for tests | 4.546 s | 6.401 s | 6.159 s |

‎docs/_edot-sdks/python/setup/index.md

+69-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,72 @@ parent: EDOT Python
77

88
# Setting up EDOT Python
99

10-
TODO:
11-
- where to download
12-
- explicit description of basic setup here (even if it overlaps with upstream docs)
13-
- link to upstream docs for more advanced setup use cases
10+
## Install
11+
12+
### Install the distribution
13+
14+
Install EDOT Python:
15+
16+
```bash
17+
pip install elastic-opentelemetry
18+
```
19+
20+
### Install the available instrumentation
21+
22+
EDOT Python does not install any instrumentation package by default, instead it relies on the
23+
`edot-bootstrap` command to scan the installed packages and install the available instrumentation.
24+
The following command will install all the instrumentations available for libraries found installed
25+
in your environment:
26+
27+
```bash
28+
edot-bootstrap --action=install
29+
```
30+
31+
> [!NOTE]
32+
> Add this command every time you deploy an updated version of your application (in other words, add it to your container image build process).
33+
34+
<!-- ✅ Start-to-finish operation -->
35+
## Send data to Elastic
36+
37+
After installing EDOT Python, configure and initialize it to start sending data to Elastic.
38+
39+
<!-- ✅ Provide _minimal_ configuration/setup -->
40+
### Configure EDOT Python
41+
42+
Refer to [Observability quickstart](https://elastic.github.io/opentelemetry/quickstart/) documentation on how to setup your environment.
43+
44+
To configure EDOT Python you need to set a few `OTLP_*` environment variables that will be available when running EDOT Python:
45+
46+
* `OTEL_RESOURCE_ATTRIBUTES`: Use this to add a `service.name` and `deployment.environment` that will make it easier to recognize your application when reviewing data sent to Elastic.
47+
48+
The following environment variables are not required if you are sending data through a local EDOT Collector but will be provided in the Elastic Observability platform onboarding:
49+
50+
* `OTEL_EXPORTER_OTLP_ENDPOINT`: The full URL of the endpoint where data will be sent.
51+
* `OTEL_EXPORTER_OTLP_HEADERS`: A comma-separated list of `key=value` pairs that will be added to the headers of every request. This is typically used for authentication information.
52+
53+
54+
### Run EDOT Python
55+
56+
Then wrap your service invocation with `opentelemetry-instrument`, which is the wrapper that provides _automatic instrumentation_:
57+
58+
```bash
59+
opentelemetry-instrument <command to start your service>
60+
```
61+
62+
For example, a web service running with gunicorn may look like this:
63+
64+
```bash
65+
opentelemetry-instrument gunicorn main:app
66+
```
67+
68+
<!-- ✅ What success looks like -->
69+
## Confirm that EDOT Python is working
70+
71+
To confirm that EDOT Python has successfully connected to Elastic:
72+
73+
1. Go to **Observability****Applications****Service Inventory**
74+
1. You should see the name of the service to which you just added EDOT Python. It can take several minutes after initializing EDOT Python for the service to show up in this list.
75+
1. Click on the name in the list to see trace data.
76+
77+
> [!NOTE]
78+
> There may be no trace data to visualize unless you have _invoked_ your application since initializing EDOT Python.

‎docs/_edot-sdks/python/setup/manual-instrumentation.md

+96-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,99 @@ grand_parent: EDOT Python
88

99
# Manual instrumentation
1010

11-
[See content here](https://github.com/elastic/elastic-otel-python/blob/main/docs/manual-instrumentation.md#manually-instrument-your-auto-instrumented-python-application)
11+
This guide shows you how to use the Elastic Distribution of OpenTelemetry Python (EDOT Python) to manually instrument your Python application and send OpenTelemetry data to an Elastic Observability deployment.
12+
13+
This guide requires to have already added auto-instrumentation with OpenTelemetry to your application per [Setup](./index).
14+
15+
**New to OpenTelemetry?** If your are new to OpenTelemetry we encourage you to take a look at our [Setup documentation](./index) instead, which will introduce you to auto-instrumentation.
16+
17+
<!-- ✅ Provide _minimal_ configuration/setup -->
18+
### Configure EDOT Python
19+
20+
Refer to our [Setup](./index#configure-edot-python) page for more details.
21+
22+
<!-- ✅ Manually instrument the application and start sending data to Elastic -->
23+
### Manually instrument your auto instrumented Python application
24+
25+
In this section we'll show how to add manual instrumentation to an already automatically instrumented application. A use case for
26+
this setup would be to trace something in particular while keeping the benefits of the simplicity of the automatic instrumentation doing
27+
the hard work for us.
28+
29+
As an example we'll use an application using the Flask framework that implements an endpoint mounted on `/hello` returning a friendly
30+
salute. This application is saved in a file named `app.py` that is the default module for Flask applications.
31+
32+
```
33+
import random
34+
35+
from flask import Flask
36+
from opentelemetry import trace
37+
38+
tracer = trace.get_tracer(__name__)
39+
40+
app = Flask(__name__)
41+
42+
@app.route("/hello")
43+
def hello():
44+
choices = ["there", "world", "folks", "hello"]
45+
# create a span for the choice of the name, this may be a costly call in your real world application
46+
with tracer.start_as_current_span("choice") as span:
47+
choice = random.choice(choices)
48+
span.set_attribute("choice.value", choice)
49+
return f"Hello {choice}!"
50+
```
51+
52+
53+
We need to make sure to have Flask and the Flask OpenTelemetry instrumentation installed:
54+
55+
```bash
56+
pip install flask
57+
edot-bootstrap --action=install
58+
```
59+
60+
And then we can run this application with the following command:
61+
62+
```bash
63+
opentelemetry-instrument flask run
64+
```
65+
66+
We may not only need to add a custom span to our application but also want to use a custom metric, like in the example below where we
67+
are tracking how many times we are getting one of the possible choices for our salutes.
68+
69+
```
70+
import random
71+
72+
from flask import Flask
73+
from opentelemetry import metrics, trace
74+
75+
tracer = trace.get_tracer(__name__)
76+
meter = metrics.get_meter(__name__)
77+
78+
hello_counter = meter.create_counter(
79+
"hello.choice",
80+
description="The number of times a salute is chosen",
81+
)
82+
83+
app = Flask(__name__)
84+
85+
@app.route("/hello")
86+
def hello():
87+
choices = ["there", "world", "folks", "hello"]
88+
# create a span for the choice of the name, this may be a costly call in your real world application
89+
with tracer.start_as_current_span("choice") as span:
90+
choice = random.choice(choices)
91+
span.set_attribute("choice.value", choice)
92+
hello_counter.add(1, {"choice.value": choice})
93+
return f"Hello {choice}!"
94+
```
95+
96+
<!-- ✅ What success looks like -->
97+
## Confirm that EDOT Python is working
98+
99+
To confirm that EDOT Python has successfully connected to Elastic:
100+
101+
1. Go to **Observability****Applications****Service Inventory**
102+
1. You should see the name of the service to which you just added EDOT Python. It can take several minutes after initializing EDOT Python for the service to show up in this list.
103+
1. Click on the name in the list to see trace data.
104+
105+
> [!NOTE]
106+
> There may be no trace data to visualize unless you have _used_ your application since initializing EDOT Python.

‎docs/_edot-sdks/python/supported-technologies.md

+82-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,85 @@ parent: EDOT Python
77

88
# Technologies Supported by the EDOT Python SDK
99

10-
TODO:
11-
- Reference the upstream Python instrumentation.
12-
- Describe differences (also in default behavior) of EDOT Python compared to upstream.
10+
## Python versions
11+
12+
The following Python versions are supported:
13+
14+
* 3.8
15+
* 3.9
16+
* 3.10
17+
* 3.11
18+
* 3.12
19+
* 3.13
20+
21+
This follows the [OpenTelemetry Python Version Support](https://github.com/open-telemetry/opentelemetry-python/?tab=readme-ov-file#python-version-support).
22+
23+
## Instrumentations
24+
25+
We don't install instrumentations by default and we suggest to use our [edot-bootstrap](./setup/index#install-the-available-instrumentation) command to automatically install the available instrumentations.
26+
27+
| Name | Packages instrumented | Semantic conventions status |
28+
|---|---|---|---|
29+
| [elastic-opentelemetry-instrumentation-openai](https://github.com/elastic/elastic-otel-python-instrumentations/blob/main/instrumentation/elastic-opentelemetry-instrumentation-openai) | openai >= 1.2.0 | development
30+
| [opentelemetry-instrumentation-aio-pika](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aio-pika) | aio_pika >= 7.2.0, < 10.0.0 | development
31+
| [opentelemetry-instrumentation-aiohttp-client](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aiohttp-client) | aiohttp ~= 3.0 | migration
32+
| [opentelemetry-instrumentation-aiohttp-server](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aiohttp-server) | aiohttp ~= 3.0 | development
33+
| [opentelemetry-instrumentation-aiokafka](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aiokafka) | aiokafka >= 0.8, < 1.0 | development
34+
| [opentelemetry-instrumentation-aiopg](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aiopg) | aiopg >= 0.13.0, < 2.0.0 | development
35+
| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-asgi) | asgiref ~= 3.0 | migration
36+
| [opentelemetry-instrumentation-asyncio](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-asyncio) | asyncio | development
37+
| [opentelemetry-instrumentation-asyncpg](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-asyncpg) | asyncpg >= 0.12.0 | development
38+
| [opentelemetry-instrumentation-aws-lambda](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-aws-lambda) | | development
39+
| [opentelemetry-instrumentation-boto](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-boto) | boto~=2.0 | development
40+
| [opentelemetry-instrumentation-boto3sqs](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-boto3sqs) | boto3 ~= 1.0 | development
41+
| [opentelemetry-instrumentation-botocore](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-botocore) | botocore ~= 1.0 | development
42+
| [opentelemetry-instrumentation-cassandra](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-cassandra) | cassandra-driver ~= 3.25,scylla-driver ~= 3.25 | development
43+
| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-celery) | celery >= 4.0, < 6.0 | development
44+
| [opentelemetry-instrumentation-click](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-click) | click >= 8.1.3, < 9.0.0 | development
45+
| [opentelemetry-instrumentation-confluent-kafka](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-confluent-kafka) | confluent-kafka >= 1.8.2, <= 2.7.0 | development
46+
| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-dbapi) | dbapi | development
47+
| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-django) | django >= 1.10 | development
48+
| [opentelemetry-instrumentation-elasticsearch](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-elasticsearch) | elasticsearch >= 6.0 | development
49+
| [opentelemetry-instrumentation-falcon](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-falcon) | falcon >= 1.4.1, < 5.0.0 | migration
50+
| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-fastapi) | fastapi ~= 0.58 | migration
51+
| [opentelemetry-instrumentation-flask](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-flask) | flask >= 1.0 | migration
52+
| [opentelemetry-instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-grpc) | grpcio >= 1.42.0 | development
53+
| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-httpx) | httpx >= 0.18.0 | migration
54+
| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-jinja2) | jinja2 >= 2.7, < 4.0 | development
55+
| [opentelemetry-instrumentation-kafka-python](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-kafka-python) | kafka-python >= 2.0, < 3.0,kafka-python-ng >= 2.0, < 3.0 | development
56+
| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-logging) | logging | development
57+
| [opentelemetry-instrumentation-mysql](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-mysql) | mysql-connector-python >= 8.0, < 10.0 | development
58+
| [opentelemetry-instrumentation-mysqlclient](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-mysqlclient) | mysqlclient < 3 | development
59+
| [opentelemetry-instrumentation-pika](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pika) | pika >= 0.12.0 | development
60+
| [opentelemetry-instrumentation-psycopg](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-psycopg) | psycopg >= 3.1.0 | development
61+
| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-psycopg2) | psycopg2 >= 2.7.3.1,psycopg2-binary >= 2.7.3.1 | development
62+
| [opentelemetry-instrumentation-pymemcache](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pymemcache) | pymemcache >= 1.3.5, < 5 | development
63+
| [opentelemetry-instrumentation-pymongo](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pymongo) | pymongo >= 3.1, < 5.0 | development
64+
| [opentelemetry-instrumentation-pymssql](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pymssql) | pymssql >= 2.1.5, < 3 | development
65+
| [opentelemetry-instrumentation-pymysql](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pymysql) | PyMySQL < 2 | development
66+
| [opentelemetry-instrumentation-pyramid](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-pyramid) | pyramid >= 1.7 | development
67+
| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-redis) | redis >= 2.6 | development
68+
| [opentelemetry-instrumentation-remoulade](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-remoulade) | remoulade >= 0.50 | development
69+
| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-requests) | requests ~= 2.0 | migration
70+
| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-sqlalchemy) | sqlalchemy >= 1.0.0, < 2.1.0 | development
71+
| [opentelemetry-instrumentation-sqlite3](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-sqlite3) | sqlite3 | development
72+
| [opentelemetry-instrumentation-starlette](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-starlette) | starlette >= 0.13, <0.15 | development
73+
| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-system-metrics) | psutil >= 5 | development
74+
| [opentelemetry-instrumentation-threading](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-threading) | threading | development
75+
| [opentelemetry-instrumentation-tornado](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-tornado) | tornado >= 5.1.1 | development
76+
| [opentelemetry-instrumentation-tortoiseorm](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-tortoiseorm) | tortoise-orm >= 0.17.0 | development
77+
| [opentelemetry-instrumentation-urllib](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-urllib) | urllib | migration
78+
| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-urllib3) | urllib3 >= 1.0.0, < 3.0.0 | migration
79+
| [opentelemetry-instrumentation-wsgi](https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-wsgi) | wsgi | migration
80+
81+
The semantic conventions status tracks the stabilization of the semantic conventions used in the instrumentation:
82+
- stable, means they are stable and are not expected to change
83+
- development, means they are not stable yet and they may change in the future
84+
- migration, means there may be configuration knobs to switch between different semantic conventions
85+
86+
### Native Elasticsearch instrumentation
87+
88+
Some libraries like the [Python Elasticsearch Client](https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html)
89+
natively supports OpenTelemetry instrumentation.
90+
91+
The [elasticsearch](https://elasticsearch-py.readthedocs.io/en/latest/) package got native OpenTelemetry support since version 8.13.

‎docs/_edot-sdks/python/troubleshooting.md

+49-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,52 @@ parent: EDOT Python
77

88
# Troubleshooting the EDOT Python Agent
99

10-
TODO
10+
Below are some resources and tips for troubleshooting and debugging the Elastic Distribution of OpenTelemetry Python (EDOT Python).
11+
12+
- [Easy Fixes](#easy-fixes)
13+
- [Disable EDOT](#easy-fixes)
14+
15+
## Easy Fixes
16+
17+
Before you try anything else, go through the following sections to ensure that
18+
EDOT Python is configured correctly. This is not an exhaustive list, but rather
19+
a list of common problems that users run into.
20+
21+
### Debug and development modes
22+
23+
Most frameworks support a debug mode. Generally, this mode is intended for
24+
non-production environments and provides detailed error messages and logging of
25+
potentially sensitive data. So enabling instrumentation in debug mode is not advised and may pose privacy and security issues in recording
26+
sensitive data.
27+
28+
#### Django
29+
30+
Django applications running with the Django `runserver` need to use the `--noreload` parameter in order to be instrumented with `opentelemetry-instrument`.
31+
Remember that you also need to set the `DJANGO_SETTINGS_MODULE` environment variable pointing to the application settings module.
32+
33+
#### FastAPI
34+
35+
FastAPI application started with `fastapi dev` requires the reloader to be disabled with `--no-reload` in order to be instrumented with `opentelemetry-instrument`.
36+
37+
#### Flask
38+
39+
Flask applications running in debug mode will require to disable the reloader in order to being traced, see [OpenTelemetry zero code documentation](https://opentelemetry.io/docs/zero-code/python/example/#instrumentation-while-debugging).
40+
41+
## Disable EDOT
42+
43+
In the unlikely event EDOT Python causes disruptions to a production application, you can disable it while you troubleshoot.
44+
45+
To disable the underlying OpenTelemetry SDK you set the following environment variable `OTEL_SDK_DISABLED=true`.
46+
47+
If only a subset of instrumentation are causing disruptions you can disable them with the `OTEL_PYTHON_DISABLED_INSTRUMENTATIONS`
48+
environment variable. It accepts a list of comma separated instrumentations to disable, see [OpenTelemetry zero code documentation](https://opentelemetry.io/docs/zero-code/python/configuration/#disabling-specific-instrumentations)
49+
50+
## Missing logs
51+
52+
Enabling the Python logging module auto-instrumentation with `OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true` calls the
53+
[logging.basicConfig](https://docs.python.org/3/library/logging.html#logging.basicConfig) method that will make your own application calls
54+
to it a no-op. The side effect of this is that you won't see your application logs in the console anymore.
55+
56+
If you are already shipping logs by other means you don't need to enable this.
57+
58+
<!-- TODO: when available add link to to propose other option https://elastic.github.io/opentelemetry/use-cases/logs/ -->

‎docs/_sass/custom/custom.scss

+11
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,14 @@ table.features-table .tooltip:hover .tooltiptext {
113113
}
114114

115115
/* ------------------------ */
116+
117+
118+
/* Compatibility Table ------------- */
119+
120+
table.compatibility th,td {
121+
text-align: center;
122+
min-width: auto;
123+
}
124+
125+
126+
/* ------------------------ */

‎docs/compatibility.md

-9
This file was deleted.

‎docs/compatibility/collectors.md

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: Collector Distributions
3+
parent: Compatibility & Support
4+
layout: default
5+
nav_order: 2
6+
---
7+
# Compatibility & Support - OTel Collectors
8+
{: .no_toc }
9+
10+
### Legend
11+
{: .no_toc }
12+
13+
| **[Incompatible]** | **[Compatible]** | **[Supported]** |
14+
|| 🟡 ||
15+
16+
### Table of content
17+
{: .no_toc }
18+
19+
- TOC
20+
{:toc}
21+
22+
## EDOT Collector
23+
24+
### EDOT Collector Compatibility - Elastic Stack
25+
26+
The following table gives an overview of compatibility and support of EDOT Collector versions with Elastic Stack versions.
27+
28+
<table class="compatibility">
29+
<thead>
30+
<tr>
31+
<th rowspan=2><b>EDOT Collector Version</b></th>
32+
<th colspan=5>Elastic Stack</th>
33+
</tr>
34+
<tr>
35+
<th>< 8.16</th>
36+
<th>8.16 - 8.17</th>
37+
<th>8.18</th>
38+
<th>8.19</th>
39+
<th>9.0</th>
40+
</tr>
41+
</thead>
42+
<tbody>
43+
<tr>
44+
<td><b>8.x</b></td>
45+
<td>❌</td>
46+
<td>🟡</td>
47+
<td>🟡</td>
48+
<td>🟡</td>
49+
<td>🟡</td>
50+
</tr>
51+
<tr>
52+
<td><b>9.0</b></td>
53+
<td>❌</td>
54+
<td>🟡</td>
55+
<td>✅</td>
56+
<td>✅</td>
57+
<td>✅</td>
58+
</tr>
59+
</tbody>
60+
</table>
61+
62+
### EDOT Collector Compatibility - Components
63+
64+
The components included in the EDOT Collector are categorized into **[Core]** and **[Extended]** components:
65+
66+
| **Component** | **GitHub Repo** | **EDOTCol 8.x** | **EDOTCol 9.x** |
67+
|:-----------------------------|:------------------------|-----------------|--------------------------|
68+
|**Receivers** | | | |
69+
| filelogreceiver | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
70+
| hostmetricsreceiver | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
71+
| k8sclusterreceiver | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
72+
| k8sobjectsreceiver | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
73+
| kubeletstatsreceiver | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
74+
| otlpreceiver | [OTel Core Repo] | 🟡 [Extended] |[Core] (since 9.0) |
75+
| **Exporters** | | | |
76+
| elasticsearchexporter | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
77+
| otlpexporter | [OTel Core Repo] | 🟡 [Extended] |[Core] (since 9.0) |
78+
| **Processors** | | | |
79+
| attributesprocessor | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
80+
| batchprocessor | [OTel Core Repo] | 🟡 [Extended] |[Core] (since 9.0) |
81+
| elasticinframetricsprocessor | [Elastic Repo] | 🟡 [Extended] |[Core] (since 9.0) |
82+
| elastictraceprocessor | [Elastic Repo] | 🟡 [Extended] |[Core] (since 9.0) |
83+
| k8sattributesprocessor | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
84+
| resourceprocessor | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
85+
| resourcedetectionprocessor | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
86+
| **Connectors** | | | |
87+
| elasticapmconnector | [Elastic Repo] | 🟡 [Extended] |[Core] (since 9.0) |
88+
| routingconnector | [OTel Contrib Repo] | 🟡 [Extended] |[Core] (since 9.0) |
89+
90+
See the **[full list of Core & Extended EDOT Collector components here](../edot-collector/components)**.
91+
92+
### EDOT Collector Compatibility - Operating Systems
93+
94+
The following table gives an overview of compatibility and support of EDOT Collector versions with different operating systems.
95+
96+
| **EDOT Collector Version** | Linux/arm64 | Linux/amd64 | Windows | macOS |
97+
|:--------------------------:|:------------:|:--------------:|:----------:|:---------:|
98+
| **8.x** | 🟡 | 🟡 | 🟡 | 🟡 |
99+
| **9.x** ||| 🟡 | 🟡 |
100+
101+
## Other Collector Distributions
102+
103+
Other, non-EDOT distributions of the OTel Collector (such as custom Collector builds, upstream Collector distributions, etc.) are *not* officially supported through Elastic but deemed **technically compatible** (🟡) if they contain the [required OTel Collector components](../edot-collector/custom-collector) and are configured analogously to the EDOT Collector.
104+
105+
Required components and configuration options per use case can be retrieved from the [sample configuration files](https://github.com/elastic/elastic-agent/tree/v{{ site.edot_versions.collector }}/internal/pkg/otel/samples/linux) for the EDOT Collector.
106+
107+
[Incompatible]: ./nomenclature
108+
[Compatible]: ./nomenclature
109+
[Supported]: ./nomenclature
110+
[Extended]: ./nomenclature#extended-components
111+
[Core]: ./nomenclature#core-components
112+
[OTel Core Repo]: https://github.com/open-telemetry/opentelemetry-collector
113+
[OTel Contrib Repo]: https://github.com/open-telemetry/opentelemetry-collector-contrib
114+
[Elastic Repo]: https://github.com/elastic/opentelemetry-collector-components

‎docs/compatibility/index.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: Compatibility & Support
3+
layout: default
4+
nav_order: 4
5+
---
6+
7+
# Compatibility & Support
8+
9+
The following sub-pages describe the compatibility and support levels for different OpenTelemetry Distributions.

‎docs/compatibility/nomenclature.md

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
title: Nomenclature
3+
parent: Compatibility & Support
4+
layout: default
5+
nav_order: 1
6+
---
7+
8+
# Compatibility & Support Nomenclature
9+
10+
OpenTelemetry (OTel) is a modular, extensible framework designed to integrate with a wide range of technologies. Its architecture enables interoperability across many components, extensions, and tools—giving users flexibility to shape their observability pipelines.
11+
12+
Elastic Distributions for OpenTelemetry (EDOT) are built from upstream OTel components and are **technically compatible** with a broad set of community components. Users can also send data to Elastic using other upstream OTel components or distributions like the contrib Collector and OTel SDKs, which are *technically compatible* with Elastic’s ingestion APIs.
13+
14+
**"Supported through Elastic”** refers to components and configurations that Elastic has explicitly tested, validated, and committed to maintaining under our [Support Policies](https://www.elastic.co/support). This includes regular updates, issue triaging, and guidance from Elastic’s support and engineering teams. Components outside of this supported set may still work, but Elastic does not provide guaranteed support or troubleshooting assistance for them.
15+
16+
In the following sections we differentiate the following compatibility and support states:
17+
18+
| State | Description | Symbol |
19+
|:---|:---|:---:|
20+
| **Incompatible** | Component, use case or ingestion path is technically not compatible, thus, functionality is likely to be significantly impacted. ||
21+
| **Compatible** | Component, use case or ingestion path is **technically compatible**. The functionality is not expected to be impaired, though, minor deviations may occur. Component, use case or ingestion path is *not officially support by Elastic*, hence, Elastic does not provide guaranteed support or troubleshooting assistance | 🟡 |
22+
| **Supported** | Component, use case or ingestion path is **technically compatible** and Elastic provides **official support**. The functionality is explicitly tested. Limitations will be documented. ||
23+
24+
## EDOT Collector Components Categorization
25+
The EDOT Collector includes two types of components with different compatibility and support scope:
26+
27+
### Core Components
28+
29+
These are used by default in Elastic’s onboarding flows and are essential for common use cases.
30+
They are **fully supported** (✅) under your Service Level Agreement (SLA).
31+
32+
### Extended Components
33+
34+
A curated set of optional components that enhance functionality and are **technically compatible** (🟡).
35+
These are not part of Elastic’s core product journeys and are not covered by SLAs.
36+
You’re free to use them, but Elastic provides limited support.
37+
38+
{: .note-title}
39+
> Recommendation
40+
>
41+
> For the best support experience, we recommend relying on *Core Components*, and using *Extended Components* only when required.
42+
43+
{: .warning}
44+
> Since the EDOT Collector is built on upstream OpenTelemetry, breaking upstream changes (e.g., to semantic conventions or configuration options) may impact both, *Extended Components* and *Core Components*. Elastic highlights and manages these through docs and support channels.

‎docs/compatibility/sdks.md

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: SDK Distributions
3+
parent: Compatibility & Support
4+
layout: default
5+
nav_order: 3
6+
---
7+
8+
# Compatibility & Support - OTel SDKs
9+
{: .no_toc }
10+
11+
### Legend
12+
{: .no_toc }
13+
14+
| **[Incompatible]** | **[Compatible]** | **[Supported]** |
15+
|| 🟡 ||
16+
17+
### Table of content
18+
{: .no_toc }
19+
20+
- TOC
21+
{:toc}
22+
23+
## EDOT SDKs
24+
25+
### EDOT .NET
26+
27+
🚧 Coming soon
28+
29+
### EDOT Java
30+
31+
EDOT Java is a wrapper around the upstream OTel Java Agent and, thus, follows the compatibility of the upstream component.
32+
Elastic **officially supports** (✅) the technologies, JVM versions and operating systems that are tested and documented in the upstream Java Agent:
33+
34+
| Category | Compatibility & Support Level |
35+
|:-------------------------|:------------------------------:|
36+
| [JVMs] ||
37+
| [Application Servers] ||
38+
| [Libraries & Frameworks] ||
39+
40+
### EDOT Node.js
41+
42+
🚧 Coming soon
43+
44+
### EDOT PHP
45+
46+
🚧 Coming soon
47+
48+
### EDOT Python
49+
50+
🚧 Coming soon
51+
52+
### EDOT Android
53+
54+
🚧 Coming soon
55+
56+
### EDOT iOS
57+
58+
🚧 Coming soon
59+
60+
## Other SDK Distributions
61+
62+
🚧 Coming soon
63+
64+
[JVMs]: https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#jvms-and-operating-systems
65+
[Application Servers]: https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#application-servers
66+
[Libraries & Frameworks]: https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#libraries--frameworks
67+
[Incompatible]: ./nomenclature
68+
[Compatible]: ./nomenclature
69+
[Supported]: ./nomenclature

‎docs/gen_edot_col_components/tools.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,21 @@ def fetch_url_content(url):
2929
def dep_to_component(dep):
3030
url = dep[:dep.rfind(' v')].strip()
3131
html_url = url
32-
repo_link = '[Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib)'
32+
repo_link = '[OTel Contrib Repo](https://github.com/open-telemetry/opentelemetry-collector-contrib)'
3333
if url.startswith('github.com/'):
3434
pattern = r'github.com\/(?P<org>[^\/]*)\/(?P<repo>[^\/]*)\/(?P<comp_type>[^\/]*)\/(?P<comp_name>.*)'
3535
match = re.search(pattern, url)
3636
if match:
3737
print
3838
html_url = f'https://github.com/{match.group("org")}/{match.group("repo")}/tree/main/{match.group("comp_type")}/{match.group("comp_name")}'
3939
if match.group("repo") == 'opentelemetry-collector-components':
40-
repo_link = '[Elastic](https://github.com/elastic/opentelemetry-collector-components)'
40+
repo_link = '[Elastic Repo](https://github.com/elastic/opentelemetry-collector-components)'
4141
elif url.startswith('go.opentelemetry.io/collector'):
4242
pattern = r'go.opentelemetry.io\/collector\/(?P<comp_type>[^\/]*)\/(?P<comp_name>.*)'
4343
match = re.search(pattern, url)
4444
if match:
4545
html_url = f'https://github.com/open-telemetry/opentelemetry-collector/tree/main/{match.group("comp_type")}/{match.group("comp_name")}'
46-
repo_link = '[Core](https://github.com/open-telemetry/opentelemetry-collector)'
46+
repo_link = '[OTel Core Repo](https://github.com/open-telemetry/opentelemetry-collector)'
4747

4848
comp = {
4949
'name': dep[(dep.rfind('/')+1):(dep.rfind(' ')+1)],
@@ -165,7 +165,7 @@ def check_markdown_generation(dir, data, template, tag):
165165

166166
for match in matches:
167167
if match.strip() != output.strip():
168-
print(f'Warning: Generated markdown is outdated in file {filePath}! Regenerate markdown by running `make generate-collector-components`!')
168+
print(f'Warning: Generated markdown is outdated in file {filePath}! Regenerate markdown by running `make generate`!')
169169
return False;
170170

171171
return True;

‎docs/quickstart/ech/docker.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,10 @@ parent: Elastic Cloud Hosted
77

88
# Quickstart - Docker - Hosted
99

10-
TODO
10+
🐳 Docker
11+
{: .label .label-blue }
12+
13+
🗄️ Elastic Cloud Hosted
14+
{: .label .label-blue }
15+
16+
🚧 Coming soon

‎docs/quickstart/self-managed/docker.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ parent: Self-managed
1111
{: .label .label-blue }
1212

1313
🆂 Self-managed Elastic Stack
14-
{: .label .label-yellow }
14+
{: .label .label-yellow }
15+
16+
🚧 Coming soon

‎docs/quickstart/self-managed/hosts_vms.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,23 @@ The quick start for Hosts / VMs with a self-managed Elastic Stack will guide you
2828
```bash
2929
ELASTICSEARCH_ENDPOINT=<ELASTICSEARCH_ENDPOINT> && \
3030
ELASTIC_API_KEY=<ELASTIC_API_KEY> && \
31-
rm ./otel.yml && cp ./otel_samples/logs_metrics_traces.yml ./otel.yml && mkdir -p ./data/otelcol && sed -i 's#\${env:STORAGE_DIR}#'"$PWD"/data/otelcol'#g' ./otel.yml && sed -i 's#\${env:ELASTIC_ENDPOINT}#$ELASTICSEARCH_ENDPOINT' ./otel.yml && sed -i 's/\${env:ELASTIC_API_KEY}/$ELASTIC_API_KEY/g' ./otel.yml
31+
cp ./otel_samples/logs_metrics_traces.yml ./otel.yml && \
32+
mkdir -p ./data/otelcol && \
33+
sed -i "s#\${env:STORAGE_DIR}#${PWD}/data/otelcol#g" ./otel.yml && \
34+
sed -i "s#\${env:ELASTIC_ENDPOINT}#${ELASTICSEARCH_ENDPOINT}#g" ./otel.yml && \
35+
sed -i "s#\${env:ELASTIC_API_KEY}#$ELASTIC_API_KEY#g" ./otel.yml
3236
```
3337

3438
*MacOS*
3539

3640
```bash
3741
ELASTICSEARCH_ENDPOINT=<ELASTICSEARCH_ENDPOINT> && \
3842
ELASTIC_API_KEY=<ELASTIC_API_KEY> && \
39-
rm ./otel.yml && cp ./otel_samples/logs_metrics_traces.yml ./otel.yml && mkdir -p ./data/otelcol && sed -i '' 's#\${env:STORAGE_DIR}#'"$PWD"/data/otelcol'#g' ./otel.yml && sed -i '' 's#\${env:ELASTIC_ENDPOINT}#'"$ELASTICSEARCH_ENDPOINT"'#g' ./otel.yml && sed -i '' 's#\${env:ELASTIC_API_KEY}#'"$ELASTIC_API_KEY"'#g' ./otel.yml
43+
cp ./otel_samples/logs_metrics_traces.yml ./otel.yml && \
44+
mkdir -p ./data/otelcol && \
45+
sed -i '' "s#\${env:STORAGE_DIR}#${PWD}/data/otelcol#g" ./otel.yml && \
46+
sed -i '' "s#\${env:ELASTIC_ENDPOINT}#${ELASTICSEARCH_ENDPOINT}#g" ./otel.yml && \
47+
sed -i '' "s#\${env:ELASTIC_API_KEY}#${ELASTIC_API_KEY}#g" ./otel.yml
4048
```
4149

4250
*Windows*

‎docs/quickstart/serverless/docker.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,10 @@ parent: Elastic Cloud Serverless
77

88
# Quickstart - Docker - Serverless
99

10-
TODO
10+
🐳 Docker
11+
{: .label .label-blue }
12+
13+
☁️ Elastic Cloud Serverless
14+
{: .label .label-green }
15+
16+
🚧 Coming soon

‎docs/use-cases/llm/index.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
title: LLM Observability
3+
layout: default
4+
nav_order: 5
5+
parent: Use Cases
6+
---
7+
# LLM Observability with EDOT
8+
9+
Applications make more and more use of Generative Artificial Intelligence (GenAI). Telemetry data in terms of spans, metrics and logs when communicating with the GenAI APIs becomes more and more important to operate the application in production and understand the application's behavior and health state.
10+
11+
We currently support LLM observability with our EDOT Java, EDOT Node.js and EDOT Python as tech preview. In the following, the supported technologies are listed as well as quickstart instructions to instrument your application to get telemetry data.
12+
13+
# Supported Technologies
14+
15+
| Technology | EDOT Java | EDOT Node.js | EDOT Python |
16+
|:---------|:---------|:---------|:---------|
17+
| OpenAI Client ||||
18+
| AWS Bedrock ||||
19+
20+
See the [Supported Technologies section in the corresponding EDOT SDK](../../edot-sdks/index) for detailed information on supported versions.
21+
22+
# Quickstart
23+
24+
This quick start describes the setup and collection of OpenTelemetry data for LLM applications.
25+
26+
1. **Setup**
27+
28+
Choose the environment and target system from the [quick start overview](../../quickstart/index) and follow the setup instructions to instrument your LLM application. The instrumentation for the supported technologies is enabled by default.
29+
30+
2. **Configuration**
31+
32+
See the [Configuration section in the corresponding EDOT SDK](../../edot-sdks/index) to enable and disable specific instrumentations and to see what instrumentation is enabled by default.
33+
34+
When you finish the setup and the configuration of the EDOT SDK and there is a workload on your application, you should start to see telemetry data in Kibana. If there is no telemetry data showing up, please see the troubleshooting of the EDOT SDK,

0 commit comments

Comments
 (0)
Please sign in to comment.