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¶
- Open Grafana (http://localhost:3000)
- Click + → Import
- Upload JSON file from
grafana/dashboards/ - Select Prometheus data source
- 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:
- Go to Alerting → Alert Rules
- View active alerts
- Configure notification channels
- Set up silences
Customization¶
Adding New Panel¶
- Click Add Panel
- Select visualization type
- Write PromQL query
- Configure display options
- Save dashboard
Variables¶
Create dashboard variables for filtering: - $exchange: Exchange selection - $symbol: Trading pair - $interval: Time interval - $strategy: Strategy name
Example query with variables:
Best Practices¶
- Use time-based aggregations for long time ranges
- Set appropriate refresh intervals (5s for real-time, 30s for general)
- Use template variables for dynamic filtering
- Group related metrics in same dashboard
- Add annotations for deployments and events
Troubleshooting¶
Dashboard not loading¶
Check Prometheus data source: 1. Go to Configuration → Data 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'
}'
External Links¶
Add links to: - Application logs - Code repository - Documentation - Alert manager
Export/Import¶
Export Dashboard¶
- Click dashboard settings (gear icon)
- Select JSON Model
- Copy JSON
- Save to file
Import Dashboard¶
- Click + → Import
- Paste JSON or upload file
- Select data source
- Click Import
Version History¶
- 1.0.0 (2025-01-27): Initial Grafana setup