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

VariableDescriptionDefault
OTEL_SERVICE_NAMEService name for all telemetry signalsmellea
OTEL_EXPORTER_OTLP_ENDPOINTOTLP endpoint for all telemetry signalsnone

Tracing variables

VariableDescriptionDefault
MELLEA_TRACE_APPLICATIONEnable application-level tracingfalse
MELLEA_TRACE_BACKENDEnable backend-level tracingfalse
MELLEA_TRACE_CONSOLEPrint traces to console (debugging)false

Metrics variables

VariableDescriptionDefault
MELLEA_METRICS_ENABLEDEnable metrics collectionfalse
MELLEA_METRICS_CONSOLEPrint metrics to console (debugging)false
MELLEA_METRICS_OTLPEnable OTLP metrics exporterfalse
OTEL_EXPORTER_OTLP_METRICS_ENDPOINTMetrics-specific OTLP endpoint (overrides general)none
MELLEA_METRICS_PROMETHEUSEnable Prometheus metric readerfalse
OTEL_METRIC_EXPORT_INTERVALExport interval in milliseconds60000

Logging variables

VariableDescriptionDefault
MELLEA_LOGS_OTLPEnable OTLP logs exporterfalse
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTLogs-specific OTLP endpoint (overrides general)none

Quick start

Enable tracing and metrics with console output to verify everything works:
export MELLEA_TRACE_APPLICATION=true
export MELLEA_TRACE_BACKEND=true
export MELLEA_TRACE_CONSOLE=true
export MELLEA_METRICS_ENABLED=true
export MELLEA_METRICS_CONSOLE=true
python your_script.py
Traces and metrics print to stdout. For production use, replace the console exporters with an OTLP endpoint:
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_SERVICE_NAME=my-mellea-app

Checking telemetry status programmatically

from mellea.telemetry import (
    is_application_tracing_enabled,
    is_backend_tracing_enabled,
    is_metrics_enabled,
)

print(f"Application tracing: {is_application_tracing_enabled()}")
print(f"Backend tracing:     {is_backend_tracing_enabled()}")
print(f"Metrics:             {is_metrics_enabled()}")

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:
session_context          (mellea.application)
├── aact                 (mellea.application)
│   ├── chat             (mellea.backend) [gen_ai.system=ollama]
│   └── requirement_validation  (mellea.application)
└── aact                 (mellea.application)
    └── chat             (mellea.backend) [gen_ai.system=openai]
See Tracing for span attributes, exporter configuration (Jaeger, Grafana Tempo, etc.), and debugging guidance.

Metrics

Mellea automatically tracks token consumption across all backends using OpenTelemetry counters (mellea.llm.tokens.input and mellea.llm.tokens.output). No code changes are required — the TokenMetricsPlugin records metrics via the plugin hook system after each LLM call completes. 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 token usage details, backend support matrix, exporter setup, custom instruments, and troubleshooting.

Logging

Mellea uses a color-coded console logger (FancyLogger) 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 — token usage metrics, exporters, and custom instruments.
  • Logging — console logging and OTLP log export.
  • Evaluate with LLM-as-a-Judge — automated quality evaluation correlated with trace data.