- 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
242 lines
6.4 KiB
Markdown
242 lines
6.4 KiB
Markdown
# Node Network Integration - Complete ✅
|
|
|
|
## 📋 Summary
|
|
|
|
Інтегровано Node Registry Service та NATS JetStream на головний дашборд та створено окрему сторінку для управління зв'язками між нодами.
|
|
|
|
---
|
|
|
|
## ✅ Що додано
|
|
|
|
### 1. API Endpoint `/api/network/status`
|
|
|
|
**Функціональність:**
|
|
- Перевіряє статус Node Registry (порт 9205)
|
|
- Перевіряє статус NATS JetStream (порт 4222, 8222)
|
|
- Повертає список всіх засобів зв'язку між нодами
|
|
- Відстежує кількість зареєстрованих нод та з'єднань
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"node_registry": {
|
|
"status": "online|offline|error",
|
|
"url": "http://144.76.224.179:9205",
|
|
"registered_nodes": 2,
|
|
"error": null
|
|
},
|
|
"nats": {
|
|
"status": "online|offline|error",
|
|
"url": "nats://144.76.224.179:4222",
|
|
"connections": 0,
|
|
"error": null
|
|
},
|
|
"connection_methods": [
|
|
{
|
|
"name": "Node Registry",
|
|
"type": "service",
|
|
"port": 9205,
|
|
"status": "online",
|
|
"description": "Central registry for all nodes"
|
|
},
|
|
// ... інші методи
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 2. Блок на головному дашборді
|
|
|
|
**Розташування:** `http://localhost:8899/`
|
|
|
|
**Компонент:** "Node Network Status"
|
|
|
|
**Відображає:**
|
|
- **Node Registry:**
|
|
- Статус (online/offline/error)
|
|
- Кількість зареєстрованих нод
|
|
- Порт: 9205
|
|
- Індикатор статусу (зелений/жовтий/червоний)
|
|
|
|
- **NATS JetStream:**
|
|
- Статус (online/offline/error)
|
|
- Кількість з'єднань
|
|
- Порт: 4222
|
|
- Індикатор статусу
|
|
|
|
**Оновлення:** Автоматично кожні 20 секунд
|
|
|
|
**Кнопки:**
|
|
- "Details" - перехід на сторінку `/network`
|
|
- "Refresh" - оновлення статусу
|
|
|
|
---
|
|
|
|
### 3. Окрема сторінка `/network`
|
|
|
|
**Розташування:** `http://localhost:8899/network`
|
|
|
|
**Секції:**
|
|
|
|
#### A. Connection Services Status
|
|
- **Node Registry Card:**
|
|
- Детальний статус
|
|
- Кнопки: "Enable", "Test"
|
|
- URL та помилки (якщо є)
|
|
|
|
- **NATS JetStream Card:**
|
|
- Детальний статус
|
|
- Кнопки: "Enable", "Test"
|
|
- URL та помилки (якщо є)
|
|
|
|
#### B. Connection Methods
|
|
- Grid з усіма засобами зв'язку:
|
|
- Node Registry (service, port 9205)
|
|
- NATS JetStream (message_broker, port 4222)
|
|
- HTTP/HTTPS (api, ports 9102, 9300, 8890)
|
|
- SSH (management, port 22)
|
|
- GitHub (code_sync, N/A)
|
|
|
|
- Кожен метод показує:
|
|
- Тип
|
|
- Порт
|
|
- Статус
|
|
- Опис
|
|
|
|
#### C. Register New Node
|
|
- Форма для реєстрації нової ноди:
|
|
- Node ID
|
|
- Node Name
|
|
- IP Address
|
|
- Role (Production/Development/Backup/Worker)
|
|
- Node Type (Router/Gateway/Worker/Storage)
|
|
- Hostname (optional)
|
|
- Services to Enable (checkboxes):
|
|
- Node Registry
|
|
- NATS
|
|
- Router
|
|
- Swapper
|
|
|
|
- Кнопки:
|
|
- "Register Node" - реєстрація ноди
|
|
- "Clear" - очищення форми
|
|
|
|
#### D. Registered Nodes
|
|
- Таблиця з усіма зареєстрованими нодами:
|
|
- Node (назва + індикатор статусу)
|
|
- Role
|
|
- IP Address
|
|
- Status
|
|
- Last Heartbeat
|
|
- Actions (View button)
|
|
|
|
---
|
|
|
|
## 🔧 Функції
|
|
|
|
### JavaScript Functions:
|
|
|
|
1. **`loadNetworkStatus()`** - Завантажує статус Node Registry та NATS
|
|
2. **`loadNetworkPage()`** - Завантажує всю сторінку `/network`
|
|
3. **`registerNewNode()`** - Реєструє нову ноду
|
|
4. **`enableNodeRegistry()`** - Вмикає Node Registry сервіс
|
|
5. **`enableNATS()`** - Вмикає NATS сервіс
|
|
6. **`testNodeRegistry()`** - Тестує Node Registry (відкриває health endpoint)
|
|
7. **`testNATS()`** - Тестує NATS (відкриває varz endpoint)
|
|
8. **`viewNodeDetails(nodeId)`** - Перехід до кабінету ноди
|
|
|
|
---
|
|
|
|
## 🔄 Автоматичне оновлення
|
|
|
|
### Dashboard:
|
|
- Node Network Status оновлюється кожні 20 секунд
|
|
- Використовує `setInterval(loadNetworkStatus, 20000)`
|
|
|
|
### Network Page:
|
|
- Автоматичне оновлення кожні 30 секунд
|
|
- Використовує `setInterval(loadNetworkPage, 30000)`
|
|
|
|
---
|
|
|
|
## 📊 Поточний статус
|
|
|
|
### Node Registry:
|
|
- **Status:** online ✅
|
|
- **URL:** http://144.76.224.179:9205
|
|
- **Registered Nodes:** 2
|
|
|
|
### NATS JetStream:
|
|
- **Status:** offline ⚠️
|
|
- **URL:** nats://144.76.224.179:4222
|
|
- **Connections:** 0
|
|
|
|
### Connection Methods:
|
|
- ✅ Node Registry (online)
|
|
- ⚠️ NATS JetStream (offline)
|
|
- ✅ HTTP/HTTPS (active)
|
|
- ✅ SSH (active)
|
|
- ✅ GitHub (active)
|
|
|
|
---
|
|
|
|
## 🎯 Навігація
|
|
|
|
### Додано в меню:
|
|
- **"Node Network"** - новий пункт меню
|
|
- Іконка: `network`
|
|
- Активний клас при відкритті сторінки `/network`
|
|
|
|
### Посилання:
|
|
- Dashboard → "Details" кнопка → `/network`
|
|
- Меню → "Node Network" → `/network`
|
|
|
|
---
|
|
|
|
## 🚀 Майбутні покращення
|
|
|
|
1. **Реальна реєстрація нод:**
|
|
- Інтеграція з Node Registry API
|
|
- POST `/api/v1/nodes/register`
|
|
|
|
2. **Управління сервісами:**
|
|
- Реальні кнопки Enable/Disable
|
|
- SSH команди для запуску сервісів
|
|
|
|
3. **Оновлення засобів зв'язку:**
|
|
- Автоматичне виявлення нових методів
|
|
- Динамічне оновлення списку
|
|
|
|
4. **Heartbeat tracking:**
|
|
- Відображення останнього heartbeat
|
|
- Графік доступності нод
|
|
|
|
5. **Connection testing:**
|
|
- Автоматичне тестування з'єднань
|
|
- Відображення latency
|
|
|
|
---
|
|
|
|
## ✅ Перевірка
|
|
|
|
### API:
|
|
```bash
|
|
curl http://localhost:8899/api/network/status
|
|
```
|
|
|
|
### Dashboard:
|
|
- Відкрити: `http://localhost:8899/`
|
|
- Перевірити блок "Node Network Status"
|
|
|
|
### Network Page:
|
|
- Відкрити: `http://localhost:8899/network`
|
|
- Перевірити всі секції
|
|
|
|
---
|
|
|
|
**Status:** ✅ Complete
|
|
**Date:** 2025-11-22
|
|
**Version:** DAGI Monitor V5.1
|
|
|