Best practices
Batching, resource attributes, cardinality and security for reliable OpenTelemetry ingestion into VerOps.
Always set identity attributes
Set service.name everywhere, and host.name / container.name on infrastructure metrics — ideally via resourcedetection, docker_stats, kubeletstats rather than by hand. Missing identity is the #1 reason data ingests but doesn't appear as an entity.
Batch, and cap batch size
Use the batch processor and set send_batch_max_size: 8192. The edge rejects oversized request bodies with 413; a bounded batch keeps every request comfortably under the limit. Enable compression: gzip on the exporter.
Prefer a Collector for fleets
Send apps to a local Collector and let it forward to VerOps. You get one place for batching, retries, resource detection and key management — and your app config stays trivial (OTEL_EXPORTER_OTLP_ENDPOINT only).
Mind metric cardinality
Avoid high-cardinality labels (request ids, raw URLs, user ids) on metrics — they explode series counts and cost. Keep those on traces/logs, where per-event detail belongs.
Handle the key like a secret
Inject the key via environment (Authorization: "Bearer ${env:VEROPS_API_KEY}") rather than committing it to config. Use separate keys per environment/site so you can rotate or revoke one without touching the others. Revoke unused keys in Settings → API Keys.
Use resource attributes over pipeline hacks
Attach environment and ownership context as resource attributes — deployment.environment, service.namespace — so they're available for filtering across every signal, instead of encoding them into names.