Chroma -> OpenTelemetry Collector -> Honeycomb
In the previous post, I tried to send Chroma telemetry data directly to Honeycomb. There are a lot of combinations of configuration that I tried but nothing works. Now I will use OpenTelemetry Collector to act as intermediary between Chroma and Honeycomb.
The Setup
I use docker compose for this. The docker-compose.yaml file's content:
services:
otel-collector:
image: otel/opentelemetry-collector-contrib:0.111.0
platform: linux/amd64
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ${PWD}/otel-collector-config.yaml:/etc/otel-collector-config.yaml
networks:
- internal
server:
image: chromadb/chroma
volumes:
- chroma_data:/data
ports:
- "8000:8000"
networks:
- internal
environment:
- CHROMA_OPEN_TELEMETRY__ENDPOINT=http://otel-collector:4317/
- CHROMA_OPEN_TELEMETRY__SERVICE_NAME=chroma
depends_on:
- otel-collector
networks:
internal:
volumes:
chroma_data:
The original source of the file is the docker compose file provided in Chroma docs. The example uses Zipkin. I deleted it since I am going to use Honeycomb.
In the compose file, there is a reference to mount a yaml file, otel-collector-config.yaml, in otel-collector container. This is to configure the OpenTelemetry collector. The content of the file is as below.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
exporters:
debug:
otlphttp:
endpoint: "https://api.honeycomb.io:443"
headers:
"x-honeycomb-team": "secret-honeycomb-api-key"
service:
pipelines:
traces:
receivers: [otlp]
exporters: [otlphttp, debug]
metrics:
receivers: [otlp]
exporters: [otlphttp, debug]
Check if both chroma and OpenTelemetry collector containers run as expected.
docker compose ps
The test
To test that this setup works, change to a new directory and create a new Python virtual environment inside the directory.
python3 -m venv venv
source ./venv/bin/activate
Install chromadb python package.
pip install chromadb
Using Python REPL, use chromadb client to connect to chromadb container.
import chromadb
client = chromadb.HttpClient(host='localhost', port=8000)
The act of connecting to chromadb running inside the container using chromadb Python package will send traces and metrics to Honeycomb.

