6.5 KiB
Executable File
6.5 KiB
Executable File
📊 Bulk Operations - Массовые операции
✨ Описание фичи
Bulk Operations позволяют выполнять операции над группой машин одновременно, значительно ускоряя административные задачи и мониторинг.
Реализованные функции:
- ✅ Bulk Health Check - проверка доступности нескольких машин параллельно
- ✅ Bulk SSH Command - выполнение команды на нескольких серверах с 3 режимами авторизации
- 🔜 Multi-Connect - открыть подключения к нескольким машинам (planned)
- 🔜 Bulk Tags Update - массовое обновление тегов (planned)
🎯 Use Cases
1. Проверка доступности prod серверов
Scenario: Утренний чек перед началом работы
1. Фильтруем по тегу "production"
2. Select All (50 machines)
3. Click "Health Check"
4. Результат: 48 online, 2 offline
5. Быстро идентифицируем проблемы
2. Массовое выполнение SSH команд
Scenario: Перезапуск сервиса на всех web серверах
1. Фильтруем по тегу "webserver"
2. Select All (15 machines)
3. Click "Run Command"
4. Command: "systemctl restart nginx"
5. Mode: Saved credentials
6. Result: 15/15 success
🚀 Быстрый старт
Step 1: Enable Bulk Mode
1. В Sidebar → Click "Bulk Select"
2. Кнопка меняется на "✓ Bulk Mode"
3. Появляются checkboxes возле машин
Step 2: Select Machines
Опция A: Manual selection
- Click checkboxes вручную
Опция B: Select All
- Click "Select All" checkbox
- Все машины выбраны
Опция C: With filter
- Search: "web"
- Select All → только отфильтрованные
Step 3: Choose Operation
Toolbar появляется внизу:
[Health Check] [Run Command] [Multi-Connect] [Update Tags]
📖 Детальные руководства
- BULK_SSH_COMMANDS_GUIDE.md - SSH Commands с 3 режимами авторизации
- Health Check - см. ниже в этом документе
🏥 Bulk Health Check
Описание:
Параллельная проверка доступности нескольких машин одновременно.
Features:
- DNS resolution check
- TCP port connectivity check
- Response time measurement
- Role-based limits
API:
POST /bulk/health-check
Request:
{
"machine_ids": ["abc...", "def...", "ghi..."],
"timeout": 5,
"check_port": true
}
Response:
{
"total": 3,
"available": 2,
"unavailable": 1,
"execution_time_ms": 1250,
"results": [...]
}
Role Limits:
- GUEST: max 10 machines
- USER: max 50 machines
- ADMIN: max 200 machines
UI Flow:
1. Select machines → Bulk mode
2. Click "Health Check"
3. Progress modal shows: "Checking 15/50 machines..."
4. Results modal:
- Tabs: All / Available / Unavailable
- Sortable table
- Export CSV
- Retry Failed
🔐 Security & Permissions
Role-based Access:
| Feature | GUEST | USER | ADMIN |
|---|---|---|---|
| Health Check | 10 machines | 50 machines | 200 machines |
| SSH Command | ❌ Forbidden | 20 machines (whitelist) | 100 machines (any) |
| Multi-Connect | 2 machines | 5 machines | 10 machines |
Audit Logging:
{
"action": "bulk_health_check",
"user": "admin",
"machine_count": 50,
"available": 48,
"unavailable": 2,
"execution_time_ms": 3500,
"timestamp": "2025-01-15T10:30:00Z"
}
📊 Performance
| Operation | 10 machines | 50 machines | 100 machines |
|---|---|---|---|
| Health Check | ~500ms | ~2.5s | ~5s |
| SSH Command | ~2s | ~10s | ~20s |
Optimization:
- Parallel execution via
asyncio.gather - Configurable timeouts
- Semaphore для SSH (max 10 concurrent)
🎓 Best Practices
1. Используйте фильтры перед bulk selection
✅ Good: Filter → Select All filtered → Health Check
❌ Bad: Select All 1000 machines → try to Health Check → error
2. Export результаты для отчетов
Use case: Weekly infrastructure report
1. Select all prod servers
2. Health Check
3. Export CSV
4. Import to Excel/Dashboard
3. Retry Failed для устранения false negatives
Scenario: Network glitch
1. Health Check → 5 machines offline
2. Wait 30 seconds
3. Retry Failed → 3 now online
4. Investigate remaining 2
🐛 Troubleshooting
Issue: "Selection Limit Exceeded"
Error: "Role USER can check max 50 machines at once"
Solution:
1. Проверить свою роль (Header → User Info)
2. Уменьшить выбор машин
3. Запросить upgrade роли у администратора
Issue: All machines show "Unavailable"
Possible causes:
1. Network issues on server side
2. Firewall blocking ports
3. DNS resolution problems
Debug:
1. Check API logs: docker compose logs remote_access_api
2. Try single machine health check first
3. Verify network connectivity from API container
🔗 Related Documentation
- BULK_SSH_COMMANDS_GUIDE.md - 📘 Детальное руководство по SSH Commands
- AUTHENTICATION_FLOW_DETAILED.md - Role-based permissions
- PRODUCTION_SECURITY_ARCHITECTURE.md - Audit logging
- SAVED_MACHINES_FEATURE.md - Machine management
🎉 Готово! Bulk Operations полностью реализованы и документированы.
Что реализовано:
- ✅ Bulk Health Check - Массовая проверка доступности
- ✅ Bulk SSH Command - Массовое выполнение команд с 3 режимами авторизации