OpenTelemetry
OpenTelemetry-native ingestion and vendor-neutral telemetry for AutoObserve.
When should I use this?
- You already run OpenTelemetry and want AutoObserve to consume metrics, logs, and traces.
- You need vendor-neutral ingestion with consistent resource identity across signals.
- You are evaluating AutoObserve alongside an existing observability backend.
Requirements
- OpenTelemetry Collector or SDK export path you can modifyRequired
- AUTOOBSERVE_OTLP_ENDPOINT and API credentialsRequired
- Aligned service.name, service.version, and Kubernetes attributesRequired
- Existing Prometheus, Grafana, or Jaeger backend (optional coexistence)Optional
Steps
1. Add the AutoObserve exporter
Add an AutoObserve exporter to your OpenTelemetry Collector (or SDK export path):
# Add to your OpenTelemetry Collector exporters:
exporters:
otlp/autoobserve:
endpoint: ${AUTOOBSERVE_OTLP_ENDPOINT}
headers:
authorization: ${AUTOOBSERVE_API_KEY}
service:
pipelines:
traces:
exporters: [otlp/autoobserve]
metrics:
exporters: [otlp/autoobserve]
logs:
exporters: [otlp/autoobserve]
Store endpoint and credentials in environment variables or your secret manager — do not commit API keys to source control.
Use the Quick Start stepper for the interactive verification checklist.
2. Keep your collector topology
Keep your existing Collector / Gateway deployment. AutoObserve is designed to subscribe to the pipelines you already operate.
Fork export from the Collector you already run:
Applications → OpenTelemetry SDK → Collector
├─ Existing backend (Prometheus / Loki / Tempo / …)
└─ AutoObserve
You do not need to remove your current observability backend to evaluate AutoObserve. See Architecture on the OpenTelemetry page for Kubernetes and greenfield paths.
3. Align resource identity
Correlation starts with consistent identity — align these across metrics, logs, and traces:
| Attribute | Purpose |
|---|---|
service.name | Canonical service identity |
service.version | Tie evidence to deploys |
deployment.environment | Separate prod from staging |
k8s.namespace.name | Runtime scope |
k8s.pod.name | Pod-level context |
k8s.deployment.name | Workload identity |
Incomplete identity reduces correlation confidence. See Identity on the OpenTelemetry page for the canonical service model and GOOD vs PARTIAL examples.
4. Verify signals and open a service
- Restart or reload the Collector pipeline after applying the exporter.
- Confirm metrics, logs, and traces arrive with expected resource attributes.
- Open a known service — for example
checkout-api— in Observability.
Product overview: How telemetry becomes production evidence — architecture, identity, quality, and quick start on the marketing page.
Engineering paper: OpenTelemetry gives you telemetry, not understanding — why standardizing collection is not the same as production understanding.
Did it work?
- Metrics receiving
- Logs receiving
- Traces receiving (all pipelines configured)
- Known service visible in Observability
Troubleshooting
Problem
Symptoms
- Metrics and logs visible for the service
- Trace pipeline empty or absent in verification
Likely causes
- Trace pipeline exporters omit AutoObserve
- Sampling drops all traces before export
Resolution
Verify fix
Problem
Symptoms
- Same service appears under different names
- Kubernetes context missing from some signals
Likely causes
- Inconsistent resource.attributes across pipelines
- Missing service.name or k8s.deployment.name
Resolution
Verify fix
Problem
Symptoms
- Collector process healthy
- AutoObserve shows no signals for expected services
Likely causes
- Pipeline service section missing receiver → processor → exporter mapping
- Wrong endpoint or credentials
Resolution
Verify fix
Problem
Symptoms
- Verification checklist items remain unchecked
- No services discovered
Likely causes
- Collector not restarted after exporter change
- Network or auth failure to OTLP endpoint
Resolution
Verify fix