Repository navigation
Trace the otlp-trace feature with the OpenTelemetry Astronomy Shop - #308
Merged
Merged
Conversation
The otlp-trace feature no longer runs a second copy of the music application: OpenTelemetry-only code would have had to go into services the SkyWalking-agent copy shares. It runs the OpenTelemetry Astronomy Shop instead, whose services are instrumented by the OpenTelemetry SDKs, with its collector sending every span to the OAP. Its Postgres, Valkey and Kafka calls feed the OTLP virtual database, cache and MQ layers. On Docker Compose the demo is transcribed from its own 3.1.0 compose files on its own network, without its Jaeger, Grafana, Prometheus, OpenSearch, feature-flag UI and docs site; the storefront is published on 8088. Its init.sql, flag definitions and product-catalog SDK config are copied unchanged, and its collector config is replaced by one that sends traces to the OAP and drops metrics and logs. On Kubernetes the demo's Helm chart is installed by the Makefile as its own release in the otel-demo namespace, since its services take fixed names, with the same parts off and the collector config replaced through alternateConfig. The OAP moves to a master image with the Trace Analysis Language, which builds the OTLP layers, and the UI to a Horizon image with their dashboards. skywalking-helm moves to d6d0344, whose fresh installs carry only the Kubernetes recommended labels, so the cilium policies match OAP and Satellite by both label styles. Also fixed on the way: the Docker music-application services are named agent::*, as on Kubernetes, so recommendation no longer shares a service with the Astronomy Shop's; ActiveMQ's `expose` lists a container port, since Compose (v5.4 here) rejects `1616:1616` there; and the recommendation image reinstalls apache-skywalking 1.2.0 from PyPI, since the agent wheel in apache/skywalking-python's 1.2.0 image lacks skywalking.protocol and the agent never started.
The Sessionizer moves to eb30abaa, which renders conversations with Horizon 1401336, the UI this showcase now runs. Its configuration follows the release: the per-adapter `metrics` and `metrics_lookback` became one top-level `metrics` block, which keeps deriving every landed file whatever its age (the old keys are now ignored, which would have meant a 72h lookback); `claude-code-changes` is named `changes`; and the `claude-code-otlp` entry, an adapter the release removed, is gone. The scenarios image is unchanged.
The latest master image. Its two new commits read Kubernetes metadata in the background and build the dated Elasticsearch index names through one policy; the settings this showcase passes are unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The
otlp-tracefeature ran a second copy of the music application under OpenTelemetry auto-instrumentation. To make that copy's traces read well, OpenTelemetry-only code had to go into services the SkyWalking-agent copy also runs (a JMSprocessspan and an agent extension in songs-service). The OpenTelemetry Astronomy Shop is instrumented with the OpenTelemetry SDKs already, and its Postgres, Valkey and Kafka calls feed the OTLP virtual database, cache and MQ layers, which the music app never did.What
otlp-traceruns the Astronomy Shop (3.1.0). Its collector sends every span to the OAP over OTLP/gRPC, and accepts and drops the metrics and logs.compose.yamlandcompose.full.yamlat 3.1.0, asotel-demo-*services on their own network with aliases for the hostnames the demo uses. Left out: the demo's Jaeger, Grafana, Prometheus, OpenSearch, feature-flag UI and docs site. The storefront is published on host port 8088.config/opentelemetry-demo/holds the demo'sinit.sql, flag definitions and product-catalog SDK config, copied unchanged, plus our own collector config..licenserc.yamlskips the two copied files that carry the OpenTelemetry Authors' header.make deployinstalls the demo's Helm chart (0.42.4) as its ownotel-demorelease in theotel-demonamespace, because its services take fixed names (frontend,kafka,otel-collector, ...);make undeploydeletes it.deploy/platform/config/opentelemetry-demo/values.yamlturns off the same parts plus its AI components, and replaces the collector config throughalternateConfig. The collector runs as one Deployment with no cluster-wide presets.Makefile.inhasOTEL_DEMO_IMAGE,OTEL_DEMO_IMAGE_TAGandOTEL_DEMO_CHART_VERSIONinstead.8c9901c8, Horizon →14013366. The OTLP layers need the Trace Analysis Language (Add the Trace Analysis Language (TAL) to analyze OTLP traces into metrics and topology skywalking#14129) and Horizon's OpenTelemetry layer dashboards (feat(layers): bundle the OTLP trace layers under an OpenTelemetry group skywalking-horizon-ui#193); the previous OAP pin predates TAL, so those layers stayed empty.eb30abaa, which renders conversations with Horizon14013366. Its configuration follows the release: the per-adaptermetricsandmetrics_lookbackbecame a top-levelmetricsblock that keepslookback: none(the old keys are now ignored, which would have meant a 72h lookback);claude-code-changesis nowchanges; the removedclaude-code-otlpadapter entry is gone. The scenarios image is unchanged.d6d0344(Adopt the Kubernetes recommended labels: new installs use only them, older releases keep theirs skywalking-helm#203). A fresh install now carries only the Kubernetes recommended labels; an existing release keeps its legacy ones on upgrade. Theciliumpolicies select OAP and Satellite by both label styles, so they match either kind of release.agent::*, as on Kubernetes. Asrecommendation, the agent's service had the same name as the Astronomy Shop's, so OAP would have merged them into one service with both apps' instances and endpoints.docker-compose.agent.yaml: ActiveMQ'sexposelists"1616"; Compose (v5.4 here) rejects1616:1616there, so theagentfeature did not start.services/recommendation-service/Dockerfilereinstallsapache-skywalking==1.2.0from PyPI. The agent wheel inapache/skywalking-python:1.2.0-grpc-py3.10-slimlacks the generatedskywalking.protocolpackage (ModuleNotFoundErrorat start, on arm64 and amd64), so recommendation never reported; the PyPI wheel of the same release has it.Validation
single-node,agent,otlp-trace:astronomy-db,valkey-cart:6379andkafkain the OTLP virtual layers, each with calls per minute;7f6a353a, the TAL merge), not against8c9901c8.single-node,banyandb,java-agent-injector,otlp-trace:agent::*services once recommendation ran the fixed image, built locally;62c64a8.single-node,cluster) merge withotlp-traceandagent;validateon their collector images;d6d0344with the cilium policies on, and each new-label selector matches the rendered OAP or Satellite pod.eb30abaa: the migrated config loads (asz sources), and the 10 scenario files ofasz-scenarios:6477d6bpassasz scenario check; the chart renders with theaszfeature.