mirror of
https://github.com/oarkflow/mq.git
synced 2025-11-03 06:43:17 +08:00
update
This commit is contained in:
284
examples/minimal_admin/static/admin/README.md
Normal file
284
examples/minimal_admin/static/admin/README.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# MQ Admin Dashboard
|
||||
|
||||
The MQ Admin Dashboard provides a comprehensive web-based interface for managing and monitoring your MQ broker, queues, consumers, and worker pools. It offers real-time metrics, control capabilities, and health monitoring similar to RabbitMQ's management interface.
|
||||
|
||||
## Features
|
||||
|
||||
### 🌟 **Comprehensive Dashboard**
|
||||
- **Real-time Monitoring**: Live charts showing throughput, queue depth, and system metrics
|
||||
- **Broker Management**: Monitor broker status, uptime, and configuration
|
||||
- **Queue Management**: View queue depths, consumer counts, and flush capabilities
|
||||
- **Consumer Control**: Monitor consumer status, pause/resume operations, and performance metrics
|
||||
- **Worker Pool Management**: Track pool status, worker counts, and memory usage
|
||||
- **Health Checks**: System health monitoring with detailed status reports
|
||||
|
||||
### 📊 **Real-time Visualizations**
|
||||
- Interactive charts powered by Chart.js
|
||||
- Live WebSocket updates for real-time data
|
||||
- Throughput history and trend analysis
|
||||
- System resource monitoring (CPU, Memory, Goroutines)
|
||||
|
||||
### 🎛️ **Management Controls**
|
||||
- Pause/Resume consumers
|
||||
- Adjust worker pool settings
|
||||
- Flush queues
|
||||
- Restart/Stop broker operations
|
||||
- Configuration management
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Run the Admin Demo
|
||||
|
||||
```bash
|
||||
cd examples/admin
|
||||
go run main.go
|
||||
```
|
||||
|
||||
This will start:
|
||||
- MQ Broker (background)
|
||||
- Admin Dashboard on http://localhost:8090/admin
|
||||
- Sample task simulation for demonstration
|
||||
|
||||
### 2. Access the Dashboard
|
||||
|
||||
Open your browser and navigate to:
|
||||
```
|
||||
http://localhost:8090/admin
|
||||
```
|
||||
|
||||
### 3. Explore the Interface
|
||||
|
||||
The dashboard consists of several tabs:
|
||||
|
||||
- **📈 Overview**: High-level metrics and system status
|
||||
- **🔧 Broker**: Broker configuration and control
|
||||
- **📋 Queues**: Queue monitoring and management
|
||||
- **👥 Consumers**: Consumer status and control
|
||||
- **🏊 Pools**: Worker pool monitoring
|
||||
- **❤️ Monitoring**: Health checks and system metrics
|
||||
|
||||
## Integration in Your Application
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"github.com/oarkflow/mq"
|
||||
"github.com/oarkflow/mq/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create logger
|
||||
lg := logger.NewDefaultLogger()
|
||||
|
||||
// Create broker
|
||||
broker := mq.NewBroker(mq.WithLogger(lg))
|
||||
|
||||
// Start broker
|
||||
ctx := context.Background()
|
||||
if err := broker.Start(ctx); err != nil {
|
||||
log.Fatalf("Failed to start broker: %v", err)
|
||||
}
|
||||
defer broker.Close()
|
||||
|
||||
// Create admin server
|
||||
adminServer := mq.NewAdminServer(broker, ":8090", lg)
|
||||
if err := adminServer.Start(); err != nil {
|
||||
log.Fatalf("Failed to start admin server: %v", err)
|
||||
}
|
||||
defer adminServer.Stop()
|
||||
|
||||
// Your application logic here...
|
||||
}
|
||||
```
|
||||
|
||||
### Configuration Options
|
||||
|
||||
The admin server can be configured with different options:
|
||||
|
||||
```go
|
||||
// Custom port
|
||||
adminServer := mq.NewAdminServer(broker, ":9090", lg)
|
||||
|
||||
// With custom logger
|
||||
customLogger := logger.NewDefaultLogger()
|
||||
adminServer := mq.NewAdminServer(broker, ":8090", customLogger)
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
The admin server exposes several REST API endpoints:
|
||||
|
||||
### Core Endpoints
|
||||
- `GET /admin` - Main dashboard interface
|
||||
- `GET /api/admin/metrics` - Real-time metrics
|
||||
- `GET /api/admin/broker` - Broker information
|
||||
- `GET /api/admin/queues` - Queue status
|
||||
- `GET /api/admin/consumers` - Consumer information
|
||||
- `GET /api/admin/pools` - Worker pool status
|
||||
- `GET /api/admin/health` - Health checks
|
||||
|
||||
### Control Endpoints
|
||||
- `POST /api/admin/broker/restart` - Restart broker
|
||||
- `POST /api/admin/broker/stop` - Stop broker
|
||||
- `POST /api/admin/queues/flush` - Flush all queues
|
||||
|
||||
### Example API Usage
|
||||
|
||||
```bash
|
||||
# Get current metrics
|
||||
curl http://localhost:8090/api/admin/metrics
|
||||
|
||||
# Get broker status
|
||||
curl http://localhost:8090/api/admin/broker
|
||||
|
||||
# Flush all queues
|
||||
curl -X POST http://localhost:8090/api/admin/queues/flush
|
||||
```
|
||||
|
||||
## Dashboard Features
|
||||
|
||||
### 🎨 **Modern UI Design**
|
||||
- Responsive design with Tailwind CSS
|
||||
- Clean, intuitive interface
|
||||
- Dark/light theme support
|
||||
- Mobile-friendly layout
|
||||
|
||||
### 📊 **Real-time Charts**
|
||||
- Live throughput monitoring
|
||||
- Queue depth trends
|
||||
- System resource usage
|
||||
- Error rate tracking
|
||||
|
||||
### ⚡ **Interactive Controls**
|
||||
- Consumer pause/resume buttons
|
||||
- Pool configuration modals
|
||||
- Queue management tools
|
||||
- Real-time status updates
|
||||
|
||||
### 🔄 **WebSocket Integration**
|
||||
- Live data updates without page refresh
|
||||
- Real-time event streaming
|
||||
- Automatic reconnection
|
||||
- Low-latency monitoring
|
||||
|
||||
## File Structure
|
||||
|
||||
The admin interface consists of:
|
||||
|
||||
```
|
||||
static/admin/
|
||||
├── index.html # Main dashboard interface
|
||||
├── css/
|
||||
│ └── admin.css # Custom styling
|
||||
└── js/
|
||||
└── admin.js # Dashboard JavaScript logic
|
||||
```
|
||||
|
||||
## Metrics and Monitoring
|
||||
|
||||
### System Metrics
|
||||
- **Throughput**: Messages processed per second
|
||||
- **Queue Depth**: Number of pending messages
|
||||
- **Active Consumers**: Currently running consumers
|
||||
- **Error Rate**: Failed message percentage
|
||||
- **Memory Usage**: System memory consumption
|
||||
- **CPU Usage**: System CPU utilization
|
||||
|
||||
### Queue Metrics
|
||||
- Message count per queue
|
||||
- Consumer count per queue
|
||||
- Processing rate per queue
|
||||
- Error count per queue
|
||||
|
||||
### Consumer Metrics
|
||||
- Messages processed
|
||||
- Error count
|
||||
- Last activity timestamp
|
||||
- Configuration parameters
|
||||
|
||||
### Pool Metrics
|
||||
- Active workers
|
||||
- Queue size
|
||||
- Memory load
|
||||
- Task distribution
|
||||
|
||||
## Customization
|
||||
|
||||
### Styling
|
||||
The interface uses Tailwind CSS and can be customized by modifying `static/admin/css/admin.css`.
|
||||
|
||||
### JavaScript
|
||||
Dashboard functionality can be extended by modifying `static/admin/js/admin.js`.
|
||||
|
||||
### Backend
|
||||
Additional API endpoints can be added to `admin_server.go`.
|
||||
|
||||
## Production Considerations
|
||||
|
||||
### Security
|
||||
- Add authentication/authorization
|
||||
- Use HTTPS in production
|
||||
- Implement rate limiting
|
||||
- Add CORS configuration
|
||||
|
||||
### Performance
|
||||
- Enable caching for static assets
|
||||
- Use compression middleware
|
||||
- Monitor memory usage
|
||||
- Implement connection pooling
|
||||
|
||||
### Monitoring
|
||||
- Add logging for admin operations
|
||||
- Implement audit trails
|
||||
- Monitor admin API usage
|
||||
- Set up alerting for critical events
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Dashboard not loading**
|
||||
- Check if static files are in the correct location
|
||||
- Verify server is running on correct port
|
||||
- Check browser console for errors
|
||||
|
||||
2. **API endpoints returning 404**
|
||||
- Ensure admin server is started
|
||||
- Verify correct port configuration
|
||||
- Check route registration
|
||||
|
||||
3. **Real-time updates not working**
|
||||
- Check WebSocket connection in browser dev tools
|
||||
- Verify broker is running and accessible
|
||||
- Check for CORS issues
|
||||
|
||||
### Debug Mode
|
||||
|
||||
Enable debug logging:
|
||||
|
||||
```go
|
||||
lg := logger.NewDefaultLogger()
|
||||
lg.Debug("Admin server starting")
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This admin dashboard is part of the MQ package and follows the same license terms.
|
||||
|
||||
## Contributing
|
||||
|
||||
To contribute to the admin dashboard:
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests if applicable
|
||||
5. Submit a pull request
|
||||
|
||||
For issues or feature requests, please open an issue on the main repository.
|
||||
Reference in New Issue
Block a user