--- name: devops-opentelemetry description: > OpenTelemetry observability framework for distributed systems. Covers: OTel concepts (traces, metrics, logs, SDK, API, Collector, OTLP), Collector pipeline (receiver, processor, exporter, batch, sampling, tail sampling, attributes), SDK instrumentation (automatic and manual for Java, Python, Node.js, Go, .NET), trace sampling strategies (head-based, tail-based, probabilistic, consistent), multi-backend export (Jaeger, Zipkin, Prometheus, Datadog, Grafana). Do NOT use for: Vendor-specific APM agent configuration without OTel. version: "1.0.0" author: "j4flmao" license: "MIT" compatibility: claude-code: true cursor: true codex: true windsurf: true tags: [devops, opentelemetry, observability, tracing, metrics, phase-5] --- # OpenTelemetry ## Purpose Implement OpenTelemetry for vendor-neutral observability across distributed systems, covering traces, metrics, and logs collection, processing, and export to multiple backends. ## Agent Protocol ### Trigger Exact user phrases: "OpenTelemetry", "OTel", "OTLP", "tracing", "distributed tracing", "OpenTelemetry Collector", "OTel SDK", "auto-instrumentation", "tail sampling", "OTel exporter", "Jaeger", "Zipkin", "context propagation", "span", "trace". ### Input Context Before activating, verify: - Programming language(s) and framework(s) used. - Existing observability backends (Jaeger, Prometheus, Datadog, etc.). - Deployment environment (Kubernetes, VMs, serverless). - Collection, sampling, and export requirements. ### Output Artifact Writes to OTel Collector YAML configuration, SDK initialization code, and deployment manifests. ### Response Format Configuration files and code snippets with OTel SDK imports, no extraneous explanation. ### Completion Criteria This skill is complete when: - [ ] Collector pipeline configured with receivers, processors, exporters. - [ ] SDK initialized in application code (auto or manual instrumentation). - [ ] Sampling strategy configured for appropriate trace volume. - [ ] Multi-backend export configured for redundancy. - [ ] Context propagation verified across service boundaries. ### Max Response Length Direct file write. No response text. ## Quick Start Deploy OTel Collector → Configure receiver (OTLP) → Add batch processor → Configure exporters → Instrument application with SDK → Set sampling → Verify traces flowing. ## Decision Tree: Sampling Strategy - Low-traffic service (< 100 req/s), need full traces → Head-based sampling, 100% rate - High-traffic service, errors + slow traces critical → Tail-based sampling (keep errors, keep slow, probabilistic rest) - Consistent sampling across services (e.g., for SLO calculation) → Consistent probability sampling (consistentProbability) - Cost-sensitive, multi-backend → Head-based probabilistic (10-30%), plus tail for error sample - GDPR/PCI compliance, need PII filtering → Tail-based with attributes processor for redaction before export - Dev environment → 100% head-based sampling ## Core Workflow ### Step 1: Collector Configuration — Full Pipeline ```yaml receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 max_recv_msg_size_mib: 4 http: endpoint: 0.0.0.0:4318 cors: allowed_origins: - http://localhost:3000 filelog: include: [/var/log/app/*.log] start_at: beginning operators: - type: regex_parser regex: '^(?P