Files
ipwhitelist-app/docs/kuma-alerts-2026-08-22.md
2026-08-27 12:50:26 +03:00

7.2 KiB
Raw Permalink Blame History

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), осталось заменить канал уведомления.