👀 Observability

Backend Observability#

Chroma is instrumented with OpenTelemetry hooks for observability.

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:

Command Line

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

Client (SDK) Observability#

See OpenLLMetry Integration.