This commit is contained in:
“Naeel”
2026-08-27 12:50:26 +03:00
parent 3b77adf4ac
commit 1efdcf71c2
+86
View File
@@ -0,0 +1,86 @@
# Kuma / алерты на сбой БД — сессия 2026-08-22
> Итог: задача (оповещения о сбое связи с БД) **поставлена на паузу**. Ниже — полная история, находки, причины и варианты. Kuma на ВМ 213 **откачена**.
## 1. Задача
Нужно личное оповещение (почта / Telegram) при сбое связи приложения `whitelist.nodejsk8s.services.ngcloud.ru` с БД. Рассматривался Uptime Kuma как мониторинг.
## 2. Что было развёрнуто и где
### Kuma на кластере `example-timasbxz` (уже существовала, не я)
- URL: `https://kum.containerk8s.dev.nubes.ru`
- Контейнер-сервис Nubes: deployment `containerk8s`, образ `louislam/uptime-kuma:1`
- namespace `5f9245f9-b813-4886-9997-1dd0a85de7e8`, под `containerk8s-595c6c8c5-hsctn`
- БД: managed MariaDB `mariak8s.5e053e2c-795d-4dfb-a872-0f98cc65d455.svc.cluster.local`
- user `kum`, db `kumbase`, пароль в Nubes UI (`kumpasswd` — тестовый)
- Монитор `IPWhitelist DB`: `HTTP(s) - Слово`, URL `https://whitelist.nodejsk8s.services.ngcloud.ru/v2/db-status`, слово `Connected`**работает (UP)**
## 3. Найденные проблемы (факты)
### 3.1 Telegram заблокирован в сети Nubes/провайдера
- Из пода Kuma лог: `connect ETIMEDOUT 149.154.166.110:443` (api.telegram.org).
- `api.telegram.org` резолвится в `149.154.166.110`**заблокирован** (timeout).
- Рабочий IP Telegram: **`149.154.167.220`** — открыт (curl `--resolve` → HTTP 302).
- Блокировка **выборочная по IP-диапазонам Telegram** (149.154.x частично, 91.108.x), не весь egress.
- С личной машины (WSL) Telegram доступен; из кластеров Nubes и ВМ 213 — нет.
### 3.2 Кластеры Nubes — нестабильный канал до API
- `example-timasbxz` (185.247.187.234) и `iot-naeel` (185.247.187.149) — оба:
- обрезают большие ответы API на ~21–30 KB (JSON неполный);
- HTTP/2 падает (`http2: client connection lost`), `kubectl`/`exec` зависают;
- малые ответы (metrics, отдельные ноды) стабильны (~0.2 с).
- Это общий сетевой слой Nubes (обе машины в подсети 185.247.187.x) — не конкретный кластер.
- Ресурсы кластера example в порядке: 16 CPU / 32 GB, занято ~11% CPU / ~29% RAM, ноды Ready.
### 3.3 egress (исходящий) в кластерах
- example: NetworkPolicy/CiliumNP/CCNP = **0** (нет политик). Egress к whitelist работает (монитор UP), к Telegram — нет.
- iot-naeel: `deny-cross-tenant` — только `policyTypes: ["Ingress"]`, egress не ограничивает; образы из интернета тянутся.
## 4. Инфраструктура (обследовано)
### ВМ 213 = `5.172.178.213` (naeel-vm, отладочная)
- SSH: `ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213`
- На 3001 крутится `node /home/naeel/ipwhitelist/server.js` (whitelist-приложение).
- Docker есть (29.1.3); контейнеры: `keycloak` (8080), `llmui` (8888).
- nginx на 80/443 (server_name 5.172.178.213 → proxy llmui:8888; домены check.kube5s.ru, obdai.ru).
- Telegram: **недоступен** (таймаут). Доступны: google, whitelist, sms.ru, smsc.ru, SMTP (smtp.yandex.ru/gmail/mail.ru).
### VULTR (Германия) = `95.179.252.111` (NaeelVultr) — КРИТИЧНЫЙ (VPN)
- SSH: `ssh -i ~/.ssh/vultr_openssh root@95.179.252.111` (исходный ключ `C:\SOFT\vultr.ppk`, сконвертирован в `~/.ssh/vultr_openssh`).
- **VPN = Xray** (слушает 8443 и 127.0.0.1:45987) + nginx (80/443) + gunicorn/python (8765/8766).
- **Telegram доступен нативно**: `https://api.telegram.org/` → HTTP 302 за 0.09 с.
- Ubuntu 22.04, Docker НЕТ, 951 MB RAM, 12 GB свободно.
## 5. Каналы алертов — сравнение
| Канал | Доступность из сети | Цена | Примечание |
|---|---|---|---|
| Telegram | ❌ из Nubes/ВМ 213; ✅ из VULTR и личной машины | 0 ₽ | нужен рабочий IP 149.154.167.220 или выход через VULTR |
| Email (SMTP) | ✅ smtp.yandex.ru:465/587 | 0 ₽ | ящик `tazet@narod.ru` + app password |
| SMS (smsc.ru) | ✅ 200 за 0.06 с | Мегафон 11.10 ₽, Т2 9.80 ₽, «остальные» 0.50 ₽ | sms.ru тоже доступен |
| SMS (междунар. Twilio/46elks/Plivo/ClickSend) | ✅ (Vonage ❌) | платно | для зарубежных номеров |
## 6. Креды (СЕКРЕТЫ — не коммитить в публичные репо)
- Telegram-бот: token `8690845859:AAFxjaWe55c1XfeB-hAjeKR3DIsXMQe67lA`, chat_id `378620327`, бот `@wl314159bot`.
- Почта (Yandex/narod): `tazet@narod.ru`, app password `msxaxwmjgrbfbqlq`.
- SSH: `~/.ssh/naeel_vm_id_ed25519` (ВМ 213), `~/.ssh/vultr_openssh` (VULTR).
- Номер получателя: Т2, зарегистрирован в Ульяновске (точный номер не зафиксирован в этой сессии).
## 7. Что сделано и откачено
- Kuma была развёрнута на ВМ 213 (Docker): контейнер `uptime-kuma`, порт `3002→3001`, том `/opt/uptime-kuma`.
- **ОТКАЧЕНО**: контейнер остановлен и удалён, том удалён, образ `louislam/uptime-kuma:1` удалён, правило ufw 3002 удалено. Порт 3002 свободен. Другие сервисы ВМ 213 (whitelist:3001, keycloak, llmui, nginx) НЕ тронуты.
## 8. Выводы и варианты на будущее
1. **Telegram** — рабочий путь: Kuma на VULTR (Германия), там Telegram нативно работает. Но VULTR критичен (VPN), установка требует аккуратности (без Docker).
2. **Email** — самый простой и безопасный: Kuma где угодно с доступом к smtp.yandex.ru (например, ВМ 213), бесплатно.
3. **SMS** — платно, но надёжно: smsc.ru на Т2 (~9.80 ₽/СМС).
4. Проблема обрезки API кластеров Nubes (~21–30 KB) — на уровне сетевого слоя, адресовать девопсам.
## 9. Ключевые технические детали (для повторного захода)
- Монитор whitelist: `HTTP(s) - Слово`, URL `https://whitelist.nodejsk8s.services.ngcloud.ru/v2/db-status`, слово **`Connected`** (не `PG Diagnostic OK` — в HTML между ними тег `<span>`).
- Kuma на кластере уже настроена и работает (монитор UP), осталось заменить канал уведомления.