Prometheus Metrics Guide¶
Overview¶
DSTA exposes comprehensive Prometheus metrics for monitoring system health, trading performance, and business metrics.
Metrics Endpoint¶
Returns metrics in Prometheus exposition format.
Available Metrics¶
HTTP Metrics¶
http_requests_total- Total HTTP requests (Counter)http_request_duration_seconds- Request latency (Histogram)http_requests_in_progress- Requests being processed (Gauge)
Database Metrics¶
db_query_duration_seconds- Query execution time (Histogram)db_connections_active- Active connections (Gauge)db_queries_total- Total queries (Counter)
Trading Metrics¶
trades_total- Total trades executed (Counter)orders_total- Total orders placed (Counter)positions_open- Open positions (Gauge)trading_pnl- Profit/Loss by strategy (Gauge)trading_volume_usd- Trading volume in USD (Counter)order_execution_duration_seconds- Order execution time (Histogram)
Backtesting Metrics¶
backtests_total- Total backtests run (Counter)backtest_duration_seconds- Backtest execution time (Histogram)backtest_trades- Number of trades in backtest (Histogram)backtest_final_pnl- Final P&L from backtest (Gauge)backtest_sharpe_ratio- Sharpe ratio (Gauge)
External API Metrics¶
api_calls_total- Total API calls (Counter)api_call_duration_seconds- API call latency (Histogram)api_rate_limit_remaining- Remaining rate limit (Gauge)api_errors_total- Total API errors (Counter)
Cache Metrics¶
cache_hits_total- Cache hits (Counter)cache_misses_total- Cache misses (Counter)cache_size_bytes- Cache size (Gauge)
Celery Metrics¶
celery_tasks_total- Total tasks (Counter)celery_task_duration_seconds- Task execution time (Histogram)celery_queue_length- Queue length (Gauge)
Usage Examples¶
Instrumenting Code¶
from infrastructure.metrics import (
track_api_call,
track_backtest_duration,
MetricsCollector
)
# Track API calls
with track_api_call('binance', 'get_ticker'):
ticker = client.get_ticker(symbol='BTCUSDT')
# Track backtest
with track_backtest_duration('momentum'):
results = run_backtest(strategy)
# Record trade
MetricsCollector.record_trade(
exchange='binance',
symbol='BTCUSDT',
side='buy',
status='filled',
volume_usd=1000.0
)
Django URL Configuration¶
# urls.py
from infrastructure.views import metrics_view
urlpatterns = [
path('metrics', metrics_view, name='metrics'),
]
Prometheus Configuration¶
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'dsta-api'
static_configs:
- targets: ['api-server:8000']
metrics_path: '/metrics'
Grafana Integration¶
Import dashboards from grafana/dashboards/ directory.
Alerting Rules¶
groups:
- name: trading_alerts
rules:
- alert: HighErrorRate
expr: rate(api_errors_total[5m]) > 10
for: 5m
labels:
severity: warning
annotations:
summary: "High API error rate"
Version History¶
- 1.0.0 (2025-01-27): Initial metrics implementation