- infrastructure-plan.md: server resource analysis (1 vCPU / 2GB RAM critically overloaded), two-server architecture recommendation - claude-agent.md: how to run Claude Code as an autonomous infra agent via Anthropic API + Telegram bot interface Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
127 lines
6.3 KiB
Markdown
127 lines
6.3 KiB
Markdown
# Infrastructure Plan
|
||
|
||
## Текущее состояние сервера (март 2026)
|
||
|
||
### Сервер: 87.249.49.32 (VPS-1, основной)
|
||
|
||
| Ресурс | Состояние | Оценка |
|
||
|--------|-----------|--------|
|
||
| CPU | 1 vCPU, load avg 1.63 | 🔴 Критично |
|
||
| RAM | 1.9 ГБ, свободно 99 МБ | 🔴 Критично |
|
||
| Swap | Отсутствует | 🔴 Опасно |
|
||
| Disk | 29 ГБ, 45% занято | 🟢 Норм |
|
||
|
||
**Вывод:** сервер работает на пределе. Любой пик нагрузки (деплой через CI/CD, обращение к Plane, тяжёлый запрос) приводит к конкуренции за RAM без возможности свопирования — процессы убиваются OOM killer'ом.
|
||
|
||
### Крупнейшие потребители RAM
|
||
|
||
| Контейнер | RAM |
|
||
|-----------|-----|
|
||
| plane-minio | 244 МБ |
|
||
| plane-api | 198 МБ |
|
||
| plane-worker | 178 МБ |
|
||
| plane-beat | 150 МБ |
|
||
| plane-space | 111 МБ |
|
||
| forgejo | 140 МБ |
|
||
| plane-db | 40 МБ |
|
||
| forgejo-db | 41 МБ |
|
||
|
||
---
|
||
|
||
## Немедленные действия (без смены тарифа)
|
||
|
||
### 1. Добавить swap (делается за 2 минуты)
|
||
```bash
|
||
sudo fallocate -l 2G /swapfile
|
||
sudo chmod 600 /swapfile
|
||
sudo mkswap /swapfile
|
||
sudo swapon /swapfile
|
||
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
||
```
|
||
Это не решит проблему, но защитит от внезапных OOM kills.
|
||
|
||
### 2. Ограничить mem_limit у Plane-сервисов
|
||
- `plane-worker` и `plane-beat` сейчас без лимита, жрут ~150-180 МБ каждый
|
||
- Поставить `mem_limit: 256m` на каждый
|
||
|
||
---
|
||
|
||
## Архитектура: два сервера
|
||
|
||
### Рекомендуемая схема
|
||
|
||
```
|
||
┌─────────────────────────────────┐
|
||
Internet ──────────────── │ VPS-1 (основной, 87.249.49.32) │
|
||
│ │
|
||
│ Traefik (80/443) │
|
||
│ ├── Forgejo (git.csrx.ru) │
|
||
│ ├── Vaultwarden (vault.) │
|
||
│ ├── Plane (plane.) │
|
||
│ ├── Syncthing (sync.) │
|
||
│ └── Forgejo Runner │
|
||
└─────────────────────────────────┘
|
||
│
|
||
Ansible SSH
|
||
│
|
||
┌─────────────────────────────────┐
|
||
│ VPS-2 (мониторинг + тулзы) │
|
||
│ │
|
||
│ Traefik (80/443) │
|
||
│ ├── Grafana (dashboard.) │
|
||
│ ├── Prometheus (internal) │
|
||
│ ├── cAdvisor (internal) │
|
||
│ ├── Node Exporter × 2 servers │
|
||
│ └── Claude Code Agent │
|
||
└─────────────────────────────────┘
|
||
```
|
||
|
||
### Почему два сервера?
|
||
|
||
1. **Изоляция:** мониторинг не ест ресурсы продакшен-сервисов
|
||
2. **Мониторинг мониторит продакшен снаружи** — видит проблемы даже при перегрузке VPS-1
|
||
3. **Claude Agent** работает на отдельной машине — не мешает пользователям
|
||
4. **Цена:** маленький VPS для мониторинга стоит 200-400 руб/мес
|
||
|
||
### Параметры VPS-2 (мониторинг)
|
||
|
||
Минимум: **2 vCPU, 2 ГБ RAM, 20 ГБ SSD** — этого хватит для Grafana+Prometheus+Claude Agent.
|
||
|
||
### Параметры для апгрейда VPS-1 (опционально)
|
||
|
||
Текущий тариф явно перегружен. Рекомендую апгрейд до **2 vCPU, 4 ГБ RAM** — это закроет проблему RAM и CPU.
|
||
|
||
---
|
||
|
||
## Провайдеры
|
||
|
||
Текущий сервер на **Timeweb Cloud** (судя по IP-диапазону и ключу `timeweb` в ~/.ssh/).
|
||
|
||
**Варианты для VPS-2:**
|
||
- **Timeweb Cloud** — тот же провайдер, можно управлять из одного кабинета, хороший пинг между серверами (оба в одном датацентре)
|
||
- **Hetzner** — дешевле, но выше пинг из России
|
||
- **Selectel / Beeline Cloud** — российские, быстро
|
||
|
||
**Рекомендация:** VPS-2 тоже на Timeweb Cloud — серверы в одной сети, внутренний трафик между ними бесплатный или очень дешёвый.
|
||
|
||
---
|
||
|
||
## Что деплоить на VPS-2 через Ansible
|
||
|
||
Добавить VPS-2 в `inventory/hosts.ini` как отдельный хост `monitoring`. Создать роль `monitoring` с:
|
||
|
||
- Prometheus + Node Exporter (scrape обоих серверов)
|
||
- Grafana с дашбордами
|
||
- cAdvisor (мониторит контейнеры VPS-2)
|
||
- Remote scrape Node Exporter на VPS-1 (добавить Node Exporter на VPS-1 без публичного доступа, через Prometheus federation или прямой scrape по внутреннему IP)
|
||
|
||
---
|
||
|
||
## Таймлайн
|
||
|
||
| Приоритет | Действие | Время |
|
||
|-----------|----------|-------|
|
||
| 🔴 Сейчас | Добавить swap на VPS-1 | 5 мин |
|
||
| 🟡 Эта неделя | Купить VPS-2, задеплоить мониторинг | 1-2 ч |
|
||
| 🟡 Эта неделя | Апгрейд VPS-1 до 4 ГБ RAM | 10 мин (перезагрузка) |
|
||
| 🟢 Позже | Claude Agent на VPS-2 | см. claude-agent.md |
|