Next-generation distributed infrastructure monitoring, Docker telemetry & incident control plane.
NodePulse — открытая облачная и self-hosted платформа для мониторинга серверов, контейнеров и инцидентов в реальном времени.
Официальный инстанс: https://pulse.nqai.es-cloud.ru
Подключите любой Linux-сервер к мониторингу одной командой:
curl -sSL https://pulse.nqai.es-cloud.ru/install.sh | shИли с вашим персональным токеном из личного кабинета:
curl -sSL https://pulse.nqai.es-cloud.ru/install.sh?token=YOUR_API_TOKEN | shСкрипт автоматически:
- Загружает бинарник
nodepulse-agentпод архитектуру машины. - Подключается к сокету
/var/run/docker.sockдля телеметрии контейнеров. - Регистрирует и запускает демон systemd
nodepulse-agent.service.
- Zero-Dependency Edge Agent: Минималистичный бинарник на Go, потребляющий <10 МБ RAM и <0.1% CPU.
- Прямая интеграция с Docker: Автоматическое обнаружение контейнеров, их статусов, uptime и падений через Unix Domain Socket без внешних CLI.
- Встроенный Multi-Tenancy: Личный кабинет, регистрация, выдача токенов и строгая изоляция нод между пользователями.
- Incident & Alert Engine: Диспетчер алертов в Telegram и по Webhook при критической нагрузке (RAM > 92%, OOM, падение контейнеров) с возможностью резолва прямо из UI.
- Prometheus Exporter: Нативный эндпоинт
/metricsдля сопряжения с корпоративными системами мониторинга. - Mobile-First UI: Быстрый, реактивный интерфейс без внешних фреймворков со встроенными SVG sparkline-графиками нагрузки.
Разверните собственный центральный сервер Control Plane:
git clone https://github.com/NQAI-Dev/nodepulse.git
cd nodepulse
docker compose up -dСервер будет доступен на порту 8080.
Агент может проверять HTTP(S), TCP-порты, TLS-сертификаты, DNS-ответы и ICMP-доступность на каждом heartbeat. Передайте нужные цели соответствующими флагами, например:
nodepulse-agent \
-node my-host \
-server https://your-control-plane.example/api/v1/ingest \
-token YOUR_API_TOKEN \
-probe-urls https://api.example.com/health \
-probe-tcp db.example.com:5432,redis.example.com:6379 \
-probe-tls api.example.com:443=30d:1.3 \
-probe-dns internal.example.com=10.0. \
-probe-icmp 1.1.1.1=4Списки целей разделяются запятыми. Для TCP можно указать host:port=строка — агент проверит, что первая строка баннера содержит этот текст. TLS-проверка по умолчанию валидирует сертификат и использует окно предупреждения 14 дней; в примере задано 30 дней и минимум TLS 1.3. ICMP требует CAP_NET_RAW либо разрешённого для пользователя диапазона net.ipv4.ping_group_range.
NodePulse использует одноразовые invite-токены для привязки Telegram-чата пользователя к его аккаунту (или для авто-создания нового). Поток закрывает базовый сценарий «оператор знает пользователя лично и хочет выдать ему доступ», не требуя регистрации через Telegram Login Widget или email/пароль.
Мастер-токен нужен только оператору. Используйте скрипт-обёртку:
./scripts/mint-invite.sh --target-uid 7 --expires-hours 1 --username Distemi
# stdout: https://t.me/nodepulse_mon_bot?start=np_inv_c4d8c254a53a16374578f5600a130869
# stderr: [mint-invite] token=np_inv_c4d8c254a53a16374578f5600a130869 expires=2026-09-13 22:55:09 UTCСкрипт сам найдёт мастер-токен (флаг --master-token, переменная NODEPULSE_MASTER_TOKEN, или /etc/nodepulse/nodepulse-server.env), сформирует валидный JSON и распарсит ответ. Без аргументов — пустой инвайт с бессрочным сроком и auto-create пользователя при redeem. Полный список флагов: --help. --dry-run печатает запрос без отправки.
Прямой API (если нужно руками, без скрипта):
curl -sS -X POST https://pulse.nqai.es-cloud.ru/api/v1/invites \
-H "Authorization: Bearer $NODEPULSE_MASTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_user_id":7,"default_username":"Distemi","expires_in_hours":1}'
# → {"token":"np_inv_...","deep_link":"https://t.me/nodepulse_mon_bot?start=np_inv_...","expires_at":1789340109}Скопируйте deep_link и отправьте пользователю в Telegram. По нажатию бот @nodepulse_mon_bot откроет диалог и попросит пользователя нажать /start. Бот распознает токен и перенаправит запрос на сервер.
Бот вызывает POST /api/v1/invites/redeem с {"token":"np_inv_...","chat_id":<telegram_chat_id>}. Сервер атомарно (single UPDATE ... WHERE token=? AND redeemed_at=0) помечает инвайт использованным и возвращает:
200+{ok:true, redeemed_at:..., target_user_id:7}— чат привязан к существующему пользователю #7.200+{ok:true, ..., target_user_id:0}— инвайт сauto_create_user=true, новый пользователь создан.409— инвайт уже использован (другой чат). Атомарность гарантирует, что только один redeem успешен.404— токен не найден.410— истёк (если был заданexpires_in_hours).
Список активных и погашенных инвайтов (токены маскированы до np_inv_<12chars>…):
curl -sS "https://pulse.nqai.es-cloud.ru/api/v1/invites?limit=20" \
-H "Authorization: Bearer $NODEPULSE_MASTER_TOKEN"
# → {"invites":[{"token":"np_inv_c4d8c254…","target_user_id":7,"auto_create_user":false,
# "created_at":"...","expires_at":"...","redeemed_at":"...",
# "redeemed_by_chat_id":111222333}, ...]}Мастер-токен хранится в /etc/nodepulse/nodepulse-server.env (mode 0600, root:root) — единственный путь восстановления без пересборки БД.
MIT License © 2026 NQAI