Skip to main content
Prerequisites: Quick Start complete, pip install "mellea[telemetry]", Ollama running locally. Mellea provides built-in OpenTelemetry instrumentation across three independent pillars — tracing, metrics, and logging. Each can be enabled separately. All telemetry is opt-in: if the [telemetry] extra is not installed, every telemetry call is a silent no-op.
Note: OpenTelemetry is an optional dependency. Mellea works normally without it. Install with pip install "mellea[telemetry]" or uv pip install "mellea[telemetry]".

Configuration

All telemetry is configured via environment variables:

General

Tracing variables

Metrics variables

Logging variables

Quick start

Enable tracing and metrics with console output to verify everything works:
Traces and metrics print to stdout. For production use, replace the console exporters with an OTLP endpoint:

Checking telemetry status programmatically

Tracing

Mellea has two independent trace scopes:
  • mellea.application — user-facing operations: session lifecycle, @generative calls, instruct() and act(), sampling strategies, and requirement validation.
  • mellea.backend — LLM backend interactions following the OpenTelemetry Gen-AI Semantic Conventions. Records model calls, token usage, finish reasons, and API latency.
Enable both for full observability, or pick one depending on what you need to debug. When both scopes are active, backend spans nest inside application spans:
See Tracing for span attributes, exporter configuration (Jaeger, Grafana Tempo, etc.), and debugging guidance.

Metrics

Mellea automatically records the following metrics across all backends using OpenTelemetry. No code changes are required:
  • Token countersmellea.llm.tokens.input and mellea.llm.tokens.output after each LLM call.
  • Latency histogramsmellea.llm.request.duration (every request) and mellea.llm.ttfb (streaming requests only).
  • Error countermellea.llm.errors on each failed backend call, classified by semantic error type.
  • Cost countermellea.llm.cost.usd estimated request cost in USD, when pricing data is available for the model.
  • Sampling countersmellea.sampling.attempts, mellea.sampling.successes, and mellea.sampling.failures per strategy.
  • Requirement countersmellea.requirement.checks and mellea.requirement.failures per requirement type.
  • Tool countermellea.tool.calls by tool name and status.
The metrics API also exposes create_counter, create_histogram, and create_up_down_counter for instrumenting your own application code. Mellea supports three exporters that can run simultaneously:
  • Console — print to stdout for debugging
  • OTLP — export to production observability platforms
  • Prometheus — register with prometheus_client for scraping
See Metrics for the full list of metrics, backend support matrix, exporter setup, custom instruments, and troubleshooting.

Logging

Mellea uses a color-coded console logger (MelleaLogger) by default. When the [telemetry] extra is installed and MELLEA_LOGS_OTLP=true is set, Mellea also exports logs to an OTLP collector alongside existing console output. See Logging for console logging configuration, OTLP log export setup, and programmatic access via get_otlp_log_handler().
Full example: docs/examples/telemetry/telemetry_example.py

See also:
  • Tracing — distributed traces with Gen-AI semantic conventions.
  • Metrics — metrics, exporters, and custom instruments.
  • Logging — console logging and OTLP log export.