From 1efdcf71c29a48f74f8e07056dc41e26b31614d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 27 Aug 2026 12:50:26 +0300 Subject: [PATCH] 1 --- docs/kuma-alerts-2026-08-22.md | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 docs/kuma-alerts-2026-08-22.md diff --git a/docs/kuma-alerts-2026-08-22.md b/docs/kuma-alerts-2026-08-22.md new file mode 100644 index 0000000..0c3d677 --- /dev/null +++ b/docs/kuma-alerts-2026-08-22.md @@ -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 между ними тег ``). +- Kuma на кластере уже настроена и работает (монитор UP), осталось заменить канал уведомления.