OpenTelemetry Demo with SolarWinds Observability
April 20, 2026 · View on GitHub
About
This repository is a fork of the OpenTelemetry Astronomy Shop Demo, a microservice-based distributed system that illustrates the implementation of OpenTelemetry in a near real-world environment.
This fork demonstrates how the Astronomy Shop can be monitored using SolarWinds Observability. Service implementations, Dockerfiles, and Kubernetes manifests have been adjusted to send telemetry data to SolarWinds Observability for full-stack application performance monitoring and troubleshooting.
You can explore a live deployment of this demo in the SolarWinds Observability Online Demo.
Prerequisites
Before deploying the demo, you need a SolarWinds Observability SaaS account and the following configuration values:
-
Ingestion API token — create one in SolarWinds Observability SaaS under Settings > API Tokens (select the Ingestion token type). See API Tokens for details.
-
Data center endpoints — endpoint URIs depend on the data center your organization uses (visible in your SWO URL, e.g.
na-01,na-02,eu-01,ap-01). Replacexx-yyin the URIs below with your data center identifier. See Data centers and endpoint URIs for the full list.Variable Value Purpose SW_APM_SERVICE_TOKENYour ingestion API token Authenticates telemetry sent to SWO SW_APM_COLLECTORapm.collector.xx-yy.cloud.solarwinds.comAPM collector endpoint SW_OTEL_ADDRESSotel.collector.xx-yy.cloud.solarwinds.comOTLP telemetry data ingestion endpoint (port 443)
For information on how to add individual services to monitoring, see Add a service.
Deploy with Docker
-
Clone the repository:
git clone https://github.com/solarwinds/opentelemetry-demo.git cd opentelemetry-demo -
Set the SolarWinds environment variables in the
.envfile:# SolarWinds Observability SW_APM_SERVICE_TOKEN=<your_ingestion_token> SW_APM_COLLECTOR=apm.collector.xx-yy.cloud.solarwinds.com SW_OTEL_ADDRESS=otel.collector.xx-yy.cloud.solarwinds.comImportant: Replace
<your_ingestion_token>with the token created in the Prerequisites andxx-yywith your data center identifier. -
Start the demo:
docker compose up -d -
Once running, the web store is available at http://localhost:8080/.
Deploy with Kubernetes
-
Create the target namespace:
kubectl create namespace otel-demo -
Create the secret with your SWO ingestion token:
kubectl create secret generic swo-apm \ --from-literal=token=<your_ingestion_token> \ -n otel-demo -
Review and update the
swo-configConfigMap insidekubernetes/opentelemetry-demo.yamlwith the endpoints matching your data center (replacena-01if needed):apiVersion: v1 kind: ConfigMap metadata: name: swo-config data: OTEL_ADDRESS: otel.collector.na-01.cloud.solarwinds.com:443 SW_APM_COLLECTOR: apm.collector.na-01.cloud.solarwinds.com -
Apply the manifests:
kubectl apply -f kubernetes/opentelemetry-demo.yaml -n otel-demo
See kubernetes/README.md for additional Kubernetes configuration options.
Note: For configuring Kubernetes monitoring in SolarWinds Observability, see Kubernetes monitoring.
Documentation
For general documentation on the upstream demo, see the OpenTelemetry Demo Documentation.
For SolarWinds Observability, see the SolarWinds documentation.
License
This project is licensed under the Apache 2.0 License — see the LICENSE file for details.