ri.zaldi.blog

Chroma -> OpenTelemetry Collector -> Honeycomb

8 Aug 2026 - 20:00

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.

Screenshot of Honeycomb dashboard showing data from chroma data set

Screenshot of Honeycomb dashboard showing data from chroma metrics data set