Скриншоты сняты заново на демо-данных с неделей истории проверок. В docs/features.md — навигация по точкам измерений и новые матрицы блокировок и GeoIP. В мониторе цвет текста предупреждений читается в светлой теме (*-foreground, как в KPI). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 KiB
Возможности VPS Tracker
Гид по всем разделам интерфейса. Скриншоты — на демо-данных (вымышленные хостеры, IP из RFC 5737).
Содержание
- Дашборд
- VPS и карточка сервера
- Проекты
- Схема инфраструктуры
- Хостеры, аккаунты и синхронизация
- Активные тарифы
- Платежи, баланс и продления
- Отчёты и ресурсы
- Статус блокировок
- GeoIP
- Уведомления
- Пространства, пользователи и роли
- Журналы
- Настройки, интеграции и бэкапы
Дашборд
Одна страница, чтобы понять, всё ли в порядке:
- KPI: активные VPS, расход в месяц (в базовой валюте), суммарный баланс у хостеров по API, запас дней — на сколько хватит денег при текущем расходе, сколько VPS истекает в ближайшие 7 дней, число проблем.
- Баннер «Требуется внимание» и кнопка «Внимание» в шапке собирают проблемы инвентаря: истекающая оплата, низкий баланс, давно не синхронизированные аккаунты, расхождение баланса API и журнала.
- Быстрые действия — переходы в частые разделы (можно скрыть в настройках).
- Графики платежей и расходов по месяцам и таблица «Здоровье инвентаря» с CSV-экспортом.
Все суммы в разных валютах пересчитываются в базовую: по курсу хостера (если задан в карточке хостера) или по курсам из URL в настройках (формат ЦБ РФ cbr-xml-daily или { base, rates }).
VPS и карточка сервера
- Таблица с поиском по IP, DNS, проекту, назначению и ОС; фильтры, настраиваемые колонки (вид), сортировка.
- Для каждого сервера: IP/IPv6 и доп. адреса, домены (из CFDM), аккаунт и хостер, страна/город/ДЦ с флагом, CPU/RAM/диск, проект, статус, тариф (дневной/месячный), оплачено до.
- Массовые действия: выделите несколько VPS — сменить статус или проект, удалить.
- Произвольные поля (настраиваются в Настройки → Общие) появляются в таблице и форме.
- Поля, изменённые вручную, запоминаются как «пользовательские» — синхронизация с хостером их не перезаписывает.
Карточка сервера разбита на вкладки: Обзор (сеть и ресурсы), Финансы (тариф, дата оплаты и связанные платежи), Заметки, Синк (что пришло от хостера).
Дата «оплачено до» считается автоматически: из поля хостера, а для дневного тарифа — из баланса аккаунта и суточного списания; прямые платежи за VPS продлевают дату.
Uptime-мониторинг: для VPS с включённым мониторингом раз в N минут (по умолчанию 5) проверяется TCP-доступность SSH-порта. Переходы «упал/поднялся» попадают в уведомления и историю проверок.
Проекты
Группировка серверов по проектам (цвет, заметки). Для каждого — количество VPS, расход в месяц и суммарные ресурсы. Карточка проекта показывает его VPS и быстрые переходы в отчёты.
Проект можно указать прямо в форме VPS: существующий находится без учёта регистра (в том числе кириллица), новый создаётся автоматически.
Схема инфраструктуры
Редактор топологии на React Flow:
- узлы VPS (с флагом, IP, ресурсами, ценой и статусом uptime), фигуры, заметки, группы;
- связи с типом (сеть, зависимость, туннель, VPN, синхронизация, произвольная), направлением, стилем линии, подписью, протоколом и IP концов туннеля;
- сервисы CFDM — отдельные узлы с членством VPS (для балансировки/HA);
- несколько схем во вкладках, блокировка от случайных правок, экспорт в PNG, автосохранение.
Хостеры, аккаунты и синхронизация
Хостер — компания (сайт, базовая валюта, курсы USD/EUR для пересчёта) и тип API с URL биллинга — один на хостера. Аккаунт — ваш логин у хостера: учётные данные API, режим оплаты (ежедневно/ежемесячно), порог низкого баланса. Пароли API в интерфейс не возвращаются — видно только, что они заданы, и логин.
Поддерживаемые API:
| Тип | Что нужно в аккаунте | Что синхронизируется |
|---|---|---|
| BILLmanager 6 | логин и пароль API | VPS, платежи, баланс, тарифы vds.order по всем ДЦ |
| 4VPS | Panel ID и API Key | VPS, баланс, тарифы |
| Маклауд / VDSina (userapi) | API Token | VPS, операции, баланс, тарифы |
| Veesp | email и пароль client area | VPS, счета, баланс, тарифы |
| RuVDS | API-токен из ЛК | VPS, платежи, баланс, тарифы |
Для разных BILLmanager-хостеров есть профили с особенностями их API (FirstByte, IHOR, DataCheap, Serv.host, WaiCore, LandVPS, Cloudrix…) — новый добавляется одним файлом, см. profiles/README.md.
Синхронизация запускается кнопкой на аккаунте («Синхронизировать» / «Синхронизировать все») или по расписанию (Настройки → Синхронизация: интервал синка VPS и платежей — от 15 минут, тарифов — от 60 минут). Повторный запуск во время идущего синка того же аккаунта отклоняется. Каждый запуск пишется в журнал синка.
Активные тарифы
Прайс-листы хостеров, загруженные через API: ресурсы, цена, ДЦ, доступность к заказу. Удобно сравнивать хостеров и замечать новые тарифы — о них приходит уведомление. Если загрузка прайс-листа не удалась, сохранённый список не стирается.
Платежи, баланс и продления
- Платежи — пополнения баланса хостера и прямые оплаты VPS (привязка к аккаунту и/или серверу необязательна), итоги по валютам, импорт из синка без дублей.
- Баланс и списания — журнал движений по балансу (приход/расход), сводка и чистый остаток.
- Продления — календарь ближайших оплат на 7/30/90 дней и стоимость продлений.
Отчёты и ресурсы
- Отчёты: расход в месяц по проектам и хостерам, платежи по типам, фильтр по проекту и периоду, экспорт в CSV.
- Ресурсы: суммарные vCPU/RAM/диск активных VPS и распределение по хостерам.
Статус блокировок
Проверка доступности популярных сервисов с самого VPS (через censorcheck): доступен, заблокирован, отказ (403), редирект, таймаут. Результат автоматически привязывается к VPS по IP.
- Шкала времени: каждая капсула — час с измерениями; высота — число проб, красная/жёлтая часть — доля прогонов с ограничениями. Переход кликом, кнопками ‹ ›, клавишами ← → или пресетами «Сейчас / −1 ч / −6 ч / −24 ч / −7 д» — матрица показывает состояние на выбранный момент.
- Матрица: строка — VPS с флагом страны, колонка — сервис с иконкой бренда; цветной значок статуса и колонка «Доступно X из Y» с полосой. Переключение «По VPS / По сервису», фильтры по статусу, сервису, хостеру, стране; клик открывает детали прогона.
- История — все сохранённые прогоны.
Запуск на сервере — одна команда (скрипт ставит недостающие jq/dig, показывает прогресс и отправляет результат с одноразовым токеном):
curl -fsSL https://vt.example.com/cc | bash # разовая проверка
curl -fsSL https://vt.example.com/cc | bash -s -- --daily # раз в сутки (cron)
curl -fsSL https://vt.example.com/cc | bash -s -- --remove-daily
MikroTik (RouterOS 7.22+) — пробы идут через указанный исходящий IP:
:global "vt-srcIp" "1.2.3.4"; /tool fetch url="https://vt.example.com/cc.rsc" dst-path=vt-cc.rsc; /import file-name=vt-cc.rsc
(?daily=1 — ежедневный scheduler, ?remove=daily — удалить.) Кнопки «Скопировать команду», «Раз в день», «MikroTik» на странице подставляют ваш домен. Нужны CENSORCHECK_INGEST_SECRET и CENSORCHECK_PUBLIC_URL — см. configuration.md.
GeoIP
Какую страну видят у вашего IP GeoIP-базы (MaxMind, RIPE, ipinfo, Cloudflare…) и сервисы (Google, YouTube, Netflix, ChatGPT…), включая CDN, — через ipregion.
- Ячейки матрицы — флаг и ISO-код страны; сервис, который видит другую страну, чем большинство, подсвечен жёлтым.
- Колонка «Страна» — итоговая страна по большинству и «совпадает N из M».
- Та же шкала времени, что у блокировок: жёлтые капсулы — часы с расхождениями.
Запуск так же, как у блокировок: curl -fsSL https://vt.example.com/ic | bash (--daily, --remove-daily), для MikroTik — ic.rsc.
Уведомления
Каналы: Telegram (Chat ID, несколько чатов через запятую, топики форума через Thread ID, свой Bot API URL для прокси) и webhook (POST JSON). Кнопка «Тест» проверяет настройки и подсказывает типичные ошибки (бот не в чате, неверный токен, нет топика).
| Событие | Когда | Повтор |
|---|---|---|
| Истекает оплата | VPS с оплатой в ближайшие 7 дней | не чаще раза в сутки для того же набора |
| Низкий баланс | баланс аккаунта по API ниже порога | раз в сутки |
| Дайджест синка | после планового синка, если что-то изменилось | при новых изменениях |
| Новые тарифы | у хостера появились тарифы | при новом наборе |
| VPS недоступен / восстановлен | переход статуса uptime-проверки | каждый переход |
Каждое событие включается отдельно. Все отправки (и пропуски-дубли) видны в журнале уведомлений. Длинные сообщения обрезаются по строкам под лимит Telegram, имена из API экранируются.
Пространства, пользователи и роли
При включённой авторизации (AUTH_REQUIRED=true) вход идёт через auth-portal (JWT), а данные разделены на пространства:
- у каждого пользователя есть личное пространство; есть общее «Основное» и можно создавать командные;
- роли в пространстве: owner → admin → member → viewer. Viewer только смотрит; member меняет VPS, платежи, хостеров, аккаунты и запускает синк; admin управляет настройками и участниками;
- шаринг VPS: сервер можно показать в другом пространстве (чтение/запись) или передать целиком;
- удалённые пространства попадают в корзину и восстанавливаются;
- права портала (
vps:<раздел>:read|write|admin) ограничивают разделы поверх ролей — см. configuration.md.
Синхронизация, уведомления, uptime и интеграции работают отдельно для каждого пространства.
Журналы
- Журнал синка — каждый запуск по аккаунтам: время, длительность, статус, что изменилось или текст ошибки.
- Журнал изменений — кто, когда и что поменял (создание/изменение/удаление) с diff полей; лента или таблица. При настроенном портале события дублируются в его аудит.
Старые записи журналов удаляются автоматически (уведомления и синк — 90 дней, uptime-проверки — 30 дней).
Настройки, интеграции и бэкапы
- Общие — быстрые действия на дашборде, базовая валюта, URL курсов и автоконвертация, произвольные поля VPS, бэкап/восстановление (JSON или файл БД).
- Синхронизация — автосинк и интервалы.
- Уведомления — Telegram, webhook и выбор событий.
- Интеграции — App Switcher (переключатель приложений в шапке) и CF Domain Manager (CFDM): домены и балансировщики из CFDM подтягиваются каждые 15 минут и показываются у VPS и на схеме.
Работает и на телефоне — меню сворачивается, таблицы прокручиваются: