OpenTelemetry Demo with SolarWinds Observability

April 20, 2026 · View on GitHub

License

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:

  1. Ingestion API token — create one in SolarWinds Observability SaaS under Settings > API Tokens (select the Ingestion token type). See API Tokens for details.

  2. 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). Replace xx-yy in the URIs below with your data center identifier. See Data centers and endpoint URIs for the full list.

    VariableValuePurpose
    SW_APM_SERVICE_TOKENYour ingestion API tokenAuthenticates 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

  1. Clone the repository:

    git clone https://github.com/solarwinds/opentelemetry-demo.git
    cd opentelemetry-demo
    
  2. Set the SolarWinds environment variables in the .env file:

    # 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.com
    

    Important: Replace <your_ingestion_token> with the token created in the Prerequisites and xx-yy with your data center identifier.

  3. Start the demo:

    docker compose up -d
    
  4. Once running, the web store is available at http://localhost:8080/.

Deploy with Kubernetes

  1. Create the target namespace:

    kubectl create namespace otel-demo
    
  2. Create the secret with your SWO ingestion token:

    kubectl create secret generic swo-apm \
      --from-literal=token=<your_ingestion_token> \
      -n otel-demo
    
  3. Review and update the swo-config ConfigMap inside kubernetes/opentelemetry-demo.yaml with the endpoints matching your data center (replace na-01 if 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
    
  4. 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.