Skip to content

Prometheus Metrics Guide

Overview

DSTA exposes comprehensive Prometheus metrics for monitoring system health, trading performance, and business metrics.

Metrics Endpoint

GET /metrics

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