- Added `psutil` dependency for system performance metrics. - Implemented a new layout in `dashboard/layouts/system_health.py` using Mantine components for real-time monitoring of data collection services, database health, Redis status, and system performance. - Enhanced callbacks in `dashboard/callbacks/system_health.py` for detailed status updates and error handling. - Introduced quick status indicators for data collection, database, Redis, and performance metrics with auto-refresh functionality. - Created modals for viewing detailed data collection information and service logs. - Updated documentation to reflect the new features and usage guidelines.
6.6 KiB
6.6 KiB
Task 3.5 - Market Data Monitoring Dashboard
Status: ✅ COMPLETED
Overview
Implemented a comprehensive market data monitoring dashboard with real-time data feed status monitoring, database health tracking, Redis monitoring, and system performance metrics.
Implementation Details
Key Features Implemented
-
Real-time Status Overview
- Quick status cards for Data Collection, Database, Redis, and Performance
- Color-coded badges (green/yellow/red) for instant status recognition
- Auto-refreshing status indicators every 30 seconds
-
Data Collection Service Monitoring
- Service running status detection
- Data collection metrics (candles, tickers collected)
- Data freshness indicators
- Service control buttons (refresh, view details, view logs)
-
Individual Collectors Health
- Placeholder for collector health monitoring
- Ready for integration with data collection service health API
- Instructions for starting monitoring
-
Database Health Monitoring
- Connection status verification
- PostgreSQL version and connection count
- Database statistics (table sizes, recent activity)
- Performance metrics
-
Redis Status Monitoring
- Connection verification
- Redis server information
- Memory usage and client statistics
- Uptime tracking
-
System Performance Metrics
- CPU usage with color-coded warnings
- Memory utilization
- Disk usage monitoring
- Network I/O statistics
-
Interactive Features
- Data collection details modal
- Service logs viewer modal
- Refresh controls for real-time updates
UI Framework
- Mantine Components: Used Mantine UI library for consistency with existing dashboard
- Responsive Layout: Grid-based layout for optimal viewing
- Modern Design: Cards, badges, alerts, and modals for professional appearance
Files Modified/Created
-
dashboard/layouts/system_health.py- Complete rewrite using Mantine components
- Comprehensive layout with monitoring sections
- Modal dialogs for detailed views
-
dashboard/callbacks/system_health.py- Enhanced callbacks with comprehensive monitoring
- Real-time status updates
- Error handling and graceful degradation
- Integration with database and Redis managers
Technical Implementation
Real-time Monitoring Architecture
# Status Update Flow
Interval Component (30s) → Callbacks → Status Checkers → UI Updates
Status Checking Functions
_get_data_collection_quick_status()- Service running detection_get_database_quick_status()- Database connectivity_get_redis_quick_status()- Redis connectivity_get_performance_quick_status()- System metrics
Detailed Monitoring Functions
_get_data_collection_service_status()- Service details_get_data_collection_metrics()- Collection statistics_get_database_status()&_get_database_statistics()- DB health_get_redis_status()&_get_redis_statistics()- Redis health_get_system_performance_metrics()- System performance
Error Handling
- Graceful degradation when services are unavailable
- User-friendly error messages with troubleshooting hints
- Fallback status indicators for unknown states
Integration Points
Database Integration
- Uses
DatabaseManagerfor connection testing - Queries
market_datatable for collection statistics - Monitors database performance metrics
Redis Integration
- Uses
RedisManagerfor connection verification - Retrieves Redis server information and statistics
- Monitors memory usage and client connections
System Integration
- Uses
psutilfor system performance monitoring - Process detection for data collection service
- Resource utilization tracking
Usage
Dashboard Access
- Navigate to "⚙️ System Health" tab in the main dashboard
- View real-time status cards at the top
- Explore detailed monitoring sections below
Service Controls
- Refresh Status: Manually refresh data collection status
- View Details: Open modal with comprehensive service information
- View Logs: Access service logs in scrollable modal
Status Indicators
- 🟢 Green: Healthy/Connected/Good performance
- 🟡 Yellow: Warning/Checking/Moderate usage
- 🔴 Red: Error/Disconnected/High usage
- ❓ Gray: Unknown status
Future Enhancements
Planned Improvements (Section 3.7)
- Real-time Updates via Redis: Replace polling with Redis pub/sub
- Advanced Metrics: Historical performance trends
- Alerting System: Notifications for critical issues
- Service Management: Start/stop controls for data collection
Integration with Data Collection Service
- Real-time collector health reporting
- Performance metrics streaming
- Service configuration management
- Log aggregation and filtering
Testing
Manual Testing
- Service Detection: Start/stop data collection service to verify detection
- Database Connectivity: Test with database running/stopped
- Redis Connectivity: Test with Redis running/stopped
- Performance Monitoring: Verify metrics under different system loads
Integration Testing
- Database manager integration
- Redis manager integration
- System metrics accuracy
- Error handling scenarios
Dependencies
UI Framework
dash-mantine-components- Modern UI componentsdash- Core dashboard frameworkplotly- Charts and visualizations
System Monitoring
psutil- System performance metricssubprocess- Process managementdatetime- Time handling
Database/Redis
database.connection.DatabaseManager- Database operationsdatabase.redis_manager.RedisManager- Redis operations
Troubleshooting
Common Issues
-
"Service Stopped" Status
- Solution: Run
python scripts/start_data_collection.py
- Solution: Run
-
Database Connection Failed
- Check Docker containers:
docker-compose ps - Verify database configuration in
.env
- Check Docker containers:
-
Redis Connection Failed
- Ensure Redis container is running
- Check Redis configuration
-
Performance Metrics Unavailable
- Usually permissions issue on system metrics
- Check if
psutilhas necessary permissions
Logs and Debugging
- Check dashboard logs for callback errors
- Use browser developer tools for frontend issues
- Monitor system logs for resource issues
Documentation Updates
Files Updated
tasks/tasks-crypto-bot-prd.md- Marked Task 3.5 as completed- Added this documentation file
Next Task
Ready to proceed with Task 3.6: Build simple data analysis tools (volume analysis, price movement statistics)