https://github.com/orbinson/adaptto-opentelemetry-demo
https://github.com/orbinson/adaptto-opentelemetry-demo
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/orbinson/adaptto-opentelemetry-demo
- Owner: orbinson
- License: apache-2.0
- Created: 2024-09-16T21:11:07.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-10-23T10:09:35.000Z (7 months ago)
- Last Synced: 2025-04-05T15:53:59.226Z (about 2 months ago)
- Language: Java
- Size: 1.29 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# adaptTo OpenTelemetry Demo
This project is used as reference project for the adaptTo Observability presentation of 2024.
## Installation
Included is a SpringBoot service that handles product data api calls and an AEM project to showcase on how OpenTelemetry can help you in
connecting the dots between the different microservices in your platform.To get started you can start the OpenTelemetry collector.
There are two variants, a generic one that will log all the telemetry data to a logfile and a second one which uses the datadog exporter.To startup the collector you can use docker compose, if you need the generic one you should drop `otel-collector-datadog` from the command.
```bash
docker compose -f otel-collector/docker-compose.yaml up otel-collector-datadog
```When the collector is setup you can boot the product service
```bash
mvn clean install spring-boot:run -f product-service/pom.xml
```Place the AEMaaCS SDK jar in the `aem` folder and start AEM using the startup script that sets the params
to connect with the OpenTelemetry collector. The script assumes the jar filename matches the pattern `aem-*.jar`.```bash
bash aem/aem-start.sh
```Once all services are running you can deploy the demo project to AEM:
```bash
mvn clean install -PautoInstallSinglePackage -f aem-site/pom.xml
```
## Usage### Traces
#### Product Service
To create a simple trace, connecting to only one service, one can use the Spring boot application:
http://localhost:8080/product/simple
To see how a errors would look like, one can use a malfunctioning product:
http://localhost:8080/product/uncaught-error
http://localhost:8080/product/caught-error
Calling a backend, in our example AEM, can be done with one of the following products:
http://localhost:8080/product/backend
http://localhost:8080/product/backend-error
#### AEM Product Pages
AEM product page that fetch data from the product service
http://localhost:4502/content/aem-site/us/en/product-page.html?productId=simple
AEM product page that fetch data from the product service which in his turn fetches data from an AEM API servlet
http://localhost:4502/content/aem-site/us/en/product-page.html?productId=backend
AEM product page that fetch data from the product service which causes an error in the product service
http://localhost:4502/content/aem-site/us/en/product-page.html?productId=product-service-error
AEM product page with an uncaucht exception in the product service
http://localhost:4502/content/aem-site/us/en/product-page.html?productId=uncaught-error
### Connecting to an APM tool
The most basic setup sends the traces and metrics to a output file in `otel-collector/output`. One can connect
to their own APM toolings by updating exporters in `otel-collector/otel-collector-config.yaml`An example of an APM tool that can run self-hosted in linux and macOS on Docker is SigNoz, a simple Signoz setup has
been added and can be run by using the following command **after bringing down the generic otel collector** :```bash
docker compose -f signoz/docker-compose.yaml up -d
```Alternatively, you can use the install script from their site if not all toolings are available on your local
machine: https://signoz.io/docs/install/docker/#install-signoz-using-the-install-scriptNavigate to http://localhost:3301 to log into SigNoz
**Demo Flow**
- Show opentelemetry osgi wrappers and tell about the difficulties (uber jar vs single jars, netty vs okhttp, service loader, feature model it tests)
- Show aemaacs opentelemetry instrumentation (OpenTelemetryFactor, Filters, opentelemetry-okhttp-exporter package vs minimal)
- Show this project (AEM request of simple product, AEM request of error product, AEM request of backend product, Turn off spring boot application. Show in dashboards)
- Show this project (Enable component filter, show in dashboards)