Skip to main content

๐Ÿ‘€ Observability

Backend Observabilityโ€‹

Chroma is instrumented with OpenTelemetry hooks for observability.

Telemetry vs Observability

"Telemetry" refers to anonymous product usage statistics we collect. "Observability" refers to metrics, logging, and tracing which can be used by anyone operating a Chroma deployment. Observability features listed on this page are never sent back to Chroma; they are for end-users to better understand how their Chroma deployment is behaving.

Available Observabilityโ€‹

Chroma currently only exports OpenTelemetry traces. Traces allow a Chroma operator to understand how requests flow through the system and quickly identify bottlenecks.

Configurationโ€‹

Tracing is configured with four environment variables:

  • CHROMA_OTEL_COLLECTION_ENDPOINT: where to send observability data. Example: api.honeycomb.com.
  • CHROMA_OTEL_SERVICE_NAME: Service name for OTel traces. Default: chromadb.
  • CHROMA_OTEL_COLLECTION_HEADERS: Headers to use when sending observability data. Often used to send API and app keys.
  • CHROMA_OTEL_GRANULARITY: A value from the OpenTelemetryGranularity enum. Specifies how detailed tracing should be.

Local Observability Stack (๐Ÿณ๐Ÿ‘€๐Ÿ“š)โ€‹

Chroma also comes with a local observability stack. The stack is composed of Chroma Server (the one you know and โค๏ธ), OpenTelemetry Collector, and Zipkin.

To start the stack, run from the root of the repo:

docker compose -f examples/observability/docker-compose.local-observability.yml up --build -d

Once the stack is running, you can access Zipkin at http://localhost:9411

Traces

Traces in Zipkin will start appearing after you make a request to Chroma.

Client (SDK) Observabilityโ€‹

See OpenLLMetry Integration.