Enhanced Attachment Migration System
Overview
The Enhanced Attachment Migration System provides a comprehensive solution for managing attachment storage across multiple backends (filesystem, MongoDB GridFS, S3/MinIO) with CPU throttling, real-time monitoring, and secure configuration management.
Features
1. Multi-Backend Storage Support
- Filesystem Storage: Local file system storage using
WRITABLE_PATH
- MongoDB GridFS: Database-based file storage
- S3/MinIO: Cloud and object storage compatibility
2. CPU Throttling
- Automatic CPU Monitoring: Real-time CPU usage tracking
- Configurable Thresholds: Set CPU usage limits (10-90%)
- Automatic Pausing: Migration pauses when CPU threshold is exceeded
- Resume Capability: Continue migration when CPU usage drops
3. Batch Processing
- Configurable Batch Size: Process 1-100 attachments per batch
- Adjustable Delays: Set delays between batches (100-10000ms)
- Progress Tracking: Real-time progress monitoring
- Queue Management: Intelligent migration queue handling
4. Security Features
- Password Protection: S3 secret keys are never displayed
- Admin-Only Access: All operations require admin privileges
- Secure Configuration: Environment-based configuration management
- Audit Logging: Comprehensive migration logging
5. Real-Time Monitoring
- Storage Statistics: Live attachment counts and sizes
- Visual Charts: Storage distribution visualization
- Migration Status: Real-time migration progress
- System Metrics: CPU, memory, and performance monitoring
Admin Panel Interface
Storage Settings
- Filesystem Configuration: View and configure filesystem paths
- GridFS Status: Monitor MongoDB GridFS availability
- S3/MinIO Configuration: Secure S3/MinIO setup and testing
- Connection Testing: Validate storage backend connections
Migration Controls
- Batch Configuration: Set batch size, delays, and CPU thresholds
- Migration Actions: Start, pause, resume, and stop migrations
- Progress Monitoring: Real-time progress bars and statistics
- Log Viewing: Live migration logs with timestamps
Monitoring Dashboard
- Storage Distribution: Visual breakdown of attachment storage
- Size Analytics: Total and per-storage size statistics
- Performance Metrics: System resource usage
- Export Capabilities: Download monitoring data
Configuration
Environment Variables
Filesystem Storage
# Base writable path for all file storage
WRITABLE_PATH=/data
# Attachments will be stored at: ${WRITABLE_PATH}/attachments
# Avatars will be stored at: ${WRITABLE_PATH}/avatars
S3/MinIO Storage
# S3 configuration (JSON format)
S3='{"s3":{"key":"access-key","secret":"secret-key","bucket":"bucket-name","endPoint":"s3.amazonaws.com","port":443,"sslEnabled":true,"region":"us-east-1"}}'
# Alternative: S3 secret file (Docker secrets)
S3_SECRET_FILE=/run/secrets/s3_secret
Migration Settings
Default Configuration
- Batch Size: 10 attachments per batch
- Delay: 1000ms between batches
- CPU Threshold: 70% maximum CPU usage
- Auto-pause: When CPU exceeds threshold
Customization
All settings can be adjusted through the admin panel:
- Batch size: 1-100 attachments
- Delay: 100-10000ms
- CPU threshold: 10-90%
Usage
Starting a Migration
- Access Admin Panel: Navigate to Settings → Attachment Settings
- Configure Migration: Set batch size, delay, and CPU threshold
- Select Target Storage: Choose filesystem, GridFS, or S3
- Start Migration: Click the appropriate migration button
- Monitor Progress: Watch real-time progress and logs
Migration Process
- Queue Initialization: All attachments are queued for migration
- Batch Processing: Attachments are processed in configurable batches
- CPU Monitoring: System continuously monitors CPU usage
- Automatic Pausing: Migration pauses if CPU threshold is exceeded
- Resume Capability: Migration resumes when CPU usage drops
- Progress Tracking: Real-time progress updates and logging
Monitoring Migration
- Progress Bar: Visual progress indicator
- Statistics: Total, migrated, and remaining attachment counts
- Status Display: Current migration status (running, paused, idle)
- Log View: Real-time migration logs with timestamps
- Control Buttons: Pause, resume, and stop migration
API Reference
Server Methods
Migration Control
// Start migration
Meteor.call('startAttachmentMigration', {
targetStorage: 'filesystem', // 'filesystem', 'gridfs', 's3'
batchSize: 10,
delayMs: 1000,
cpuThreshold: 70
});
// Pause migration
Meteor.call('pauseAttachmentMigration');
// Resume migration
Meteor.call('resumeAttachmentMigration');
// Stop migration
Meteor.call('stopAttachmentMigration');
Configuration Management
// Get storage configuration
Meteor.call('getAttachmentStorageConfiguration');
// Test S3 connection
Meteor.call('testS3Connection', { secretKey: 'new-secret-key' });
// Save S3 settings
Meteor.call('saveS3Settings', { secretKey: 'new-secret-key' });
Monitoring
// Get monitoring data
Meteor.call('getAttachmentMonitoringData');
// Refresh monitoring data
Meteor.call('refreshAttachmentMonitoringData');
// Export monitoring data
Meteor.call('exportAttachmentMonitoringData');
Publications
Real-Time Updates
// Subscribe to migration status
Meteor.subscribe('attachmentMigrationStatus');
// Subscribe to monitoring data
Meteor.subscribe('attachmentMonitoringData');
Performance Considerations
CPU Throttling
- Automatic Monitoring: CPU usage is checked every 5 seconds
- Threshold-Based Pausing: Migration pauses when CPU exceeds threshold
- Resume Logic: Migration resumes when CPU usage drops below threshold
- Configurable Limits: CPU thresholds can be adjusted (10-90%)
Batch Processing
- Configurable Batches: Batch size can be adjusted (1-100)
- Delay Control: Delays between batches prevent system overload
- Queue Management: Intelligent queue processing with error handling
- Progress Tracking: Real-time progress updates
Memory Management
- Streaming Processing: Large files are processed using streams
- Memory Monitoring: System memory usage is tracked
- Garbage Collection: Automatic cleanup of processed data
- Error Recovery: Robust error handling and recovery
Security
Access Control
- Admin-Only Access: All operations require admin privileges
- User Authentication: Proper user authentication and authorization
- Session Management: Secure session handling
Data Protection
- Password Security: S3 secret keys are never displayed in UI
- Environment Variables: Sensitive data stored in environment variables
- Secure Transmission: All data transmission is encrypted
- Audit Logging: Comprehensive logging of all operations
Configuration Security
- Read-Only Display: Sensitive configuration is displayed as read-only
- Password Updates: Only new passwords can be set, not viewed
- Connection Testing: Secure connection testing without exposing credentials
- Environment Isolation: Configuration isolated from application code
Troubleshooting
Common Issues
Migration Not Starting
- Check Permissions: Ensure user has admin privileges
- Verify Configuration: Check storage backend configuration
- Review Logs: Check server logs for error messages
- Test Connections: Verify storage backend connectivity
High CPU Usage
- Reduce Batch Size: Decrease batch size to reduce CPU load
- Increase Delays: Add longer delays between batches
- Lower CPU Threshold: Reduce CPU threshold for earlier pausing
- Monitor System: Check system resource usage
Migration Pausing Frequently
- Check CPU Threshold: Verify CPU threshold settings
- Monitor System Load: Check for other high-CPU processes
- Adjust Settings: Increase CPU threshold or reduce batch size
- System Optimization: Optimize system performance
Storage Connection Issues
- Verify Credentials: Check S3/MinIO credentials
- Test Connectivity: Use connection test feature
- Check Network: Verify network connectivity
- Review Configuration: Validate storage configuration
Debug Information
Migration Logs
- Real-Time Logs: View live migration logs in admin panel
- Server Logs: Check server console for detailed logs
- Error Messages: Review error messages for specific issues
- Progress Tracking: Monitor migration progress and statistics
System Monitoring
- CPU Usage: Monitor CPU usage during migration
- Memory Usage: Track memory consumption
- Disk I/O: Monitor disk input/output operations
- Network Usage: Check network bandwidth usage
Best Practices
Migration Planning
- Schedule During Low Usage: Run migrations during low-traffic periods
- Test First: Test migration with small batches first
- Monitor Resources: Keep an eye on system resources
- Have Backup: Ensure data backup before migration
Performance Optimization
- Optimize Batch Size: Find optimal batch size for your system
- Adjust Delays: Set appropriate delays between batches
- Monitor CPU: Set realistic CPU thresholds
- Use Monitoring: Regularly check monitoring data
Security Practices
- Regular Updates: Keep S3 credentials updated
- Access Control: Limit admin access to necessary users
- Audit Logs: Regularly review migration logs
- Environment Security: Secure environment variable storage
Future Enhancements
Planned Features
- Incremental Migration: Migrate only changed attachments
- Parallel Processing: Support for parallel migration streams
- Advanced Scheduling: Time-based migration scheduling
- Compression Support: Built-in file compression during migration
Integration Opportunities
- Cloud Storage: Additional cloud storage providers
- CDN Integration: Content delivery network support
- Backup Integration: Automated backup during migration
- Analytics: Advanced storage analytics and reporting
Support
For issues and questions:
- Check this documentation
- Review server logs
- Use the monitoring tools
- Consult the Wekan community
- Report issues with detailed information
License
This Enhanced Attachment Migration System is part of Wekan and is licensed under the MIT License.