Add Infra Automation Pack v1: docs infrastructure, logging stack, sync scripts

This commit is contained in:
Apple
2025-11-27 09:29:42 -08:00
parent 6bd769ef40
commit 2a6112fc42
22 changed files with 595 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
# Infra Automation Pack v1
Infra Automation Pack v1 стандартизує документацію, логування та синхронізацію репозиторію на всіх нодах DAARION.
## 1. Docs
- Структура `/docs/public` + `/docs/internal` + `mkdocs.yml`.
- GitHub Actions `.github/workflows/docs.yml` збирає MkDocs і публікує сайт у гілку `gh-pages` (GitHub Pages увімкнути вручну).
- Dev залежності: `requirements-dev.txt` (`mkdocs`, `mkdocs-material`).
### Як запускається локально
```bash
pip install -r requirements-dev.txt
mkdocs serve
```
## 2. Logging Stack
- Конфігурації в `infra/logging/`:
- `docker-compose.logging.yml`
- `loki-config.yml`
- `promtail-config.yml`
- `grafana-provisioning/...`
- Запуск на NODE1 / NODE2:
```bash
cd /opt/microdao-daarion
sudo docker compose -f infra/logging/docker-compose.logging.yml up -d
```
- Доступ:
- Loki: `http://<node>:3100`
- Grafana: `http://<node>:3000` (логін admin / пароль налаштувати після першого запуску).
## 3. Daily Log Summary
- Скрипти `scripts/logs/generate_daily_summary.py` + `scripts/logs/daily_log_summary.sh`.
- Параметри через env (`LOKI_URL`, `LAB_NOTES_DIR`).
- Вихідні файли: `lab-notes/log_summary_YYYY-MM-DD.md`.
### Приклад cron-запису
```
0 6 * * * /opt/microdao-daarion/scripts/logs/daily_log_summary.sh >> /var/log/daarion_daily_log_summary.log 2>&1
```
### GitHub Actions (опціонально)
- `.github/workflows/log-notes.yml` — ручний запуск для пушу `lab-notes/` у `main`.
## 4. Docs Sync on Nodes
- Скрипт `scripts/docs/docs_sync.sh` виконує `git fetch` / `git pull` для `origin/main`.
### systemd unit (шаблон)
```
[Unit]
Description=Sync DAARION repo (docs + code)
After=network-online.target
[Service]
Type=oneshot
ExecStart=/opt/microdao-daarion/scripts/docs/docs_sync.sh
User=daarion
Group=daarion
[Install]
WantedBy=multi-user.target
```
### Cron-варіант
```
*/15 * * * * /opt/microdao-daarion/scripts/docs/docs_sync.sh >> /var/log/daarion_docs_sync.log 2>&1
```
## 5. Подальші кроки
- Додати Jupyter-звіти (`lab-notes/*.ipynb`).
- Розширити Grafana dashboard (`infra/logging/grafana-provisioning/dashboards`).
- Інтегрувати Node Registry + DAIS метадані (agents vs nodes).

View File

@@ -0,0 +1,25 @@
# Monitoring Overview
## Поточні компоненти
- **Prometheus** — збирає метрики сервісів (router, gateway, swapper).
- **Grafana** — dashboards (NODE1:3000).
- **node-exporter** (planned) — системні метрики.
## Що додає Infra Automation Pack
- **Loki + Promtail** — централізовані логи Docker та системи.
- **Daily Log Summary** — markdown-звіти з ключовими подіями.
- **Docs Sync** — гарантує, що інфраструктурні інструкції однакові на всіх нодах.
## Мережеві порти
| Сервіс | Порт |
|--------|------|
| Prometheus | 9090 |
| Grafana | 3000 |
| Loki | 3100 |
| Promtail | 9080 |
## Наступні кроки
1. Додати алерти (Alertmanager).
2. Інтегрувати NATS JetStream події в Loki (через Promtail pipeline).
3. Створити спільний Grafana dashboard для City Map / Agent Presence.

View File

@@ -0,0 +1,24 @@
# Nodes Registry v0 (Draft)
## Мета
Створити єдину базу даних про всі вузли (NODE1, NODE2, майбутні регіони) з метою:
- відстеження конфігурацій і версій ПЗ;
- автоматизації Node Join Protocol;
- розподілу завдань агентів та сервісів.
## Поточний статус
- NODE1 та NODE2 ведуться вручну в INFRASTRUCTURE.md.
- Автоматичного API немає.
## План
1. **Схема таблиці `nodes`:**
- `node_id`, `hostname`, `role`, `env`, `ip_public`, `ip_private`, `gpu`, `status`.
2. **Service:** FastAPI (Node Registry) з CRUD + auth.
3. **Sync агенти:** кожен node-agent шле heartbeat в регістр через NATS.
4. **UI:** вкладка "Nodes" в admin-панелі.
## Інтеграції
- Node Join Protocol (draft).
- DAIS (CORE) — зберігає прив'язку agent → node.
- Infra Automation Pack — використовує registry для автоматизації sync/логів.