Skip to content

Commit 7244af1

Browse files
committed
Cleaning up old docs, phase 1
Signed-off-by: Alexander Wert <alexander.wert@elastic.co>
1 parent f3d4ce6 commit 7244af1

26 files changed

+743
-860
lines changed

docs/Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ gem "jekyll", "~> 3.10.0"
1212
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
1313
# uncomment the line below. To upgrade, run `bundle update github-pages`.
1414
gem "github-pages", "~> 232", group: :jekyll_plugins
15+
gem "html-proofer"
1516
# If you have any plugins, put them here!
1617
group :jekyll_plugins do
1718
gem "just-the-docs"

docs/_config.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ just_the_docs:
6464
edot_versions:
6565
collector: 8.17.2
6666
android:
67-
dotnet:
67+
dotnet: 1.0.0-beta.1
6868
ios:
69-
java:
70-
nodejs:
69+
java: 1.2.1
70+
nodejs: 0.7.0
7171
php:
72-
python:
72+
python: 0.7.0

docs/_edot-collector/download.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Below are the direct download links for **EDOT Collector version {{ site.edot_ve
2020
| Linux (DEB) | aarch64 | [Download](https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-{{ site.edot_versions.collector }}-arm64.deb) |
2121
| Linux (RPM) | x86_64 | [Download](https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-{{ site.edot_versions.collector }}-x86_64.rpm) |
2222
| Linux (RPM) | aarch64 | [Download](https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-{{ site.edot_versions.collector }}-aarch64.rpm) |
23-
https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.3-aarch64.rpm
23+
2424
Once downloaded you can get EDOT Collector running with the below command.
2525
```
2626
sudo ./otelcol --config otel.yml

docs/_edot-collector/index.md

-16
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,5 @@ To request a component to be added to EDOT Collector, please submit a [github is
3030
## Collector Limitations
3131
The EDOT collector has some limitations which are mostly inherited from the upstream components, see the [full list](_edot-collector/edot-collector-limitations.md) here before troubleshooting.
3232

33-
## 🔧 Troubleshooting Quick Reference
34-
35-
* **Check Logs**: Review the Collector’s logs for error messages.
36-
* **Validate Configuration:** Use the `--dry-run` option to test configurations.
37-
* Enable Debug Logging: Run the Collector with `--log-level=debug` for detailed logs.
38-
* **Check Service Status:** Ensure the Collector is running with `systemctl status <collector-service>` (Linux) or `tasklist` (Windows).
39-
* **Test Connectivity:** Use `telnet <endpoint> <port>` or `curl` to verify backend availability.
40-
* **Check Open Ports:** Run netstat `-tulnp or lsof -i` to confirm the Collector is listening.
41-
* **Monitor Resource Usage:** Use top/htop (Linux) or Task Manager (Windows) to check CPU & memory.
42-
* **Validate Exporters:** Ensure exporters are properly configured and reachable.
43-
* **Verify Pipelines:** Use `otelctl` diagnose (if available) to check pipeline health.
44-
* **Check Permissions:** Ensure the Collector has the right file and network permissions.
45-
* **Review Recent Changes:** Roll back recent config updates if the issue started after changes.
46-
47-
For in-depth details on troubleshooting refer to the [OpenTelemetry Collector troubleshooting documentation](https://opentelemetry.io/docs/collector/troubleshooting/)
48-
4933
### 📄 License
5034
View details of license for [EDOT Collector](https://github.com/elastic/elastic-agent/blob/main/LICENSE.txt).

docs/_edot-collector/troubleshooting.md

+17-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,20 @@ layout: default
44
nav_order: 6
55
---
66

7-
# Troubleshooting the EDOT Collector
7+
# Troubleshooting the EDOT Collector
8+
9+
## 🔧 Troubleshooting Quick Reference
10+
11+
* **Check Logs**: Review the Collector’s logs for error messages.
12+
* **Validate Configuration:** Use the `--dry-run` option to test configurations.
13+
* Enable Debug Logging: Run the Collector with `--log-level=debug` for detailed logs.
14+
* **Check Service Status:** Ensure the Collector is running with `systemctl status <collector-service>` (Linux) or `tasklist` (Windows).
15+
* **Test Connectivity:** Use `telnet <endpoint> <port>` or `curl` to verify backend availability.
16+
* **Check Open Ports:** Run netstat `-tulnp or lsof -i` to confirm the Collector is listening.
17+
* **Monitor Resource Usage:** Use top/htop (Linux) or Task Manager (Windows) to check CPU & memory.
18+
* **Validate Exporters:** Ensure exporters are properly configured and reachable.
19+
* **Verify Pipelines:** Use `otelctl` diagnose (if available) to check pipeline health.
20+
* **Check Permissions:** Ensure the Collector has the right file and network permissions.
21+
* **Review Recent Changes:** Roll back recent config updates if the issue started after changes.
22+
23+
For in-depth details on troubleshooting refer to the [OpenTelemetry Collector troubleshooting documentation](https://opentelemetry.io/docs/collector/troubleshooting/)

docs/_edot-sdks/index.md

+32-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,36 @@ layout: default
44
nav_order: 1
55
---
66

7-
## EDOT Language SDKs
7+
# EDOT Language SDKs
88

9-
Put some content here
9+
The Elastic Distributions of OpenTelemetry (EDOT) Language SDKs (aka. application agents) are thin wrappers around corresponding upstream [OpenTelemetry SDKs](https://opentelemetry.io/docs/languages/), preconfigured for best experience with Elastic Observability.
10+
EDOT Language SDKs are fully compatible with and can be used as a drop in replacement for upstream OTel SDKs.
11+
In addition, EDOT SDKs provide some popular, enterprise add-on features Elastic APM users might know from classic Elastic APM agents.
12+
13+
![](../images/edot-sdks.png)
14+
15+
Currently, the following EDOT SDKs are availble:
16+
17+
| EDOT SDK | Release Status |
18+
|:-------------------|:---------------|
19+
| [EDOT .NET](./dotnet/index) | Technical Preview |
20+
| [EDOT Java](./java/index) | GA |
21+
| [EDOT Node.js](./nodejs/index) | Technical Preview |
22+
| [EDOT PHP](./php/index) | Technical Preview |
23+
| [EDOT Python](./python/index) | Technical Preview |
24+
| [EDOT Android](./android/index) | Technical Preview |
25+
| [EDOT iOS](./ios/index) | GA |
26+
27+
For languages for which Elastic does not offer its own distribution, we recommend using the upstream OTel SDKs:
28+
29+
| Language | Release Status |
30+
|:-------------------|:---------------|
31+
| JS / Browser | [Vanilla OTel RUM SDK/API](https://opentelemetry.io/docs/languages/js/) |
32+
| Rust | [Vanilla OTel Rust SDK/API](https://opentelemetry.io/docs/languages/rust/) |
33+
| Ruby | [Vanilla OTel Ruby SDK/API](https://opentelemetry.io/docs/languages/ruby/) |
34+
| Go | [Vanilla OTel Go SDK/API](https://opentelemetry.io/docs/languages/go/) |
35+
| C++ | [Vanilla OTel C++ SDK/API](https://opentelemetry.io/docs/languages/cpp/) |
36+
37+
## Elastic Support for EDOT SDKs
38+
39+
Elastic provides technical support for EDOT Language SDKs according to Elastic's [Support Policy](https://www.elastic.co/support_policy). EDOT SDKs are meant to be used in combination with the [EDOT Collector](../edot-collector/index) or Elastic's managed OTLP endpoint (on Elastic Cloud Serverless) to ingest data into Elastic solutions from the EDOT SDKs. Other ingestion paths are not officially supported by Elastic.

docs/_edot-sdks/java/setup/k8s.md

+112-112
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: EDOT Java on Kubernetes
2+
title: Kubernetes
33
layout: default
44
nav_order: 1
55
parent: Setup
@@ -8,11 +8,11 @@ grand_parent: EDOT Java
88

99
# Instrumenting Java applications with EDOT SDKs on Kubernetes
1010

11-
This document focuses on instrumenting Java applications on Kubernetes, using the OpenTelemetry Operator, Elastic Distribution of OpenTelemetry (EDOT) Collectors, and the [EDOT Java](https://github.com/elastic/elastic-otel-java) SDK.
11+
This document focuses on instrumenting Java applications on Kubernetes, using the OpenTelemetry Operator, Elastic Distribution of OpenTelemetry (EDOT) Collectors, and the EDOT Java SDK.
1212

13-
- For general knowledge about the EDOT Java SDK, refer to the [getting started guide](https://github.com/elastic/elastic-otel-java/blob/main/docs/get-started.md).
13+
- For general knowledge about the EDOT Java SDK, refer to the [EDOT Java Intro page](../index).
1414
- For Java auto-instrumentation specifics, refer to [OpenTelemetry Operator Java auto-instrumentation](https://opentelemetry.io/docs/kubernetes/operator/automatic/#java).
15-
- For general information about instrumenting applications on kubernetes, refer to [instrumenting applications](./instrumenting-applications.md).
15+
- For general information about instrumenting applications on kubernetes, refer to [instrumenting applications on Kubernetes](../../../use-cases/kubernetes/instrumenting-applications).
1616

1717
## Java agent extensions consideration
1818

@@ -30,134 +30,134 @@ In this example, you'll learn how to:
3030

3131
For this example, we assume the application you're instrumenting is a deployment named `java-app` running in the `java-ns` namespace.
3232

33-
1. Ensure you have successfully [installed the OpenTelemetry Operator](./README.md), and confirm that the following `Instrumentation` object exists in the system:
33+
1. Ensure you have successfully [installed the OpenTelemetry Operator](../../../use-cases/kubernetes/deployment), and confirm that the following `Instrumentation` object exists in the system:
3434

35-
```bash
36-
$ kubectl get instrumentation -n opentelemetry-operator-system
37-
NAME AGE ENDPOINT
38-
elastic-instrumentation 107s http://opentelemetry-kube-stack-daemon-collector.opentelemetry-operator-system.svc.cluster.local:4318
39-
```
35+
```bash
36+
$ kubectl get instrumentation -n opentelemetry-operator-system
37+
NAME AGE ENDPOINT
38+
elastic-instrumentation 107s http://opentelemetry-kube-stack-daemon-collector.opentelemetry-operator-system.svc.cluster.local:4318
39+
```
4040

41-
{: .note }
42-
> If your `Instrumentation` object has a different name or is created in a different namespace, you will have to adapt the annotation value in the next step.
41+
{: .note }
42+
> If your `Instrumentation` object has a different name or is created in a different namespace, you will have to adapt the annotation value in the next step.
4343

4444
2. Enable auto-instrumentation of your Java application using one of the following methods:
4545

46-
- Edit your application workload definition and include the annotation under `spec.template.metadata.annotations`:
46+
- Edit your application workload definition and include the annotation under `spec.template.metadata.annotations`:
4747

48-
```yaml
49-
kind: Deployment
50-
metadata:
51-
name: java-app
52-
namespace: java-ns
53-
spec:
54-
...
55-
template:
48+
```yaml
49+
kind: Deployment
5650
metadata:
57-
...
58-
annotations:
59-
instrumentation.opentelemetry.io/inject-java: opentelemetry-operator-system/elastic-instrumentation
60-
...
61-
```
62-
63-
- Alternatively, add the annotation at namespace level to apply auto-instrumentation in all Pods of the namespace:
64-
65-
```bash
66-
kubectl annotate namespace java-ns instrumentation.opentelemetry.io/inject-java=opentelemetry-operator-system/elastic-instrumentation
67-
```
51+
name: java-app
52+
namespace: java-ns
53+
spec:
54+
# ...
55+
template:
56+
metadata:
57+
# ...
58+
annotations:
59+
instrumentation.opentelemetry.io/inject-java: opentelemetry-operator-system/elastic-instrumentation
60+
# ...
61+
```
62+
63+
- Alternatively, add the annotation at namespace level to apply auto-instrumentation in all Pods of the namespace:
64+
65+
```bash
66+
kubectl annotate namespace java-ns instrumentation.opentelemetry.io/inject-java=opentelemetry-operator-system/elastic-instrumentation
67+
```
6868

6969
3. Restart application
7070

71-
Once the annotation has been set, restart the application to create new Pods and inject the instrumentation libraries:
71+
Once the annotation has been set, restart the application to create new Pods and inject the instrumentation libraries:
7272

7373
```bash
7474
kubectl rollout restart deployment java-app -n java-ns
7575
```
7676

77-
4. Verify the [auto-instrumentation resources](./instrumenting-applications.md#how-auto-instrumentation-works) are injected in the Pod:
78-
79-
Run a `kubectl describe` of one of your application Pods and check:
80-
81-
- There should be an init container named `opentelemetry-auto-instrumentation-java` in the Pod:
82-
83-
```bash
84-
$ kubectl describe pod java-app-8d84c47b8-8h5z2 -n java-ns
85-
Name: java-app-8d84c47b8-8h5z2
86-
Namespace: java-ns
87-
...
88-
...
89-
Init Containers:
90-
opentelemetry-auto-instrumentation-java:
91-
Container ID: containerd://cbf67d7ca1bd62c25614b905a11e81405bed6fd215f2df21f84b90fd0279230b
92-
Image: docker.elastic.co/observability/elastic-otel-javaagent:1.0.0
93-
Image ID: docker.elastic.co/observability/elastic-otel-javaagent@sha256:28d65d04a329c8d5545ed579d6c17f0d74800b7b1c5875e75e0efd29e210566a
94-
Port: <none>
95-
Host Port: <none>
96-
Command:
97-
cp
98-
/javaagent.jar
99-
/otel-auto-instrumentation-java/javaagent.jar
100-
State: Terminated
101-
Reason: Completed
102-
Exit Code: 0
103-
Started: Wed, 13 Nov 2024 15:47:02 +0100
104-
Finished: Wed, 13 Nov 2024 15:47:03 +0100
105-
Ready: True
106-
Restart Count: 0
107-
Environment: <none>
108-
Mounts:
109-
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
110-
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-swhn5 (ro)
111-
```
112-
113-
- The main container of the deployment is using the SDK as `javaagent`:
114-
115-
```bash
116-
...
117-
Containers:
118-
java-app:
119-
Environment:
120-
...
121-
JAVA_TOOL_OPTIONS: -javaagent:/otel-auto-instrumentation-java/javaagent.jar
122-
OTEL_SERVICE_NAME: java-app
123-
OTEL_EXPORTER_OTLP_ENDPOINT: http://opentelemetry-kube-stack-daemon-collector.opentelemetry-operator-system.svc.cluster.local:4318
124-
...
125-
```
126-
127-
- The Pod has an `EmptyDir` volume named `opentelemetry-auto-instrumentation-java` mounted in both the main and the init containers in path `/otel-auto-instrumentation-java`.
128-
129-
```bash
130-
Init Containers:
131-
opentelemetry-auto-instrumentation-java:
132-
...
133-
Mounts:
134-
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
135-
Containers:
136-
java-app:
137-
...
138-
Mounts:
139-
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
140-
...
141-
Volumes:
142-
...
143-
opentelemetry-auto-instrumentation-java:
144-
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
145-
```
146-
147-
Ensure the environment variable `OTEL_EXPORTER_OTLP_ENDPOINT` points to a valid endpoint and there's network communication between the Pod and the endpoint.
77+
4. Verify the [auto-instrumentation resources](../../../use-cases/kubernetes/instrumenting-applications#how-auto-instrumentation-works) are injected in the Pod:
78+
79+
Run a `kubectl describe` of one of your application Pods and check:
80+
81+
- There should be an init container named `opentelemetry-auto-instrumentation-java` in the Pod:
82+
83+
```bash
84+
$ kubectl describe pod java-app-8d84c47b8-8h5z2 -n java-ns
85+
Name: java-app-8d84c47b8-8h5z2
86+
Namespace: java-ns
87+
...
88+
...
89+
Init Containers:
90+
opentelemetry-auto-instrumentation-java:
91+
Container ID: containerd://cbf67d7ca1bd62c25614b905a11e81405bed6fd215f2df21f84b90fd0279230b
92+
Image: docker.elastic.co/observability/elastic-otel-javaagent:1.0.0
93+
Image ID: docker.elastic.co/observability/elastic-otel-javaagent@sha256:28d65d04a329c8d5545ed579d6c17f0d74800b7b1c5875e75e0efd29e210566a
94+
Port: <none>
95+
Host Port: <none>
96+
Command:
97+
cp
98+
/javaagent.jar
99+
/otel-auto-instrumentation-java/javaagent.jar
100+
State: Terminated
101+
Reason: Completed
102+
Exit Code: 0
103+
Started: Wed, 13 Nov 2024 15:47:02 +0100
104+
Finished: Wed, 13 Nov 2024 15:47:03 +0100
105+
Ready: True
106+
Restart Count: 0
107+
Environment: <none>
108+
Mounts:
109+
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
110+
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-swhn5 (ro)
111+
```
112+
113+
- The main container of the deployment is using the SDK as `javaagent`:
114+
115+
```bash
116+
...
117+
Containers:
118+
java-app:
119+
Environment:
120+
...
121+
JAVA_TOOL_OPTIONS: -javaagent:/otel-auto-instrumentation-java/javaagent.jar
122+
OTEL_SERVICE_NAME: java-app
123+
OTEL_EXPORTER_OTLP_ENDPOINT: http://opentelemetry-kube-stack-daemon-collector.opentelemetry-operator-system.svc.cluster.local:4318
124+
...
125+
```
126+
127+
- The Pod has an `EmptyDir` volume named `opentelemetry-auto-instrumentation-java` mounted in both the main and the init containers in path `/otel-auto-instrumentation-java`.
128+
129+
```bash
130+
Init Containers:
131+
opentelemetry-auto-instrumentation-java:
132+
...
133+
Mounts:
134+
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
135+
Containers:
136+
java-app:
137+
...
138+
Mounts:
139+
/otel-auto-instrumentation-java from opentelemetry-auto-instrumentation-java (rw)
140+
...
141+
Volumes:
142+
...
143+
opentelemetry-auto-instrumentation-java:
144+
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
145+
```
146+
147+
Ensure the environment variable `OTEL_EXPORTER_OTLP_ENDPOINT` points to a valid endpoint and there's network communication between the Pod and the endpoint.
148148
149149
5. Confirm data is flowing to **Kibana**:
150150
151-
- Open **Observability** -> **Applications** -> **Service inventory**, and determine if:
152-
- The application appears in the list of services.
153-
- The application shows transactions and metrics.
151+
- Open **Observability** -> **Applications** -> **Service inventory**, and determine if:
152+
- The application appears in the list of services.
153+
- The application shows transactions and metrics.
154154
155-
- For application container logs, open **Kibana Discover** and filter for your Pods' logs. In the provided example, we could filter for them with either of the following:
156-
- `k8s.deployment.name: "java-app"` (**adapt the query filter to your use case**)
157-
- `k8s.pod.name: java-app*` (**adapt the query filter to your use case**)
155+
- For application container logs, open **Kibana Discover** and filter for your Pods' logs. In the provided example, we could filter for them with either of the following:
156+
- `k8s.deployment.name: "java-app"` (**adapt the query filter to your use case**)
157+
- `k8s.pod.name: java-app*` (**adapt the query filter to your use case**)
158158
159-
Note that the container logs are not provided by the instrumentation library, but by the DaemonSet collector deployed as part of the [operator installation](./README.md).
159+
Note that the container logs are not provided by the instrumentation library, but by the DaemonSet collector deployed as part of the [operator installation](../../../use-cases/kubernetes/deployment).
160160
161161
## Troubleshooting
162162
163-
- Refer to [troubleshoot auto-instrumentation](./troubleshoot-auto-instrumentation.md) for further analysis.
163+
Refer to [troubleshoot auto-instrumentation](../../../use-cases/kubernetes/instrumenting-applications#troubleshooting-auto-instrumentation) for further analysis.

0 commit comments

Comments
 (0)