Prerequisites
- OpenTelemetry Collector Contrib (
otelcol-contrib), as a binary, container, or Kubernetes deployment. The session grouping step below uses thetransformprocessor, which ships in Contrib. - A HoneyHive ingestion API key from Settings → Project → API Keys, on the Ingestion tab
- An application that exports OTLP traces, either through an OpenTelemetry SDK or a framework with built-in OTLP export
Provider host and OTLP traces URL
HoneyHive routes OTLP ingestion through your deployment’s API host. Replace<provider-host> with the hostname shown in your HoneyHive dashboard or API settings:
Configure the collector
1
Create a HoneyHive ingestion API key
In HoneyHive, open Settings → Project → API Keys, click Create API Key on the Ingestion tab, and copy the key. The key determines which HoneyHive project receives traces, and an ingestion key can do nothing else.
2
Set the HoneyHive environment variables
Store the endpoint and key in the collector’s environment rather than in the config file:In Kubernetes, load
HH_INGESTION_API_KEY from a Secret.3
Write the collector config
Save this as Set
config.yaml. It accepts OTLP over gRPC and HTTP, groups each trace into one HoneyHive session, batches spans, and exports them to HoneyHive over OTLP/HTTP:config.yaml
traces_endpoint to the full HoneyHive URL. The exporter’s generic endpoint setting appends /v1/traces to whatever you pass, so it does not produce the /opentelemetry/v1/traces path on its own.4
Start the collector
With Docker:This page was tested with
0.161.0. Older releases that reject the otlp_http exporter name use otlphttp instead. The collector logs Everything is ready. Begin running and processing data. once both receivers are listening.5
Point your application at the collector
Applications that use the standard OpenTelemetry environment variables only need the collector address. HoneyHive credentials stay in the collector.
With
OTEL_EXPORTER_OTLP_ENDPOINT, SDKs append /v1/traces for HTTP, which matches the collector’s HTTP receiver path. Remove any OTEL_EXPORTER_OTLP_HEADERS value that carried a HoneyHive key, since the collector adds the Authorization header.Group spans into sessions
HoneyHive groups events into sessions bysession_id. Raw OTLP spans usually do not carry one, so spans from the same trace can land in separate sessions.
The transform/honeyhive_session processor copies each span’s trace ID into the honeyhive.session_id attribute, so every span in a trace shares one session and keeps its parent-child hierarchy. HoneyHive stores the session under a UUID derived from that value, so search for sessions by event or span name rather than by trace ID. The where clause leaves spans that already set honeyhive.session_id, such as spans from the HoneyHive SDK, unchanged. Remove the processor from the pipeline if you set session IDs in your application.
Verify traces in HoneyHive
Send a request through your application, then open the Traces tab for the project tied to your ingestion key. Events from the collector havesource set to otlp, and the root span and its children appear in one session.
Spans that follow the OpenTelemetry GenAI semantic conventions, such as gen_ai.request.model, gen_ai.input.messages, and gen_ai.usage.input_tokens, appear as model events with the prompt, completion, model, and token counts filled in. See the semantic conventions reference for every attribute HoneyHive maps.
If traces do not appear:
- Confirm
HH_OTLP_TRACES_ENDPOINTuses your HoneyHive API host and ends with/opentelemetry/v1/traces. - Confirm the exporter header is exactly
Authorization: Bearer <HH_INGESTION_API_KEY>and the variable is set in the collector’s environment. A401in the collector logs means the key is missing or invalid. - Confirm the ingestion key was created in the HoneyHive project where you expect the traces to appear.
- Check that the collector can reach the HoneyHive API host over outbound HTTPS.
- If the collector fails to start with an unknown exporter type, your release predates
otlp_http. Rename the exporter tootlphttp. Do not use theotlpexporter, which sends gRPC. - To confirm spans reach the collector, add the
debugexporter to the traces pipeline and check the collector logs for span counts.
Configuration reference
Related
OpenTelemetry concepts
Learn how HoneyHive stores OTLP traces and AI span attributes
Distributed tracing
Connect spans across services into one trace
Semantic conventions
See which span attributes HoneyHive maps to inputs, outputs, and metadata
API keys
Create and manage project-bound ingestion keys