- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
6.6 KiB
6.6 KiB
✅ Monitor Agent - Real-time інтеграція завершена
Дата: 2025-11-22
Статус: ✅ Готово до використання
🎉 Виконано
✅ 1. Event Logging System
- ✅ Автоматичне логування всіх змін
- ✅ Зберігання останніх 1000 подій
- ✅ API endpoint:
/api/events - ✅ Очищення логу:
POST /api/events/clear
✅ 2. Real-time Updates
- ✅ WebSocket endpoint:
/ws/events - ✅ Server-Sent Events:
/api/events/stream - ✅ Автоматичне підключення при завантаженні dashboard
- ✅ Автоматичне переподключення
✅ 3. Автоматичний моніторинг
- ✅ Background task запускається при старті
- ✅ Перевірка нод кожні 30 секунд
- ✅ Перевірка Swapper Service кожні 30 секунд
- ✅ Автоматичне виявлення змін
✅ 4. Event Log на Dashboard
- ✅ Секція "System Activity Log"
- ✅ Останні 20 подій
- ✅ Real-time оновлення через WebSocket
- ✅ Polling fallback кожні 10 секунд
- ✅ Візуальні індикатори (Agent/Node/System)
🔄 Автоматичні правила
1. Моніторинг нод
Правило: Перевіряти статус кожної ноди кожні 30 секунд
Дії:
- Перевірка health endpoint
- Порівняння з попереднім статусом
- Логування змін статусу
- Broadcast події через WebSocket
Приклад події:
{
"type": "node",
"action": "status_changed",
"message": "Статус ноди NODE 1 (Production) змінено на offline",
"details": {
"node_id": "node-1",
"previous_status": "online",
"new_status": "offline"
}
}
2. Моніторинг агентів
Правило: Логувати всі зміни в агентах
Дії:
- Створення/оновлення агента
- Додавання/видалення з команди
- Зміна system prompt
Приклад події:
{
"type": "agent",
"action": "sub_agent_added",
"message": "Додано агента 'Product Manager' в команду GREENFOOD Assistant",
"details": {
"agent_id": "greenfood",
"agent_name": "GREENFOOD Assistant",
"sub_agent": {
"name": "Product Manager",
"role": "Manages products"
}
}
}
3. Моніторинг Swapper Service
Правило: Перевіряти Swapper Service кожні 30 секунд
Дії:
- Перевірка статусу Swapper Service
- Відстеження змін активної моделі
- Логування оновлень
Приклад події:
{
"type": "node",
"action": "swapper_updated",
"message": "Оновлено Swapper Service на ноді NODE 2 (Local)",
"details": {
"node_id": "node-2",
"previous_model": null,
"current_model": "deepseek-r1-70b"
}
}
📊 Event Log на Dashboard
Відображення
-
Секція "System Activity Log":
- Розташована перед картками нод
- Максимальна висота: 256px (max-h-64)
- Автоматичне прокручування
-
Формат події:
- 🔵 Agent events (blue icon)
- 🟢 Node events (green icon)
- 🟣 System events (purple icon)
- Час події
- Деталі (якщо є)
-
Real-time оновлення:
- WebSocket для миттєвих оновлень
- Polling кожні 10 секунд (fallback)
- Анімація pulse для нових подій
🔧 Технічні деталі
Event Log Structure
EVENT_LOG = deque(maxlen=1000) # Останні 1000 подій
Event Format
{
"timestamp": "2025-11-22T12:34:56.789",
"type": "agent" | "node" | "system",
"action": "created" | "updated" | "deleted" | "status_changed" | ...,
"message": "Human-readable message",
"details": {
# Деталі події
}
}
WebSocket Connection
const ws = new WebSocket('ws://localhost:8899/ws/events');
ws.onmessage = (event) => {
const eventData = JSON.parse(event.data);
addEventToLog(eventData);
};
🧪 Тестування
1. Перевірити Event Log API
# Отримати останні події
curl 'http://localhost:8899/api/events?limit=10'
# Очистити лог
curl -X POST http://localhost:8899/api/events/clear
2. Створити тестову подію
- Відкрити кабінет оркестратора:
/agent/greenfood - Додати агента в команду
- Перевірити відображення в Event Log на dashboard
3. Перевірити real-time оновлення
- Відкрити dashboard
- Відкрити DevTools → Network → WS
- Підключитися до
/ws/events - Створити подію (додати агента)
- Перевірити отримання події через WebSocket
📋 Автоматичні правила (як працюють)
Правило 1: Моніторинг змін статусу нод
IF node.status != previous_status THEN
log_event("node", "status_changed", {...})
broadcast_event(event)
END
Правило 2: Моніторинг змін в агентах
WHEN agent.updated OR agent.sub_agent_added OR agent.sub_agent_removed THEN
log_event("agent", action, {...})
broadcast_event(event)
END
Правило 3: Моніторинг Swapper Service
IF swapper.active_model != previous_active_model THEN
log_event("node", "swapper_updated", {...})
broadcast_event(event)
END
✅ Готово!
Monitor Agent автоматично інтегровано з системою! 🎉
- ✅ Автоматичне логування всіх змін
- ✅ Real-time оновлення через WebSocket
- ✅ Event Log на dashboard
- ✅ Автоматичний моніторинг нод та агентів
- ✅ Background task для відстеження змін
- ✅ Автоматичні правила для виявлення змін
Можна використовувати прямо зараз!
Last Updated: 2025-11-22
Status: ✅ Готово до використання
URL: http://localhost:8899