The OpenTelemetry Collector offers a vendor-agnostic way to send observability data to Honeycomb. Applications instrumented with OpenTelemetry SDKs or with Jaeger, Zipkin or OpenCensus can use the OpenTelemetry Collector to send trace data to Honeycomb as events.
The Collector consists of three components: receivers, processors and exporters, which are then used to construct telemetry pipelines. To send trace data to Honeycomb, you must configure an OTLP exporter, passing in your Honeycomb API Key and dataset as headers:
exporters: otlp: endpoint: "api.honeycomb.io:443" headers: "x-honeycomb-team": "YOUR_API_KEY" "x-honeycomb-dataset": "YOUR_DATASET"
You must then include the OTLP exporter in the traces pipeline:
service: extenions:  pipelines: traces: receivers: [otlp] processors:  exporters: [otlp]
The following is a complete configuration file example for a Collector instance that accepts Jaeger or OpenTelemetry trace data and exports it to Honeycomb:
receivers: jaeger: protocols: thrift_http: endpoint: "0.0.0.0:14268" otlp: protocols: grpc: http: processors: batch: extensions: health_check: pprof: zpages: service: extensions: [health_check,pprof,zpages] pipelines: traces: receivers: [jaeger, otlp] processors: [batch] exporters: [otlp]
See the Collector documentation for more examples.
You can run the Collector in Docker to try it out locally. This is needed when adding instrumentation in development to send events to Honeycomb.
For instance, if your config file is called
otel_collector_config.yaml in the current working directory, the following command will run the Collector with open ports for sending OTLP protocol:
$ docker run \ -p 55680:55680 \ -v $(pwd)/otel_collector_config.yaml:/etc/otel/config.yaml \ otel/opentelemetry-collector-contrib:latest
More details on running the Collector can be found in its documentation.