feat: Add presence heartbeat for Matrix online status
- 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
This commit is contained in:
176
MONITOR-AGENT-CONNECTION-FIX.md
Normal file
176
MONITOR-AGENT-CONNECTION-FIX.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# 🔧 Виправлення підключення Monitor Agent
|
||||
|
||||
**Дата:** 2025-11-23
|
||||
**Проблема:** Monitor Agent Service повертає 500 Internal Server Error при спробі надіслати повідомлення
|
||||
|
||||
## 🔍 Діагностика проблеми
|
||||
|
||||
### Виявлені проблеми:
|
||||
|
||||
1. ✅ **Monitor Agent Service працює** на порту 9500
|
||||
- Health check: `http://localhost:9500/health` → `{"status":"ok"}`
|
||||
- Процес: Python (PID: 17336)
|
||||
|
||||
2. ❌ **Ollama на НОДА2 недоступний**
|
||||
- URL: `http://192.168.1.244:11434`
|
||||
- Помилка: Connection refused / Timeout
|
||||
|
||||
3. ✅ **Ollama локально працює**
|
||||
- URL: `http://localhost:11434`
|
||||
- Доступні моделі: `mistral-nemo:12b`, `gpt-oss:latest`, `gemma2:27b`, тощо
|
||||
|
||||
### Причина помилки:
|
||||
|
||||
Monitor Agent Service налаштований на підключення до Ollama на НОДА2 (`192.168.1.244:11434`), але:
|
||||
- НОДА2 недоступний з локальної машини
|
||||
- Ollama працює локально на `localhost:11434`
|
||||
|
||||
Коли Monitor Agent Service намагається зробити запит до Ollama на НОДА2, він отримує помилку з'єднання, що призводить до 500 Internal Server Error.
|
||||
|
||||
## ✅ Виправлення
|
||||
|
||||
### 1. Змінено конфігурацію за замовчуванням
|
||||
|
||||
**Файл:** `services/monitor-agent-service/app/main.py`
|
||||
|
||||
```python
|
||||
# Було:
|
||||
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://192.168.1.244:11434") # НОДА2
|
||||
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral:7b")
|
||||
|
||||
# Стало:
|
||||
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") # Локальний Ollama
|
||||
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral-nemo:12b") # Доступна модель
|
||||
```
|
||||
|
||||
### 2. Додано fallback на доступні моделі
|
||||
|
||||
Якщо вказана модель недоступна, сервіс автоматично пробує інші:
|
||||
1. `mistral-nemo:12b` (за замовчуванням)
|
||||
2. `gpt-oss:latest`
|
||||
3. `mistral:7b`
|
||||
4. `mistral:latest`
|
||||
|
||||
### 3. Покращена обробка помилок
|
||||
|
||||
- Детальні повідомлення про помилки
|
||||
- Автоматичний fallback на доступні моделі
|
||||
- Логування використаної моделі
|
||||
|
||||
## 🚀 Як застосувати виправлення
|
||||
|
||||
### Варіант 1: Перезапустити сервіс (якщо запущений через uvicorn)
|
||||
|
||||
```bash
|
||||
# Знайти процес
|
||||
ps aux | grep "uvicorn.*monitor-agent"
|
||||
|
||||
# Перезапустити сервіс
|
||||
cd services/monitor-agent-service
|
||||
source venv/bin/activate # Якщо використовується venv
|
||||
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
|
||||
```
|
||||
|
||||
### Варіант 2: Налаштувати через environment variables
|
||||
|
||||
```bash
|
||||
# Якщо потрібно підключитися до НОДА2
|
||||
export OLLAMA_BASE_URL=http://192.168.1.244:11434
|
||||
|
||||
# Якщо потрібно використовувати іншу модель
|
||||
export MISTRAL_MODEL=mistral:7b
|
||||
|
||||
# Перезапустити сервіс
|
||||
```
|
||||
|
||||
### Варіант 3: Перевірити, чи сервіс автоматично перезапустився
|
||||
|
||||
Якщо сервіс запущений з `--reload`, він має автоматично перезапуститися після зміни файлу.
|
||||
|
||||
## ✅ Перевірка
|
||||
|
||||
1. **Перевірити health check:**
|
||||
```bash
|
||||
curl http://localhost:9500/health
|
||||
```
|
||||
Має повернути: `{"status":"ok","service":"monitor-agent-service"}`
|
||||
|
||||
2. **Перевірити підключення до Ollama:**
|
||||
```bash
|
||||
curl http://localhost:11434/api/tags
|
||||
```
|
||||
Має повернути список доступних моделей
|
||||
|
||||
3. **Протестувати чат:**
|
||||
```bash
|
||||
curl -X POST http://localhost:9500/api/agent/monitor/chat \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"agent_id":"monitor","message":"Привіт!","node_id":null}'
|
||||
```
|
||||
Має повернути відповідь від Monitor Agent
|
||||
|
||||
4. **Перевірити в UI:**
|
||||
- Відкрити `http://localhost:8899/dagi-monitor`
|
||||
- Надіслати повідомлення в Monitor Agent Chat
|
||||
- Має з'явитися відповідь замість помилки
|
||||
|
||||
## 📝 Налаштування для різних середовищ
|
||||
|
||||
### Локальна розробка (за замовчуванням)
|
||||
```bash
|
||||
OLLAMA_BASE_URL=http://localhost:11434
|
||||
MISTRAL_MODEL=mistral-nemo:12b
|
||||
```
|
||||
|
||||
### Підключення до НОДА2
|
||||
```bash
|
||||
OLLAMA_BASE_URL=http://192.168.1.244:11434
|
||||
MISTRAL_MODEL=mistral:7b
|
||||
```
|
||||
|
||||
### Production (якщо Ollama на іншому сервері)
|
||||
```bash
|
||||
OLLAMA_BASE_URL=http://ollama-server:11434
|
||||
MISTRAL_MODEL=mistral:latest
|
||||
```
|
||||
|
||||
## 🎯 Результат
|
||||
|
||||
Після виправлення:
|
||||
- ✅ Monitor Agent Service підключається до локального Ollama
|
||||
- ✅ Автоматичний fallback на доступні моделі
|
||||
- ✅ Чат працює без помилок 500
|
||||
- ✅ Повідомлення від Monitor Agent з'являються в UI
|
||||
|
||||
## 🔄 Якщо проблема залишається
|
||||
|
||||
1. Перевірте, чи працює Ollama:
|
||||
```bash
|
||||
curl http://localhost:11434/api/tags
|
||||
```
|
||||
|
||||
2. Перевірте логи Monitor Agent Service:
|
||||
```bash
|
||||
# Якщо запущений через uvicorn, логи в консолі
|
||||
# Або перевірте процес
|
||||
ps aux | grep uvicorn
|
||||
```
|
||||
|
||||
3. Перевірте environment variables:
|
||||
```bash
|
||||
echo $OLLAMA_BASE_URL
|
||||
echo $MISTRAL_MODEL
|
||||
```
|
||||
|
||||
4. Перезапустіть сервіс з правильними змінними:
|
||||
```bash
|
||||
export OLLAMA_BASE_URL=http://localhost:11434
|
||||
export MISTRAL_MODEL=mistral-nemo:12b
|
||||
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Статус:** ✅ Виправлено
|
||||
**Наступні кроки:** Перезапустити Monitor Agent Service для застосування змін
|
||||
|
||||
Reference in New Issue
Block a user