Expert guidance for configuring and deploying the OpenTelemetry Collector. Use when setting up a Collector pipeline, configuring receivers, exporters, or processors, deploying a Collector to Kubernetes or Docker, or forwarding telemetry to Dash0. Triggers on requests involving collector, pipeline, OTLP receiver, exporter, or Dash0 collector setup.
95
93%
Does it follow best practices?
Impact
96%
1.39xAverage score across 12 eval scenarios
Advisory
Suggest reviewing before use
Platform engineering team at ShopStream runs dozens of microservices behind a REST API gateway. Their observability costs have tripled over the past quarter because spans emitted by the services include raw customer order IDs, user UUIDs, and product SKU numbers directly in the url.path and http.route attributes — for example paths like /orders/4b2e1a90-3c4d-4e5f-8a1b-2c3d4e5f6a7b/items/12345. Each unique path segment creates a distinct time series, overwhelming their backend's capacity.
A secondary problem: some services emit spans with hundreds of attributes and string values that can be several kilobytes each, ballooning per-span storage. The team also wants to ensure that every span carries a deployment.environment.name attribute at the span level (not just at the resource level) so their dashboards can filter by environment without resource-level joins.
The team needs a Collector configuration that normalizes paths, caps attribute counts, truncates long values, correctly adds static environment metadata, and propagates that metadata to individual spans.
Produce a complete OpenTelemetry Collector configuration file named collector-config.yaml that covers:
service section wiring a traces pipeline from an otlp receiver through the processors to a debug exporterAlso produce a design-notes.md file that briefly explains the processor choices made for each requirement (which processor type was used and why).