1
This commit is contained in:
@@ -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), осталось заменить канал уведомления.
|
||||
Reference in New Issue
Block a user