Skip to content

Grafana Dashboards Guide

Overview

DSTA provides pre-configured Grafana dashboards for comprehensive monitoring.

Access

  • URL: http://localhost:3000
  • Default credentials: admin/admin
  • Data source: Prometheus (auto-configured)

Available Dashboards

1. System Metrics Dashboard

Metrics Displayed: - CPU usage (per container) - Memory usage and limits - Disk I/O and space - Network traffic - Container status

Panels: - CPU Usage Over Time - Memory Usage vs Limits - Disk Space Available - Network I/O - Container Health Status

2. Application Metrics Dashboard

Metrics Displayed: - HTTP request rate - Response times (p50, p95, p99) - Error rates - Request duration histogram - Active requests

Panels: - Request Rate by Endpoint - Response Time Percentiles - Error Rate by Status Code - Request Duration Distribution - Top Slow Endpoints

3. Trading Metrics Dashboard

Metrics Displayed: - Total trades executed - Trading volume (USD) - P&L by strategy and symbol - Order execution time - Open positions - Win rate

Panels: - Trades Per Minute - Cumulative P&L - P&L by Strategy - Order Execution Latency - Position Distribution - Trade Success Rate

4. Database Performance Dashboard

Metrics Displayed: - Query execution time - Active connections - Query throughput - Slow queries - Cache hit rate

Panels: - Query Duration Percentiles - Queries Per Second - Active DB Connections - Slowest Queries - Database Size Growth

Dashboard Creation

Using Provisioning

Dashboards are auto-loaded from:

grafana/
├── provisioning/
│   ├── datasources/
│   │   └── prometheus.yml
│   └── dashboards/
│       └── dashboard.yml
└── dashboards/
    ├── system_metrics.json
    ├── application_metrics.json
    ├── trading_metrics.json
    └── database_metrics.json

Manual Import

  1. Open Grafana (http://localhost:3000)
  2. Click +Import
  3. Upload JSON file from grafana/dashboards/
  4. Select Prometheus data source
  5. Click Import

Common Queries

HTTP Metrics

# Request rate
rate(http_requests_total[5m])

# Average response time
rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_count[5m])

# Error rate
rate(http_requests_total{status=~"5.."}[5m])

Trading Metrics

# Total trades
increase(trades_total[1h])

# P&L trend
trading_pnl

# Average order execution time
rate(order_execution_duration_seconds_sum[5m]) / rate(order_execution_duration_seconds_count[5m])

Database Metrics

# Query duration 95th percentile
histogram_quantile(0.95, rate(db_query_duration_seconds_bucket[5m]))

# Active connections
db_connections_active

# Cache hit rate
rate(cache_hits_total[5m]) / (rate(cache_hits_total[5m]) + rate(cache_misses_total[5m]))

Alerts Configuration

Grafana can display Prometheus alerts:

  1. Go to AlertingAlert Rules
  2. View active alerts
  3. Configure notification channels
  4. Set up silences

Customization

Adding New Panel

  1. Click Add Panel
  2. Select visualization type
  3. Write PromQL query
  4. Configure display options
  5. Save dashboard

Variables

Create dashboard variables for filtering: - $exchange: Exchange selection - $symbol: Trading pair - $interval: Time interval - $strategy: Strategy name

Example query with variables:

rate(trades_total{exchange="$exchange", symbol="$symbol"}[5m])

Best Practices

  1. Use time-based aggregations for long time ranges
  2. Set appropriate refresh intervals (5s for real-time, 30s for general)
  3. Use template variables for dynamic filtering
  4. Group related metrics in same dashboard
  5. Add annotations for deployments and events

Troubleshooting

Dashboard not loading

Check Prometheus data source: 1. Go to ConfigurationData Sources 2. Click on Prometheus 3. Click Test button 4. Should show "Data source is working"

No data displayed

Verify metrics are being scraped:

# Check Prometheus targets
curl http://localhost:9090/api/v1/targets

# Check specific metric
curl http://localhost:9090/api/v1/query?query=up

Slow dashboard

  • Reduce time range
  • Increase step interval
  • Use recording rules
  • Optimize queries

Integration

Deployment Annotations

Add deployment markers:

# Using Grafana API
curl -X POST http://admin:admin@localhost:3000/api/annotations \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Deployment v1.2.3",
    "tags": ["deployment"],
    "time": '$(date +%s)'000'
  }'

Add links to: - Application logs - Code repository - Documentation - Alert manager

Export/Import

Export Dashboard

  1. Click dashboard settings (gear icon)
  2. Select JSON Model
  3. Copy JSON
  4. Save to file

Import Dashboard

  1. Click +Import
  2. Paste JSON or upload file
  3. Select data source
  4. Click Import

Version History

  • 1.0.0 (2025-01-27): Initial Grafana setup