Description:
Create the foundational metrics module using OpenTelemetry Metrics API with support for counters, histograms, and gauges.
Detailed Requirements:
- Create
mellea/telemetry/metrics.py module with:
- Lazy initialization of MeterProvider (similar to tracing pattern)
- Environment-based configuration (
MELLEA_METRICS_ENABLED)
- Zero overhead when disabled (no-op instruments)
- Named meter:
mellea.metrics
- Define base instrument creation helpers:
create_counter(name, description, unit)
create_histogram(name, description, unit, boundaries)
create_up_down_counter(name, description, unit)
- Add dependencies to optional
[telemetry] extra:
opentelemetry-sdk (already present)
- Ensure metrics API available
Files to Create:
mellea/telemetry/metrics.py
Files to Modify:
mellea/telemetry/__init__.py - Export metrics functions
pyproject.toml - Verify metrics dependencies in telemetry extra
Environment Variables:
| Variable |
Default |
Description |
MELLEA_METRICS_ENABLED |
false |
Enable metrics collection |
MELLEA_METRICS_CONSOLE |
false |
Print metrics to console (debug) |
Acceptance Criteria:
Description:
Create the foundational metrics module using OpenTelemetry Metrics API with support for counters, histograms, and gauges.
Detailed Requirements:
mellea/telemetry/metrics.pymodule with:MELLEA_METRICS_ENABLED)mellea.metricscreate_counter(name, description, unit)create_histogram(name, description, unit, boundaries)create_up_down_counter(name, description, unit)[telemetry]extra:opentelemetry-sdk(already present)Files to Create:
mellea/telemetry/metrics.pyFiles to Modify:
mellea/telemetry/__init__.py- Export metrics functionspyproject.toml- Verify metrics dependencies in telemetry extraEnvironment Variables:
MELLEA_METRICS_ENABLEDfalseMELLEA_METRICS_CONSOLEfalseAcceptance Criteria: