fix(ops): Add network aliases and stabilize DNS for NODA1

- docker-compose.node1.yml: Add network aliases (router, gateway,
  memory-service, qdrant, nats, neo4j) to eliminate manual
  `docker network connect --alias` commands
- docker-compose.node1.yml: ROUTER_URL now uses env variable with
  fallback: ${ROUTER_URL:-http://router:8000}
- docker-compose.node1.yml: Increase router healthcheck start_period
  to 30s and retries to 5
- .gitignore: Add noda1-credentials.local.mdc (local-only SSH creds)
- scripts/node1/verify_agents.sh: Improved output with agent list
- docs: Add NODA1-AGENT-VERIFICATION.md, NODA1-AGENT-ARCHITECTURE.md,
  NODA1-VERIFICATION-REPORT-2026-02-03.md
- config/README.md: How to add new agents
- .cursor/rules/, .cursor/skills/: NODA1 operations skill for Cursor

Root cause fixed: Gateway could not resolve 'router' DNS name when
Router container was named 'dagi-staging-router' without alias.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Apple
2026-02-03 05:55:56 -08:00
parent 8f046e7226
commit a46a70c014
10 changed files with 537 additions and 15 deletions

View File

@@ -0,0 +1,105 @@
# Перевірка роботи агентів на NODA1
**Сервер:** 144.76.224.179 (node1-daarion)
**Корінь проекту на сервері:** `/opt/microdao-daarion/`
---
## Швидка перевірка (на сервері)
Підключіться по SSH і виконайте скрипт перевірки:
```bash
ssh root@144.76.224.179
cd /opt/microdao-daarion
./scripts/node1/verify_agents.sh
```
Скрипт перевіряє:
1. **Prober metrics** (9108) — чи працює agent-e2e-prober
2. **Prometheus targets** (9090) — чи збираються метрики
3. **POST /debug/agent_ping** (9300) — E2E: Gateway → Router → Memory
4. **GET /health** (9300) — стан Gateway та список агентів (prompt завантажено, Telegram токен налаштовано)
5. **Webhook Helion** — відповідь на тестовий POST на `/helion/telegram/webhook`
---
## Ручні перевірки (на NODA1, localhost)
Виконуйте **після SSH на сервер** (`ssh root@144.76.224.179`).
### Health сервісів
```bash
curl -s http://localhost:9102/health # Router
curl -s http://localhost:9300/health # Gateway (тут список агентів)
curl -s http://localhost:8000/health # Memory Service
curl -s http://localhost:6333/healthz # Qdrant
```
### Список агентів і їх конфіг (Gateway)
```bash
curl -s http://localhost:9300/health | jq '.agents'
```
Очікуваний вивід — по кожному агенту: `name`, `prompt_loaded` (true/false), `telegram_token_configured` (true/false).
### E2E probe (Gateway → Router → Memory)
```bash
curl -s -X POST http://localhost:9300/debug/agent_ping -H "Content-Type: application/json" -d '{}' | jq .
```
Успіх: `router_ok: true`, `memory_ok: true`.
### Статус контейнерів
```bash
docker ps --format 'table {{.Names}}\t{{.Status}}' | grep -E 'gateway|router|memory|qdrant'
```
Очікувані контейнери (залежить від docker-compose): `dagi-gateway-node1`, router, memory-service, qdrant.
### Логи Gateway (останні рядки)
```bash
docker logs dagi-gateway-node1 --tail 50
```
---
## Агенти в Gateway (реєстр)
У `gateway-bot/http_api.py` реєстр **AGENT_REGISTRY** містить:
| agent_id | Webhook path |
|------------|-------------------------------|
| daarwizz | `/telegram/webhook` (default) |
| helion | `/helion/telegram/webhook` |
| greenfood | `/greenfood/telegram/webhook` |
| nutra | `/nutra/telegram/webhook` |
| agromatrix | `/agromatrix/telegram/webhook`|
| alateya | `/alateya/telegram/webhook` |
| druid | `/druid/telegram/webhook` |
| clan | `/clan/telegram/webhook` |
| eonarch | `/eonarch/telegram/webhook` |
Router викликається як: `POST {ROUTER_URL}/v1/agents/{agent_id}/infer`.
---
## Якщо з локальної машини (без SSH)
- Порти 9102, 9300, 8000 тощо на NODA1 можуть бути недоступні ззовні (firewall).
- Тоді єдиний варіант — виконувати перевірки **після SSH на сервер** (команди вище).
- Альтернатива: налаштувати SSH-тунель і тоді `curl http://localhost:9300/health` на своєму ноутбуку через тунель.
---
## Посилання
- **PROJECT-MASTER-INDEX.md** — єдина точка входу до документації, порти, сервіси.
- **NODA1-CURRENT-STATUS-2026-01-26.md** — поточний статус NODA1, health endpoints.
- **gateway-bot/http_api.py** — реєстр агентів, `/health`, `/debug/agent_ping`.