Overview
Comprehensive Prometheus metrics endpoint for production monitoring and observability. Enables real-time tracking of HTTP requests, task execution, errors, and system performance. Version: 2026.3.5Date: January 22, 2026
Author: Raahul Dutta
Breaking Changes
None - All changes are additive and backward compatible.New Features
📊 Prometheus Metrics Endpoint (/metrics)
- Full Prometheus text format support for scraping
- Automatic metrics collection via middleware
- Thread-safe metrics aggregation
- Zero external dependencies (pure Python implementation)
📈 HTTP Request Metrics
- Request counters by method, endpoint, and status code
- Request latency histogram (buckets: 0.1s, 0.5s, 1.0s, +Inf)
- Request/response body size tracking
- Concurrent requests gauge (in-flight monitoring)
⏱️ Task Performance Metrics
- Task duration histogram (buckets: 1s, 5s, 10s, 30s, 60s, +Inf)
- Active tasks gauge per agent
- Completed tasks counter by status (success, failed, canceled)
- Agent-specific task tracking
🚨 Error Tracking
- Error counters by agent and error type
- Support for timeout, validation, and execution errors
- Extensible error categorization
Metrics Exposed
Counter Metrics
| Metric | Labels |
|---|---|
http_requests_total | method, endpoint, status |
agent_tasks_completed_total | agent_id, status |
agent_errors_total | agent_id, error_type |
Histogram Metrics
| Metric | Buckets |
|---|---|
http_request_duration_seconds | 0.1s, 0.5s, 1.0s, +Inf |
task_duration_seconds | 1s, 5s, 10s, 30s, 60s, +Inf |
Gauge Metrics
| Metric | Labels |
|---|---|
agent_tasks_active | agent_id |
http_requests_in_flight | - |
Summary Metrics
http_request_size_byteshttp_response_size_bytes
Improvements
🏗️ Clean Architecture
- No circular dependencies (removed TYPE_CHECKING pattern)
- Clear separation of concerns:
metrics.py- Core metrics collectionmiddleware/metrics.py- HTTP request trackingendpoints/metrics.py- Prometheus endpoint + agent metrics
- Proper dependency flow without circular imports
🔧 Middleware Integration
- MetricsMiddleware automatically tracks all HTTP requests
- Positioned last in middleware stack to capture complete request lifecycle
- Automatic request/response size calculation
- In-flight request tracking with proper cleanup
📖 Documentation
- Complete monitoring guide (
docs/monitoring.md) - Prometheus configuration example (
examples/prometheus.yml) - Grafana dashboard recommendations
- Example PromQL queries for common use cases
Technical Details
Files Changed: 9 files- Added: 6 files (metrics module, middleware, endpoint, tests, docs)
- Modified: 3 files (applications.py, init files, examples)
- Total: +591 insertions, -24 deletions
bindu/server/metrics.py(284 lines)bindu/server/middleware/metrics.py(90 lines)bindu/server/endpoints/metrics.py(74 lines)tests/unit/test_metrics.py(106 lines)docs/monitoring.md(comprehensive guide)examples/prometheus.yml(configuration template)
Testing
6 new unit tests covering HTTP request recording, histogram calculations, agent task metrics, thread-safe operations, and Prometheus text format generation
All 527 tests passing
No breaking changes to existing functionality
Usage Examples
Access Metrics Endpoint
Configure Prometheus (prometheus.yml)
Example PromQL Queries
Integration
Prometheus Setup
- Install Prometheus:
brew install prometheus - Configure scraping (see
examples/prometheus.yml) - Start Prometheus:
prometheus --config.file=prometheus.yml - Access UI: http://localhost:9090
Grafana Dashboard
- Add Prometheus as data source
- Create panels with PromQL queries
- Recommended panels:
- Request Rate (line graph)
- Error Rate (line graph)
- Latency Heatmap (histogram)
- Active Tasks (gauge)
- Task Completion (stacked area)
Migration Guide
For existing deployments:- No action required - metrics are automatically enabled
- Access metrics at
/metricsendpoint - Configure Prometheus to scrape your agent
- Optional: Set up Grafana dashboards for visualization
Commit Details
Commit:625c0f02aa37bbce7be1144d6fb06f8029ec0801
Message: feat: add Prometheus metrics endpoint and middleware for monitoring
Changes:
- Add metrics_endpoint to endpoints module and register at /metrics route
- Implement MetricsMiddleware to capture request metrics
- Position metrics middleware last in stack to capture all requests
- Add logging for metrics middleware initialization
- Update examples formatting and premium advisor code style
- Create comprehensive monitoring documentation
- Add Prometheus configuration examples
- Implement thread-safe metrics collection
- Add unit tests for all metrics functionality