Skip to content

3.0.0

Latest

Choose a tag to compare

@julianocosta89 julianocosta89 released this 24 Jul 09:33
1755859

OpenTelemetry Demo 3.0

We are planning a blog post to share more details about this major release. Stay tuned on opentelemetry.io/blog.

💥 Breaking changes

Telemetry attribute renaming to the demo.* prefix. Custom demo attributes previously used the app.* prefix, which conflicts with client-side instrumentation conventions. All demo-specific attributes have been renamed to demo.* across every business domain. If you have dashboards, alerts, or queries referencing the old app.* attributes, they will need to be updated.

  • Product: demo.product.id, demo.product.name, demo.product.quantity, demo.product.count, demo.product.recommended.count, demo.product.review.question (#3355, #3370, #3371, #3372, #3374, #3376, #3454)
  • Ad: demo.ad.* (#3387)
  • Order, Cart, Payment: demo.order.*, demo.cart.*, demo.payment* (#3389, #3390, #3484)
  • Shipping: demo.shipping.* (#3391)
  • Exchange, User Context, Recommendation, Notification, Other (#3393)
  • Metrics: demo.ads.ad_requests, demo.cart.add_item.latency, demo.cart.get_cart.latency, demo.currency, demo.payment.transactions, plus remaining recommendation/review metrics (#3399, #3401)
  • Duplicate frontend request metric removed (#3400)
  • Dropped email-recipient attribute removed for privacy (#3397)
  • Misc attribute domain dissolved into proper categories (#3482)
  • Final cleanup of leftover naming (#3435)

All by @fbourgey.

Services removed:

🚀 Deployment modes

  • Modular Docker Compose with layered -f files, so services can be composed selectively (#3229) by @puckpuck
  • Podman support added alongside Docker (#3307) by @osullivandonal
  • Opt-in read-only root filesystem for checkout, product-catalog, and shipping (#3658) by @bhuvan-somisetty
  • Generated Kubernetes manifests removed from the repo (#3236) by @puckpuck

Agentic

New Agent, MCP, and Chatbot services added to the demo (#3455) by @fali007, plus follow-up hardening:

Profiling

📊 Self-observability & OpAMP Server

  • Self-observability dashboard added (#3621), extended to fraud-detection and the Kafka Java service (#3653) by @cijothomas
  • OpAMP status reporting for the Collector (#3566) by @cijothomas
  • Events by Name dashboard added (#3691) with filters (#3697) by @cijothomas
  • Exemplar-to-logs navigation added in Grafana (#3617) by @cijothomas
  • Host metadata resource attributes added via the resourcedetector processor (#3417) by @osullivandonal
  • gen_ai_normalizer processor added for Traceloop telemetry (#3604) by @ps48
  • Grafana bumped to 13.0.1 with a provisioned default-email receiver (#3288) by @tolzhabayev
  • Cart exemplars dashboard fixed to use demo_cart metrics (#3436) by @fbourgey

🧪 Load generator overhaul

✨ Other notable changes

  • Kafka metrics exporter added to the Collector (#3158) by @Red-GV, with KAFKA_ADDR (#3219) and KAFKA_TOPIC (#3665) environment variables added by @julianocosta89 and @ryanfaircloth
  • New service.criticality demo attribute (#2950) by @bachgarash
  • enduser.id propagated as a span attribute and W3C baggage across frontend, ad, and payment (#3366) by @dpacheconr
  • More realistic PostgreSQL setup with dedicated users, database, and monitoring (#3153) by @cyrille-leclerc
  • Weaver configuration added for all telemetry, with a generated mkdocs site (telemetry-docs) (#2794) by @martinjt
  • DSN-derived attributes added to product-catalog DB telemetry (#3154) and otelsql SQLCommenter instrumentation added (#3577) by @abruneau
  • Prometheus /metrics endpoint exposed on ad, scraped by the Collector (#3388) by @cyrille-leclerc
  • OpenFeature flag generation support added for checkout and product-catalog (#3305) by @erka
  • shippingSlowdown feature flag added to delay international shipments (#3354) by @tlee768
  • cartFailure made a configurable rate instead of a fixed toggle (#3625) by @bhuvan-somisetty
  • Source-generated logging with EventName adopted in cart, accounting (#3559) and currency (#3562) by @cijothomas
  • Payment switched to zero-code JS instrumentation via NODE_OPTIONS (#3486) by @tlee768
  • Synthetic test requests annotated in payment and checkout (#3613, #3628) by @cijothomas
  • Checkout and shipping OTLP exporters migrated from gRPC to http/protobuf (#3618, #3619) by @cijothomas
  • Custom 404/500 error pages added to the frontend (#3664) by @bhuvan-somisetty
  • Health checks added across services (#3487) by @julianocosta89
  • Telemetry sanity tests added to validate the end-to-end observability pipeline (#3356) by @ps48
  • flagd-ui switched to LiveView navigation between Basic and Advanced tabs (#3696) by @bhuvan-somisetty

🐛 Bug fixes

  • Correct nanos handling in payment (#3750), checkout (#3744), and the React Native app (#3752) by @bhuvan-somisetty
  • Currency: IPV6_ENABLED string comparison corrected (#3741) and VERSION getenv guarded against nullptr (#3743) by @bhuvan-somisetty, @ps48
  • Currency switched to BatchProcessor instead of SimpleProcessor (#3563) by @cijothomas
  • flagd-ui: removed unreachable clause in Storage.update_flag/3 (#3721) and fixed an invalid Tailwind class (#3717) by @bhuvan-somisetty
  • flagd-ui: fixed BEAM VM memory issue causing 2.3GB memory consumption (#3022) by @osullivandonal
  • React Native app: use getUniqueIdSync() for device.id instead of getDeviceId() (#3736) by @bhuvan-somisetty
  • Frontend: show quantity-adjusted price in cart (#3521) by @mwimpelberg28
  • Frontend: fixed CartIcon ERR_CONNECTION_REFUSED on initial page load (#3582) by @bhuvan-somisetty
  • Frontend: handle corrupted session data in localStorage (#3313) by @erka
  • Frontend: handle undefined product images across multiple components (#3291) by @julianocosta89
  • Frontend-proxy: removed deprecated Envoy options and restored the service.namespace resource attribute (#3573) by @julianocosta89
  • Recommendation: fixed feature flag lookup (#3695) by @duanduansweetie, fixed recommendationCacheFailure flag (#3260) by @osullivandonal, and use SDK-detected resource for LoggerProvider (#3520) by @mwimpelberg28
  • Accounting: handle duplicate order from Kafka redelivery (#3504) by @mwimpelberg28; run consumer as a hosted service (#3608) by @cijothomas; move DbContext to local scope, fixing a memory leak (#2876) by @puckpuck
  • Payment: fixed a charge span leak (#3276) by @ayoisaiah
  • Checkout: use span.RecordError instead of AddEvent(error) (#2906) by @neptunian; fixed ProtosDir anchoring for IDE compatibility in cart (#3402) by @puckpuck
  • Fraud-detection: fixed dropped gRPC service files in the shadow JAR (#3501) by @aepfli
  • Shipping: multiple correctness/lifecycle fixes — guard span event/attribute behind is_recording(), create meter/counter once via LazyLock, graceful provider shutdown, correct event-name syntax, OnceLock for Resource to avoid redundant detector runs, semantic-convention-style event names, stdout log layer, and host resource detector added (#3544, #3543, #3542, #3560, #3565, #3569, #3572, #3581) by @cijothomas
  • .NET: custom event names aligned with OTel naming guidance (#3571) by @cijothomas
  • Collector: fixed otelcol.signal scope attribute conflict in the logs pipeline (#3321) by @ps48; checkout and product-catalog health telemetry filtered out of traces (#3612) by @cijothomas
  • flagd: fixed OTel exporter configuration (#3667) by @julianocosta89; package swapped to fix a broken dependency (#3247) by @askpt
  • docker-compose.minimal.yml fixed to actually run (#3004) by @joshuali925
  • make: SERVICE= alias fixed for build, restart, and redeploy targets (#3422) by @ps48
  • JVM heap size updated for ad and fraud-detection (#3105) by @osullivandonal
  • Feature flags disabled by default (#3425) by @julianocosta89
  • Privacy: avoid logging credit card data in payment (#3184) and remove recipient email from email telemetry (#3185) by @niwoerner

🙏 Thanks to all our contributors

This release was made possible by the following contributors:

@julianocosta89, @puckpuck, @Kielek, @neptunian, @abruneau, @Vunovati, @svrnm, @osullivandonal, @joshuali925, @dusannavratilsolarwinds, @ps48, @codeboten, @cyrille-leclerc, @askpt, @danielgblanco, @Red-GV, @bachgarash, @chalin, @tolzhabayev, @erka, @mhausenblas, @jpmunz, @martinjt, @cijothomas, @dpacheconr, @fali007, @mwimpelberg28, @ayoisaiah, @niwoerner, @aepfli, @florianl, @duanduansweetie, @ryanfaircloth, @bhuvan-somisetty, @martincostello, @rogercoll, @fbourgey, @tlee768

Full Changelog: 2.2.0...3.0.0