Best practices

Batching, resource attributes, cardinality and security for reliable OpenTelemetry ingestion into VerOps.

opentelemetrybest-practicesbatchingcardinalitysecurity

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.